Step-by-Step Guide
How to Migrate Stripe Subscriptions — Step-by-Step Guide
A complete walkthrough for transferring active subscriptions between Stripe accounts during a SaaS exit. Follow these nine steps to preserve billing cycles, protect your MRR, and ensure billing continuity — without double-charging customers.
Before You Start
Make sure you have everything ready before beginning your migration.
- Admin access to both Stripe accounts (source and destination)
- 2FA enabled on both Stripe accounts (required for API key creation)
- Knowledge of which subscriptions you want to migrate
- A maintenance window or low-traffic period for the migration
- Both Stripe dashboards open and accessible during the process
- Someone with Stripe admin access available for the duration
The Migration Process
Follow these nine steps to complete your Stripe subscription migration safely and confidently.
Create Your Migration Project
Start by creating a new migration project in MoveMRR. Give it a meaningful name and description so you can easily identify it later.
- Log in to your MoveMRR account
- Click "Create your first migration"
- Enter a project name and optional description
Tip: Include context like the deal date and account names in your description for future reference.
Configure Migration Scope
Define what MoveMRR is allowed to do. Choose which subscriptions to migrate and how old subscriptions should be handled.
- Select which subscriptions to include (active, past-due)
- Choose your deactivation strategy for the source account
- Save your configuration before proceeding
Tip: "Cancel at period end" is the recommended default — it prevents double billing and ensures no access interruption for your customers.
Connect Both Stripe Accounts
Generate restricted API keys for your source (seller) and destination (buyer) Stripe accounts. MoveMRR guides you through creating keys with only the permissions needed.
- Generate a restricted key for the source account
- Generate a restricted key for the destination account
- Validate and store both keys in MoveMRR
Tip: You'll need admin access to both Stripe accounts and 2FA enabled to create restricted keys.
Copy Customers in Stripe
Use Stripe's built-in Customer Data Copy to transfer customer records and payment method references to the destination account. This is a manual step done directly in Stripe.
- Copy the destination account ID from Stripe Settings
- Initiate the customer copy from the source account
- Accept the transfer in the destination account
- Wait for Stripe to finish copying all customers
Tip: This step can take a few minutes depending on the number of customers. Keep both Stripe dashboards open.


Upload the Stripe Mapping CSV
After Stripe completes the customer copy, download the mapping CSV from your destination account and upload it to MoveMRR — unmodified.
- Go to Settings > Compliance > My Documents in the destination account
- Download the "Data Transfer" document (CSV)
- Upload the CSV to MoveMRR exactly as downloaded
Tip: Do not open and re-save the CSV in Excel or Google Sheets — this can change the formatting and cause validation errors.

Set Up Products & Prices
Let MoveMRR auto-create your products and prices in the destination account, or map them manually. This ensures subscriptions reference the correct price IDs.
- Auto-create products in the destination account
- Auto-create prices and let MoveMRR store the mappings
- Manually map any prices that couldn't be auto-created
Tip: If a price was archived in the source account, you may need to create it manually in Stripe and add a manual mapping in MoveMRR.
Preview & Validate
Run a dry-run to catch issues before making any live changes. MoveMRR simulates the entire migration and flags warnings or errors.
- Start the dry-run and review the results
- Fix any flagged issues (missing mappings, permission problems)
- Run the readiness validation to confirm everything is ready
Tip: The dry-run does not make any live changes. Always resolve all warnings before proceeding to execution.
Execute the Migration
With one click, MoveMRR recreates subscriptions in the destination account and safely deactivates the old ones — in controlled batches with full rollback safety.
- Start the live migration and monitor progress
- MoveMRR processes customers in batches for safety
- Old subscriptions are only deactivated after new ones are confirmed
Tip: Keep the page open during execution. Do not manually cancel subscriptions in the source account during the run.
Verify & Go Live
After the migration completes, verify the results in both Stripe accounts. Then update your application to point to the destination account.
- Spot-check subscriptions in the destination account
- Confirm source subscriptions are scheduled for cancellation
- Review the reconciliation summary for any failures
- Update your app's Stripe keys, webhooks, and portal links
Tip: Monitor upcoming renewals for a few days after migration to confirm payments are captured in the new account.
Built for Safety
Every decision in MoveMRR is designed to protect your revenue and your customers.
No Double Billing
Old subscriptions are only deactivated after new ones are confirmed active. Your customers are never charged twice for the same period.
Restricted API Keys Only
MoveMRR never asks for full access. Keys are scoped to exactly the permissions needed for your specific migration.
Idempotent & Safe to Retry
If something goes wrong, you can safely re-run the migration without creating duplicates or corrupting data.
Full Audit Trail
Every action is logged with timestamps. You get a complete record of what was created, deactivated, and mapped — customer by customer.
Quick Reference Checklist
The complete migration in order. Print this or keep it open during your migration.
- 1 Create a migration project in MoveMRR
- 2 Configure scope and deactivation strategy
- 3 Generate and validate restricted API keys for both accounts
- 4 Copy customers from source to destination in Stripe
- 5 Download and upload the Stripe mapping CSV (unmodified)
- 6 Auto-create products and prices, fix any missing mappings
- 7 Run a dry-run and resolve all warnings
- 8 Validate readiness and execute the live migration
- 9 Verify results and update your app's Stripe integration
- ✓ Monitor upcoming renewals for a few days
Best Practices
Recommendations from successful migrations.
Do
Run the dry-run first and fix all warnings before executing the live migration.
Do
Keep someone with Stripe admin access available for the entire migration duration.
Avoid
Don't start a migration on a Friday evening unless you can monitor renewals over the weekend.
Avoid
Don't manually cancel subscriptions in the source account during the migration — let MoveMRR handle it.
Common Questions About Stripe Migration
Quick answers to the most common questions about the migration process.
- How long does a Stripe subscription migration take?
-
The hands-on work in MoveMRR takes about 1–2 hours for most projects. However, Stripe's Customer Data Copy (Step 4) can take 1–3 business days. Plan the full process across a week to account for this waiting period.
- Do I need to be technical to use MoveMRR?
-
No. MoveMRR provides a fully guided interface — no code, no scripts, no Stripe API knowledge required. Each step walks you through exactly what to do, including generating restricted API keys and uploading mapping files.
- Will my customers notice the migration?
-
No. Billing dates, amounts, and payment methods are all preserved. Neither Stripe nor MoveMRR sends any notifications to your customers. From their perspective, nothing changes.
- What happens if the migration fails halfway through?
-
MoveMRR is designed to be idempotent — you can safely re-run the migration without creating duplicate subscriptions or corrupting data. Old subscriptions are only deactivated after new ones are confirmed active, so no revenue is lost.
- Can I migrate subscriptions from Stripe Connect accounts?
-
Yes. MoveMRR supports migrations between Stripe Connect connected accounts, from connected accounts to standalone accounts, and platform-level migrations. You can specify a connected account ID when storing your API keys.
- Do I need to recreate products and prices manually?
-
No. MoveMRR can auto-create products and prices in the destination account, preserving names, descriptions, currency, amounts, intervals, and tiered pricing. Any prices that can't be auto-created can be mapped manually.
Related Resources
Dive deeper into the technical details of Stripe subscription migration.
Technical Migration Guide
Deep-dive into subscription recreation, billing anchors, and price mapping.
Stripe Customer Data Copy
What gets copied, what doesn't, and how to prepare for it.
Restricted Stripe API Keys
How to create secure, scoped API keys for migration.
Prevent Double Billing
Strategies to ensure customers are never charged twice during migration.
What Happens to Subscriptions When You Sell?
Practical overview of handling Stripe subscriptions during a SaaS sale.
SaaS Acquisition Checklist
Complete checklist for billing and subscription handover during an acquisition.
Ready to Migrate?
Start your migration project now and transfer your subscriptions safely.