πŸ”„ Migration guide

Migrate from Stripe to Adyen

Move from Stripe (usage 2.9% + $0.30) to Adyen (interchange++ ~EUR 0.11 + scheme fee). Both are PCI-compliant PSPs, so card vault data can be transferred PCI-to-PCI. Plan 4-10 weeks of engineering: rewrite checkout, re-tokenize cards, rebuild webhook handlers, renegotiate acquiring. Best fit when TPV is high enough that lower per-transaction cost outweighs Stripe's faster DX. Consult official docs for current procedures.

⏱ Estimated effort: 4-10 weeks for a mid-size SaaS; 2-6 months for a marketplace using Connect. Add 2-4 weeks for PCI vault transfer lead time and Adyen underwriting.

From
Stripe
Pricing: usage
Lock-in: medium
To
Adyen
Pricing: hybrid
Lock-in: medium
βœ“ No HWM pricing

Why switch

  • Lower effective rate at scale: interchange++ vs blended 2.9% + $0.30
  • Single global acquirer across EU/US/APAC reduces FX and cross-border fees
  • Unified online + in-store (POS) processing on one platform
  • Direct access to 250+ local payment methods without third-party connectors
  • Stronger enterprise SLAs and dedicated account management
  • Richer raw data (network tokens, settlement detail) for finance and risk teams

Data to export

  • Customer records (Stripe customer IDs, email, metadata)
  • Saved payment methods / cards (pm_ and card_ tokens via PCI export)
  • Active subscriptions and their billing anchors / schedules
  • Recurring mandates (SEPA, ACH, BACS)
  • Open invoices and payment intents in non-terminal states
  • Historical charge / refund / dispute records (for reporting and chargebacks)
  • Webhook endpoint URLs and signing secrets
  • Coupons, promotion codes, and tax rates
  • Connected accounts (if using Stripe Connect)
  • Radar rules and fraud allow/block lists
  • Product / price catalog used in Checkout
  • Payout / bank account configuration

Exporting from Stripe

Request a PCI-compliant card data export from Stripe support β€” they transfer encrypted card vault data directly to Adyen under a tripartite data transfer agreement. For non-card data (customers, subscriptions, invoices, charges), use the Stripe API or Sigma to dump CSV/JSON, plus Dashboard CSV exports for most resources. Build a customer-to-token mapping so migrated cards land on the correct Adyen shopperReference. Allow 2-6 weeks lead time for the PCI handoff. Consult official docs for the latest export procedure.

Importing into Adyen

Adyen ingests the PCI export and re-tokenizes cards into its vault, returning shopperReference / recurringDetailReference values you map back to your customer IDs. Non-card data is loaded via the Adyen Management / Checkout APIs or CSV import for recurring details. Re-implement checkout (Drop-in or Components from @adyen/adyen-web), set up Standard Notification webhooks with HMAC signing, and configure merchant accounts per region. Run both processors in parallel during cutover and validate with test transactions on migrated cards. Consult official docs for current import endpoints.

Concept mapping

How Stripe concepts translate into Adyen.

Stripe Adyen Note
Customer Shopper (shopperReference) String identifier you supply; not auto-generated
PaymentMethod (pm_/card_) Stored payment method (recurringDetailReference) Created via PCI handoff or first-charge tokenization
PaymentIntent / Charge /payments call Single-step; 3DS handled via /payments/details
SetupIntent Zero-auth /payments with storePaymentMethod=true Tokenize without charging
Refund Refund modification Async; result delivered via notification webhook
Webhook endpoint Standard Notification (HMAC-signed) Different signing model β€” verify via HMAC key, not signing secret
Subscription No native object β€” orchestrate with stored tokens Pair with Chargebee/Recurly or roll your own cadence
Stripe Checkout Adyen Drop-in / Hosted Payment Pages Sessions API on Adyen side; different config model
Stripe Elements Adyen Components (@adyen/adyen-web) Per-method components; different DOM API
Radar RevenueProtect Rule engine differs; rules are not portable
Connect (platforms) Adyen for Platforms KYC/onboarding model differs; not a drop-in swap
Stripe Tax External tax engine Limited native tax β€” pair with Avalara/TaxJar

Watch out for

  • ⚠ Adyen webhooks are async β€” code that relied on Stripe's synchronous charge result must be refactored
  • ⚠ No native Subscription object β€” billing logic stays in your app or a billing layer
  • ⚠ HMAC notification signing differs from Stripe's signing-secret model; verification code must be rewritten
  • ⚠ Pricing is interchange++ with negotiated scheme fees β€” true cost only visible after first month's invoice
  • ⚠ Minimum monthly fees and annual contracts apply; not a fit for low-TPV merchants
  • ⚠ Connect β†’ Adyen for Platforms is not a drop-in migration; KYC/onboarding flows must be rebuilt
  • ⚠ Local payment methods (iDEAL, SEPA, etc.) need separate enablement per merchant account and region
  • ⚠ Test environment uses different card numbers and merchant accounts β€” full QA pass required

Draft email to Stripe

Copy-paste-ready data export request.

Subject: Card data migration request: Stripe to Adyen
Hi Stripe team,

We are migrating our payment processing to Adyen and would like to coordinate the offboarding.

Could you please:

1. Initiate a PCI-compliant card data export to Adyen β€” we will share the receiving contact and data transfer agreement separately.
2. Confirm timeline and any required forms.
3. Keep the account active in read-only mode for 90 days after cutover so we can reconcile historical charges, refunds, and disputes.
4. Provide final invoices and confirm the closure date.

We appreciate the partnership and the platform quality β€” this decision is driven by scale economics, not by any service issue.

Thanks,
[Your name]
⚠ AI-generated guide. Verify each step against the official Stripe and Adyen docs before executing. APIs change; this guide refreshes monthly. Spot a mistake? Report it.
← Back to Stripe See Adyen details β†’