#Kekox123-requires_confirmation-payments
1 messages ยท Page 1 of 1 (latest)
hello, do you have an example of a PaymentIntent that was in requires_confirmation after Invoice failing?
Let me see ๐
This invoice is now pending, but it was failed because of the payment intent requires confirmation
in_1LdqL1KNEK8dUItShK88oGWk
piecing it together, be a bit more
For that Invoice, the first time Stripe's systems tried to pay the recurring Invoice, that failed since there were no mandate's on the ACH Bank Account. So the PaymentIntent stayed in requires_confirmation
It stayed in that status till you manually paid the Invoice via the Dashboard
Checking on something else
Hmmm I see. This one also failed for the same reason and also the payment method is ACH. in_1LdqL3KNEK8dUItS71oMb8Ke
ok so synced with a colleague. The reason you're seeing this is due to what you mentioned above: the customer.default_source vs the customer.invoice_settings.default_payment_method field
basically, the second option means you're doing the newer version of ACH which requires Mandate collection.
In your Customers, you had customer.default_source set which was the legacy way of doing things and that worked. Except you also set the second field in this API request: https://dashboard.stripe.com/logs/req_X7RtrEWv7BZ1fz
that means that any payments collected on this newer ACH integration (using payment_method: ) mean you have to collect Mandate.
So there are two options:
1/ you either stick to the legacy approach of only using default_source
2/ or you run a script to create and confirm SetupIntent for those Bank Accounts that you're using as PaymentMethods and pass the previously collected Mandate Data as explained here: https://stripe.com/docs/payments/ach-debit/migrations#migrate-payment-processor
Oh thats so helpful thank you so much.
If I create a script in my app that go trough all the accounts and set the customer.invoice_settings.default_payment_method property in Stripe.
That would work too?
Or the only way to set this property it's trough the migration you shared above.
that means that any payments collected on this newer ACH integration (using payment_method: ) mean you have to collect Mandate.
```
I don't know if I understood correctly. So the issue is that I'm using the legacy version for ACH payments? or That I'm not using it?.
Or the issue is that I'm using for some customers the legacy version and for other the new one? ๐ค
If I create a script in my app that go trough all the accounts and set the customer.invoice_settings.default_payment_method property in Stripe.
That would work too?
No. This wouldn't work.
I don't know if I understood correctly. So the issue is that I'm using the legacy version for ACH payments? or That I'm not using it?.
Or the issue is that I'm using for some customers the legacy version and for other the new one? ๐ค
It looks like you are using a legacy version of ACH. I'm unsure if you have both legacy and modern integrations for ACH. You would need to check how ACH is accepted through your integration and figure that out for yourself, unfortunately
Well we accept card payments too.
So for card payments, we set customer.invoice_settings.default_payment_method
After a setup_intent
which I think is the "new version"on how to set payment methods
but for ACH we use Plaid for verification, which at the end gives us a btok to register the payment in Stripe.
that's the legacy version I think.
Do you know if with the Plaid integration I can register the ACH payment method as customer.invoice_settings.default_payment_method?
๐ stepping in as two-shoes needed to step away
Catching up
So even if you use Plaid you still have to have a mandate for the bank account to use it with customer.invoice_settings.default_payment_method. You would create that mandate with the SetupIntent. We indicate how to do that here: https://stripe.com/docs/payments/ach-debit/migrations#migrate-payment-processor
To be clear, you would just pass your bank account object into the payment_method param: https://stripe.com/docs/api/setup_intents/create#create_setup_intent-payment_method. Then you would pass mandate_data: https://stripe.com/docs/api/setup_intents/create#create_setup_intent-mandate_data
You don't need to collect the bank account details again here