Implement Stripe mandate and mandate_data for recurring SCA compliance under EU PSD2 for subscription payments

domain: Advanced auth · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. When setting up a recurring payment under PSD2, create a SetupIntent or PaymentIntent with setup_future_usage='off_session' and include mandate_data describing the payment schedule (interval, amount) so the issuer can evaluate the mandate scope
  2. The mandate_data.customer_acceptance object should reflect how the customer accepted the mandate: online (with IP address and user agent) or offline
  3. After the SetupIntent or first PaymentIntent succeeds, Stripe generates a Mandate object linked to the PaymentMethod; retrieve and store the mandate ID
  4. When creating subsequent off-session PaymentIntents, optionally pass the mandate parameter with the stored mandate ID to reference the existing mandate; some issuers and Stripe configurations require this
  5. Display the mandate terms to the cardholder at checkout in a manner compliant with your local PSD2 or SCA implementation; this typically means showing the amount, frequency, and merchant name
  6. Subscribe to mandate.updated webhooks to detect when a mandate becomes inactive or is revoked by the cardholder, and cancel the subscription accordingly

Known gotchas

Related routes

Implement PSD2 trusted beneficiary SCA exemption for a recurring B2B payment via the Stripe API
docs.stripe.com/strong-customer-authentication/exemptions · 6 steps · unrated
Implement a PSD2 payment initiation with a trusted beneficiary SCA exemption for recurring business payments
eba.europa.eu · 6 steps · unrated
Implement SCA step-up via 3DS2 for recurring mandates under PSD2
eba.europa.eu · 6 steps · unrated

Give your agent this knowledge — and 15,600+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans