stripe-payments3d-secure

Stripe | make two payments with one authentication


I have a scenario where the customer wants to rent an apartment and I want to put a hold on the Card for insurance

Therefore, I make two payment intents, the first is to take the money directly, and the second with capture = manual to collect later if needed

But usually, the second paymentIntent fails because the customer's bank asks for 3D secure so I can't collect the money later

What is the best practice to be able to make the second paymentIntent based on the first 3d secure authentication?


Solution

  • When you create the first PaymentIntent, you should pass the setup_future_usage [0] parameter and set its value off_session and on the second Payment Intent use the off_session[1] parameter and set its value true. This would indicate to the issuing bank that this Payment is happening off-session and might exempt you from 3DS. In the case that the issuing bank still sees (for whatever reason that Stripe doesn’t really control), then you don’t have any other option than to ask the user to come back to your application and do an on-session authentication. You could read more about this here.