← All playbooks
Payments migration

Stripe Billing → Lemon Squeezy

Move Stripe products, customers, payment methods, invoices, subscriptions, and coupons into Lemon Squeezy through their two-phase, vendor-run PCI transfer. You send a Stripe account ID and a restricted read-only key. Indian subscription migrations are not supported. Link, SEPA, Bacs, and ACH methods may not copy. Cancel Stripe subscriptions only after Lemon Squeezy recreates them.

Typical timeline20–45 business days40–90 hours plus vendor wait active work
Statusneeds review
Source profileStripe Billing documentation reviewed 2026-10-30
Destination profileLemon Squeezy documentation reviewed 2026-10-30
Documentation date
Review window
Evidence4 sources
This route needs review.Use it as a planning baseline, then verify the dated sources and test with representative data before production.
Before you migrate

Should you make this move?

Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.

Current platform

Stripe Billing

Reasons to stay
  • Flexible APIs, pricing models, and ecosystem integrations support sophisticated billing
  • Checkout, subscriptions, tax, and customer records are consolidated
Reasons to leave
  • The seller retains tax, compliance, fraud, and substantial implementation responsibility
  • Billing state and compliance responsibilities make switching unusually sensitive
New platform

Lemon Squeezy

What gets better
  • Merchant-of-record handling simplifies global tax and digital-product sales
  • Checkout, subscriptions, tax, and customer records are consolidated
What gets worse
  • Platform eligibility, payout control, and customization are more constrained than direct billing
  • Billing state and compliance responsibilities make switching unusually sensitive
Best of the move

Lemon Squeezy: Merchant-of-record handling simplifies global tax and digital-product sales. This removes a major source-side concern: The seller retains tax, compliance, fraud, and substantial implementation responsibility.

Worst of the move

What you lose: Flexible APIs, pricing models, and ecosystem integrations support sophisticated billing. What you inherit: Platform eligibility, payout control, and customization are more constrained than direct billing.

Jump to a section
01At a glance

Know the shape of the move.

Transfer outcome12 features audited
Transfer outcome distributionClean transfer: 0, Partial transfer: 4, Manual rebuild: 5, Not transferred: 3.
Clean0
Partial4
Manual5
Lost3
Mapping route8 of 9 fields have a destination path

This timeline assumes

  • Up to 100,000 customers and 50,000 subscriptions that Lemon Squeezy agrees to migrate
  • Lemon Squeezy, not your app, runs the PCI customer and payment-method transfer.
  • Finance and legal accept merchant-of-record invoices, tax, and customer notices.
  • The store is created and activated on Lemon Squeezy before phase 1.
  • You agree an import date so phase 2 and customer comms happen together.
02What transfers

What survives the move.

“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.

ItemOutcomeImpactWhat happensMitigation
Products, prices, customers, payment methods, invoices, subscriptions, and couponspartialcriticalLemon Squeezy lists those Stripe objects as supported. They map products and prices to products and variants, invoices to orders, coupons to discounts.Ask Lemon Squeezy for a written object list for your account before you send the key.
Indian subscription accountslostcriticalLemon Squeezy says regulatory rules block subscription migration for Indian-based Stripe accounts. One-time purchases can still import.Confirm account country first. Plan a re-subscribe path if subscriptions cannot move.
Link, SEPA, Bacs, and ACH payment methodslostcriticalLemon Squeezy quotes Stripe: those methods stored as payment method objects do not copy between accounts today.Count those methods. Plan reauthorization for those customers.
Product description, media, files, and variantsmanualhighAfter phase 1 you must add description, media, files, and variants by hand. Those fields are not in the Stripe import.Add them and test checkout before phase 2.
Phase 2 import datemanualcriticalPhase 2 starts new sales on Lemon Squeezy, imports recent Stripe data, recreates subscriptions, then you cancel Stripe subscriptions so people are not billed twice.Agree the import date in writing. Do not let either side charge until that sequence is done.
Merchant of record, tax, and invoicesmanualcriticalLemon Squeezy becomes the seller on the receipt. Tax, invoice legal entity, and customer terms change.Get legal and finance sign-off. Update terms before the first live charge.
Stripe IDs, webhooks, and entitlementslostcriticalcus_, sub_, and price IDs do not remain the app's source of truth. Lemon Squeezy events and IDs start fresh.Build an ID map. Make webhooks idempotent before phase 2.
Restricted API keymanualcriticalYou create a read-only restricted key with core and billing read scopes Lemon Squeezy lists, then delete it after the move.Send the key only through the channel they specify. Delete it when they finish.
Customer portal and invoices historypartialhighCustomers may need a new Lemon Squeezy order-access path. Stripe hosted invoice URLs stay in Stripe.Tell customers how to reach past orders on both sides.
Trials, schedules, and grandfathered pricespartialhighComplex Stripe schedules and custom prices may not recreate with the same next-bill date.Pilot every lifecycle state. Reconcile the first renewal.
Refunds, disputes, and credit notespartialhighHistorical Stripe disputes stay in Stripe. New refunds go through Lemon Squeezy.Keep Stripe open for in-flight disputes.
App entitlementsmanualcriticalYour app must grant access from Lemon Squeezy events, not leftover Stripe status.Ship and test the new entitlement path before phase 2.
03Field and feature mapping

Where each thing goes.

SourceDestinationMethodNotes
Stripe product and priceLemon Squeezy product and varianttransformAdd description, media, files, and variants after phase 1.
Stripe customerLemon Squeezy customerautomaticKeep the Stripe customer id in your map.
Card payment methodTransferred method if Stripe copies ittransformLink, SEPA, Bacs, and ACH may not move.
Stripe invoiceLemon Squeezy ordertransformLegal entity on the PDF changes.
Stripe subscriptionRecreated Lemon Squeezy subscriptiontransformCancel the Stripe copy only after recreate.
Stripe couponLemon Squeezy discounttransformCheck duration and redemption limits.
Stripe webhook and app entitlementLemon Squeezy webhook and new IDsmanualDo not read Stripe status after cutover.
Stripe account ID acct_Lemon Squeezy migration requestmanualRequired with the restricted key.
Indian Stripe subscriptionsNo destinationunsupportedOne-time purchases only for those accounts.
04Before you begin

Make the move recoverable.

Backup procedure

Create the source-of-truth backup

Keep a Stripe financial snapshot and a written Lemon Squeezy import date before anyone charges on the new store.

  1. Export customers, subscriptions, prices, coupons, and invoices from Stripe.
  2. Count payment-method types, including Link, SEPA, Bacs, and ACH.
  3. Record the Stripe account ID and country.
  4. Activate the Lemon Squeezy store.
  5. Store exports with checksums and the agreed import date.

Proof to capture: Dated Stripe exports, method counts, account country, and a signed import date.

Transformation · Lemon Squeezy migration team plus a restricted Stripe key

Phase 1 data migration

Let Lemon Squeezy copy supported Stripe objects.

  1. Create the read-only key with the scopes they list.
  2. Send the acct_ id and the key through their channel.
  3. Add product media, files, and variants when they finish.
  4. Test checkout. Do not announce go-live yet.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

Transformation · Agreed import date plus Stripe subscription cancel

Phase 2 go-live

Switch new sales and recreate subscriptions on one date.

  1. Point new checkout at Lemon Squeezy.
  2. Let them import the Stripe delta.
  3. Confirm recreated subscriptions and first renewals.
  4. Cancel the Stripe subscriptions they replaced.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

05Handle with care

The things most likely to hurt.

These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.

Cutover

Both sides charge

criticalpossible likelihood

Stripe subscriptions stay active after Lemon Squeezy recreates them.

Consequence
Customers are billed twice.
Mitigation
Cancel Stripe only after the recreate report. Watch the first cycle.

Stop if: Any mapped subscription is active in both systems.

Cutover

Vendor starts charging before the agreed date

criticalpossible likelihood

Lemon Squeezy emails that everyone is migrated and charging.

Consequence
Customers see a new merchant with no notice.
Mitigation
Put the import date in writing. Pause if they move early.

Stop if: Charges start without the signed date and customer notice.

Payments

ACH or SEPA customers cannot renew

criticalpossible likelihood

Those methods did not copy.

Consequence
Renewals fail.
Mitigation
Reauthorize those customers before the next bill.

Stop if: A material cohort has no transferable method.

App

App still trusts Stripe subscription status

criticalpossible likelihood

Entitlements read Stripe after phase 2.

Consequence
Paid users lose access or keep access after cancel.
Mitigation
Switch the entitlement source first.

Stop if: Production still reads Stripe for access.

06Precise timeline

Do the work in this order.

Estimate forUp to 100,000 customers and 50,000 subscriptions, vendor-run PCI transfer
Total elapsed20–45 business days
Active work40–90 hours plus vendor wait
BufferAdd time for Indian accounts, non-card methods, or a large entitlement rewrite.
01
Days 1–5Inventory Stripe and legal change3–5 days
02
Days 5–8Export Stripe and open the store2–3 days
03
Days 8–25Vendor copy and catalog repair10–20 days
04
Agreed import datePhase 2 switch1–3 days
05
Days after importWatch the first renewal cycle7–20 days
  1. Days 1–5 · inventory

    Inventory Stripe and legal change

    8–16 hours active3–5 days elapsedLegal and finance waiting
    • Count objects and method types.
    • Confirm account country.
    • Approve merchant-of-record notices.
    Stop / go checkpoint

    Request the migration?

    Go when: Country, methods, and legal notices are signed.

    Stop when: Indian subscriptions are in scope with no re-subscribe plan.

  2. Days 5–8 · backup

    Export Stripe and open the store

    4–8 hours active2–3 days elapsedStore activation waiting
    • Export Stripe objects.
    • Activate Lemon Squeezy.
    • Create the restricted key.

    Depends on: inventory

    Stop / go checkpoint

    Send the key?

    Go when: Exports hash and the store is active.

    Stop when: The key scopes are wrong.

  3. Days 8–25 · phase1

    Vendor copy and catalog repair

    10–24 hours active10–20 days elapsedLemon Squeezy PCI transfer waiting
    • Send acct_ and the key.
    • Add media, files, and variants.
    • Test checkout. Wire webhooks.

    Depends on: backup

    Stop / go checkpoint

    Agree an import date?

    Go when: Catalog, webhooks, and checkout pass on a test purchase.

    Stop when: Supported objects are missing or entitlements still read Stripe.

  4. Agreed import date · cutover

    Phase 2 switch

    8–16 hours active1–3 days elapsedVendor recreate waiting
    • Start new sales on Lemon Squeezy.
    • Import the Stripe delta.
    • Cancel replaced Stripe subscriptions.

    Depends on: phase1

    Stop / go checkpoint

    Lemon Squeezy owns recurring revenue?

    Go when: No dual-active subscription and entitlements match.

    Stop when: Any customer is charged twice.

  5. Days after import · observe

    Watch the first renewal cycle

    10–20 hours active7–20 days elapsedFirst renewals waiting
    • Watch failed payments and entitlements.
    • Keep Stripe for disputes.
    • Delete the restricted key.

    Depends on: cutover

    Stop / go checkpoint

    Close rollback?

    Go when: The first cycle completes without a trigger.

    Stop when: Renewals or access fail.

07The point of change

Cut over with a way back.

Go live

Cutover

Make Lemon Squeezy the only place that charges for the moved catalog.

Recommended window: The agreed import date, during support hours, with finance and engineering available.

  1. Confirm the written import date and customer notice.
  2. Point new checkout at Lemon Squeezy.
  3. Let Lemon Squeezy import the Stripe delta and recreate subscriptions.
  4. Cancel the Stripe subscriptions they replaced.
  5. Reconcile active counts and a renewal sample.

Proof to capture: One active subscription per customer. Entitlements read Lemon Squeezy. Stripe is not charging those items.

Return to safety

Rollback

Return charging to Stripe without a second merchant taking money.

Deadline: Before you cancel the Stripe account or delete the exports.

  1. Pause Lemon Squeezy checkout and subscription renewals.
  2. Restore Stripe checkout and do not leave both charging.
  3. Export Lemon Squeezy-era orders.
  4. Keep Stripe as the dispute venue for older charges.
  5. Tell customers which merchant will appear next.

Proof to capture: Stripe is the only charger for the catalog. Lemon Squeezy is paused.

Rollback immediately when
  • Dual-active subscriptions
  • Charges on an unsigned import date
  • A material non-card cohort cannot renew
  • Entitlements still read the wrong provider
  • A blocking check cannot be fixed before the next renewal batch
08Verification report

Prove the migration worked.

Every blocking check must pass. Capture the evidence before cleanup begins.

0%
Interactive report preview0 / 8 checks passed
PassIDCheckMethodExpected resultEvidence
V-01BlockingProduct and price mapCompare Stripe products with Lemon Squeezy products and variants.Every live price has an approved variant.Price ledger.
V-02BlockingCustomer countCompare Stripe customers with Lemon Squeezy customers.Counts match or variances are signed.Customer sheet.
V-03BlockingMethod coverageCount Link, SEPA, Bacs, ACH, and cards on both sides.Non-copying methods have a reauth plan.Method report.
V-04BlockingNo dual chargeJoin active Stripe and Lemon Squeezy subscriptions by customer.No overlapping active item.Join report.
V-05BlockingEntitlementsTest new purchase, renewal, cancel, and past-due.Access follows Lemon Squeezy events.Webhook and access log.
V-06BlockingMerchant on the receiptComplete a live test purchase.The receipt matches the approved merchant-of-record notice.Test receipt.
V-07BlockingRestricted key removedInspect Stripe API keys after phase 2.The migration key is deleted.Key list.
V-08BlockingFirst cycleWatch the first renewal batch.Approved success and failure rates. No surprise merchant change mid-cycle without notice.Renewal report.
09Post-migration cleanup

Remove the scaffolding safely.

Safe after: One full renewal cycle, no dual-active subscriptions, and a signed report.

  1. Archive Stripe exports, the ID map, and receipts.
  2. Delete the restricted Stripe key.
  3. Keep Stripe open for disputes and the rollback window.
  4. Cancel unused Stripe billing only after finance sign-off.
  5. Update customer billing FAQ and terms.
  6. Schedule the next Lemon Squeezy catalog and webhook review.
10Experiences from the field

When the plan met reality.

First-hand accounts are preferred. Vendor case studies are labeled, and every note below is an editorial paraphrase—follow the link for the full context.

First-person accountMiha Rekar · Visualizer

Lemon Squeezy Migration2025

Miha Rekar moved Visualizer Premium from Stripe to Lemon Squeezy in February 2025 so a merchant of record could handle tax. After nine days of silence, Lemon Squeezy emailed at 8 PM to say they had migrated everyone and started charging. Not all data arrived correctly. After three days of debugging with Lemon Squeezy's lead developer, he reported the issues fixed on 5 February. Bank statements now show Lemon Squeezy or LEMSQZY* STORE. He asked users to report double charges or lost Premium status.

What they recommend
  • Treat the vendor-run Stripe transfer as a date they pick, and have support ready the hour they flip charges.
  • Watch for missing entitlements and double charges until you reconcile every paid customer against Stripe.
Worth noticing
  • A merchant-of-record move can start charging before your app and their data agree.
  • Statement descriptors change to Lemon Squeezy, so tell customers what they will see on the card.
Sources and evidence

Verify against the primary material.

Platform behavior changes. Check these sources and the review dates above before executing a production migration.

  1. Lemon Squeezy: migrating from StripeAccessed 2026-10-30
  2. Stripe: Billing customersAccessed 2026-10-30
  3. Stripe: import subscriptions toolAccessed 2026-10-30
  4. Lemon Squeezy: importing subscriptionsAccessed 2026-10-30