Stripe.js and 3Ds Authorisation

Hi all, @copilot

We’re using Stripe.js specifically the Payment Intent Create and then Payment Intent Capture and for most payments, it works great. However, there are a few instances where the payment is not authorised and requires 3DS to authenticate.

How do we solve that? We’re using Stripe Connect as well for this implementation. It seems to get to this state in Stripe, but we’re never prompted to authenticate (either in mobile banking app or any popups).

Much appreciated any advice


It seems to be that on the first payment it asks for 3D secure. In Spain for example, all the banks have implemented that.

I don’t know if you can bypass that.

Thanks Ryan - how do we handle that with the Stripe.js plugin? I’d have thought if it’s such a common event there would be a handler built in for it?

Hey @help

Don’t know to handle those ones yet. I was thinking maybe if the user does not finish the 3D secure, send him a notification.

If I figure something out I’ll let you know.

I was able to figure it out. We were using Server Side Stripe API calls. Instead we needed to use the Stripe Elements system to run the payment client side, and then set up the trigger to handle the Stripe response so it triggers the Stripe 3D Secure popup.

We can then handle if the user authenticates (and then collect payment) or if they don’t (and throw an error).

All working now!

1 Like

Wow! Thanks for pointing that out.

1 Like

no probs

Hey @help,

You got it right! Stripe needs the cardholder to authorize the payment for 3D Secure which can happen both on-session (e.g. they’re present) or off-session (e.g. subscription payment). In both cases, Stripe offers Stripe Elements and webhooks to handle authorization respectively. As long as you have your PaymentIntent’s Client Secret, Stripe.js can trigger the popup for your customer to securely authorize their payment. :slight_smile:


Thanks - I bought the course and that helped me figure out the difference between server side Stripe actions and the Elements setup


Hi, I am running into the same difficulties setting up 3DS. Can you please give us a little bit more details as to how you managed to do it?
What specific webhook shall I set up to identify when a 3DS request is pending? How do I trigger the Stripe 3DS popup?
Thanks in advance

Hi @copilot ,
I bought your online course “Payments” but the SCA part is rather short and does not provide step-by-step instruction to set this up. Would you have a guide I could follow to make this work?
Webhooks, triggers, actions etc.
I’ve sent you an e-mail yesterday but haven’t heard from you yet.

Hi @tbenita,

The vast majority of users have been able to get going with 3D Secure support rather quickly with the help of the Stripe.js plugin and course. By setting up a PaymentIntent and confirming it using the Stripe Element, you’re already 90% of the way of handling 3D Secure/SCA-compliant payments!

If you’re stuck and need a bit more hands-on help, feel free to hop in Session with us. :slight_smile: