#jzills-PI-error

1 messages · Page 1 of 1 (latest)

charred bane
#

Hi there, do you have a request ID for that error that you can share?

heavy jewel
#

Hi - yes let me fire off another request and I'll send it to you.

#

req_ECfImHk2IPJoeM

charred bane
#

Looking!

heavy jewel
#

Thank you

charred bane
heavy jewel
#

I'm using Plaid though to create BankAccounts?

charred bane
#

When you confirm the PI you pass mandate_data

heavy jewel
#

Aren't they pre verified?

#

The test one in Stripe Dashboard says it's verified already.

charred bane
#

Yes it is verified, that is separate from the mandate. You still need to indicate that the customer authorized you to charge the bank account which is what the mandate represents.

heavy jewel
#

I need to pass this then?

charred bane
#

Yep

heavy jewel
#

Got it thank you!

#

One more question

#

This works for card payments without the mandate

#

If I pass the mandate_data for both "card" and "us_bank_account" that should be fine?

charred bane
#

I don't think we error if you pass it for card but I've never done that since we don't require a mandate for cards.

#

I would not recommend passing it personally.

heavy jewel
#

Ok because we are surfacing a drop down for clients to select their existing payment methods.

#

The drop down contains both cards and bank accounts

#

I'll do as you say though and only mandate during bank accounts

charred bane
#

Yeah you are going to have to pass the paymentmethod back to your server so just check the type

heavy jewel
#

If I'm reading the doc correct - only the Type is required?

#

For the mandate

charred bane
#

Yes

#

Unless you use type: online

#

But for offline you only have to pass type

heavy jewel
#

Online just means the client is actively choosing to pay?

#

What is required for type = online then?

charred bane
#

No, online means the client is online when accepting the mandate

#

offline means they accepted it in the past and you are recording that they did indeed accept it in the past

heavy jewel
#

Ok so this is more of a housekeeping field than anything?

#

We have clients authenticated into our portal, if they are paying through our portal what do you suggest?

#

In terms of using this mandate.

charred bane
#

It isn't "housekeeping"... NACHA requires you to indicate the customer has authorized you to charge their account. Which is what the mandate represents.

#

If they are online when you collect their bank details and create the first charge then you should use online and collect the relevant details for the mandate

#

If you collected mandate acceptance in the past and they aren't online when you are inputting their bank details then you should use offline

heavy jewel
#

Ok - then I assume when a customer is selecting an already stored payment method that would still constitude online?

charred bane
#

You only have to collect the mandate once.

#

From above doc:
Authorization is only required the first time you use a BankAccount object with the PaymentIntents API. After that, you can use the BankAccount object as a PaymentMethod to accept future payments.

#

So that means it depends

#

Did you establish a mandate when you first stored it?

#

Or they already were stored and you are migrating now

#

And this is first payment

heavy jewel
#

We're not in production yet so the flow is fluid. Where I'm at is connecting a BA through Plaid, so I exchange the Plaid token and create the Stripe BA.

#

At the time I create the Stripe BA can I also just include the mandate there?

charred bane
#

Gotcha... is there a reason you are using Plaid instead of the new ACH flow via Stripe if you are still in development?

heavy jewel
#

Last I checked the reasoning was for the easier integration with ACH. The business likes the UI and the ease of logging in with Plaid.

#

Automatically verified as well through Plaid.

#

Has that changed in Stripe to now support automatic verification without microdeposits?

charred bane
#

The current flow you are pursuing is okay... it uses a mix of new and old.

#

It will work

#

But in my opinion the new flow is cleaner.

heavy jewel
#

Ok I'll review it and let my boss know thanks

#

Another question - I know you said the mandate is only required once per payment. Is there a problem with passing a mandate everytime to confirming a paymentIntent?

charred bane
#

I don't think that is an issue except it will create a new mandate each time you pass mandate_data.

heavy jewel
#

Ok thanks for all your help!

charred bane
#

Sure!

heavy jewel
#

Last thing 🙂

#

Just to make sure I have my head around this correctly

#

Using our current flow with Plaid, I can create the BankAccount then at the same time create a Mandate for that BA PM.

#

Now, when using PaymentIntent.Confirm for that BA I won't have to pass anything to the MandateData field, correct?

#

As it would have already been mandated.

charred bane
#

If it already has a mandate created then that's correct you shouldn't need to pass mandate_data again

heavy jewel
#

Perfect thanks for your help. Have a great weekend!

charred bane
#

You too!

heavy jewel
#

Is the only place to update a mandate through the Source API (other than confirming PaymentIntent)?

#

Doesn't look like the MandateService in .NET sdk exposes create operations.

copper tulip
#

Bismark had to step out but I will be able to check in to this in a minute

heavy jewel
#

Great thanks

copper tulip
#

Just catching up on this, what about the mandate are you looking to update?

heavy jewel
#

I'm creating a stripe BA through Plaid

#

After I create the BA I want to immediately create the mandate.

#

Looks like I can do it through Sources API and update the PM with a specified Mandate, correct?

copper tulip
#

Still trying to figure this one out. I thought that Plaid took care of the mandate. So that error at the top of this thread was from trying to use a bank account that you got from Plaid?

heavy jewel
#

Yes correct

#

I used Plaid, exchanged the Plaid token for a Stripe BankAccount token, called CreateAsync on the BankAccount to create the Stripe BankAccount.

#

Then when I go to use that PM on a PI, it gives that error about missing mandate.

#

The previous person helping me said Plaid only verifies and doesn't apply the mandate I guess?

copper tulip
#

Gotcha. I am still a bit unclear how this flow should go and am reaching out to my colleagues for help

heavy jewel
#

Ok thank you

copper tulip
heavy jewel
#

Do I need a new MandateData for each PaymentIntent?

copper tulip
#

No, it should only be required on the first one as far as I understand it.

#

We are talking about the behavior discussed in this quote, right?
Authorization is only required the first time you use a BankAccount object with the PaymentIntents API. After that, you can use the BankAccount object as a PaymentMethod to accept future payments.

heavy jewel
#

Doesn't look like I can fetch a Mandate by PaymentMethodId?

#

How can I know if I've already created a Mandate for a particular PM?