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.

01

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.

02

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.

03

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.

Learn about restricted API keys
04

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.

What does Customer Data Copy include?
05

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.

1
06

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.

How billing anchors preserve renewal dates
07

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.

How MoveMRR prevents double billing
08

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.

09

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. 1 Create a migration project in MoveMRR
  2. 2 Configure scope and deactivation strategy
  3. 3 Generate and validate restricted API keys for both accounts
  4. 4 Copy customers from source to destination in Stripe
  5. 5 Download and upload the Stripe mapping CSV (unmodified)
  6. 6 Auto-create products and prices, fix any missing mappings
  7. 7 Run a dry-run and resolve all warnings
  8. 8 Validate readiness and execute the live migration
  9. 9 Verify results and update your app's Stripe integration
  10. 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.

Ready to Migrate?

Start your migration project now and transfer your subscriptions safely.