Stripe 3DS Implementation
3DS adds card authentication for PSD2 SCA. Stripe can request 3DS authentication through supported Payment Intent flows when required by SCA, issuer rules, or Radar. Enable 3D Secure in Chargebee, and complete the SCA checklist before accepting 3DS payments.
For gateway overview and connection steps, see Stripe and Stripe Prerequisites & Configuration.
Before you start
- Confirm 3D Secure is enabled in Chargebee so the integration can handle authentication requests from Stripe.
- Complete the SCA checklist in Chargebee so you can recover failed payments without compromising revenue.
- For INR sales via Stripe India, 3DS is mandatory. See Stripe India.
1) New cards with immediate payment
These flows cover 3DS payments that involve a new card and an immediate charge.
a) Stripe.js + Chargebee APIs
- Complete the 3DS flow for the card using Stripe's Payment Intents API.
- Pass the PaymentIntent
idto Chargebee APIs in thepayment_intentgateway-token field, then perform the necessary operation.
See Stripe.js 3DS setup and the tutorial for completing a 3DS payment for a new card using Stripe.js.
b) Chargebee hosted pages + Stripe gateway
Chargebee's hosted pages (in-app checkout, portal) tokenize card details and perform 3DS verification when needed.
See Chargebee Hosted Pages and complete 3DS configuration in your Chargebee site.
c) Chargebee APIs + Stripe gateway
Sending raw card details to Chargebee is not recommended for 3DS. Gateway JS or Chargebee.js sends customer background data and can attempt a frictionless 3DS flow, which is typically not possible when you send raw card details directly to Chargebee.
Prefer gateway JS + Chargebee API for better approval rates. See API-based integration. For more information, contact Support.
d) Chargebee.js + Stripe gateway
Chargebee.js tokenizes card details and performs 3DS verification when necessary. See Gateway JS and Chargebee APIs and integrate Chargebee.js in your checkout.
2) New cards without immediate payment
These flows cover 3DS authorization for a new card without an immediate charge.
a) Stripe.js + Chargebee APIs
Stripe's Setup Intent API does not accept amount as a parameter and is used for 3DS verification when the card is not charged immediately. The stored card can be charged later.
- Complete the 3DS flow using
SetupIntent. - Pass the SetupIntent
idto Chargebee APIs in thepayment_intentgateway-token field, then perform the necessary operation.
See minimum-amount 3DS authorization (FAQ).
b) Chargebee hosted pages + Stripe gateway
- Hosted pages (in-app checkout, portal) tokenize the card and perform 3DS authorization for a minimum amount.
- The authorized amount is automatically released when the 3DS flow completes.
Complete configuring 3DS in your Chargebee site. See also minimum-amount 3DS authorization (FAQ).
c) Chargebee.js + Stripe gateway
- Chargebee.js tokenizes the card and performs 3DS authorization for a minimum amount.
- The authorized amount is automatically released when the 3DS flow completes.
Integrate Chargebee.js in your checkout. See also minimum-amount 3DS authorization (FAQ).
3) Stored cards
These flows cover 3DS payments using a stored card.
a) Stripe.js + Chargebee APIs
- Follow Stripe's steps to fetch the card and charge it via a 3DS flow.
- Pass the PaymentIntent
idto Chargebee APIs in thepayment_intentgateway-token field.
b) Chargebee hosted pages + Stripe gateway
Chargebee uses the card's Reference ID to retrieve the payment method and charge the customer.
c) Chargebee.js + Stripe gateway
- Retrieve the card's Reference ID and pass it to Chargebee's Payment Intent API.
- Use the Chargebee.js card-payment handler as a callback.
See Chargebee.js documentation on charging a stored card via 3DS.
For how stored and vaulted cards are treated under SCA, see the PSD2/SCA FAQs.
Handling 3DS fallback
Fallback applies when 3DS verification fails for stored cards because the customer is offline. The invoice enters dunning, and the customer is followed up based on your reminder email configuration. Enable 3DS and dunning email configuration in Chargebee to handle fallback.
Related content
Was this article helpful?