Stripe Subscription Migration: How to Transfer Subscriptions Between Stripe Accounts

Last updated:

When you sell a SaaS business, transferring active subscriptions from your Stripe account to the buyer’s is one of the most critical — and least documented — steps of the handover.

This guide explains the full process, the tools Stripe provides, their limitations, and how MoveMRR fills the gap.

The Core Problem

Stripe subscriptions are bound to a single Stripe account. When a SaaS business changes ownership, the buyer typically needs the recurring revenue to flow into their own Stripe account for legal, tax, and operational reasons.

Stripe does not offer a one-click solution to move subscriptions between accounts. Their Customer Data Copy feature transfers customer records and payment methods, but subscriptions cannot be copied.

This leaves sellers with a choice:

  • Manually recreate each subscription in the new account (slow, error-prone)
  • Use a tool like MoveMRR to automate the process (safe, auditable)

What Stripe’s Customer Data Copy Does

Stripe’s Customer Data Copy is a support-initiated process that:

  • Copies customer objects (name, email, metadata)
  • Migrates saved payment methods (cards, bank accounts)
  • Creates a mapping CSV linking old customer IDs to new ones

It does not copy:

  • Subscriptions
  • Invoices
  • Prices or Products
  • Subscription metadata

This means the payment methods exist in the new account, but there’s nothing charging them.

Required Inputs for a Subscription Migration

To migrate subscriptions with MoveMRR, you need:

  1. Mapping CSV from Stripe: After Customer Data Copy, Stripe provides a CSV that maps old customer IDs to new customer IDs. MoveMRR uses this to link subscriptions to the correct customers.

  2. Restricted API keys for both accounts: You’ll create keys with minimal permissions:

    • Source account: Read access to subscriptions and customers
    • Destination account: Write access to subscriptions and customers
  3. Optional price mapping: If your products and prices exist in both accounts, you can map old Price IDs to new Price IDs. MoveMRR applies this during recreation.

How Subscription Recreation Works

MoveMRR reads each active subscription from the source account and creates an equivalent subscription in the destination account. Key behaviors:

  • Billing anchors are preserved: The new subscription uses the same billing cycle anchor as the original, maintaining the customer’s renewal date.
  • Proration is handled correctly: MoveMRR uses Stripe’s billing_cycle_anchor and proration_behavior parameters to avoid unexpected charges.
  • Metadata is transferred: Any custom metadata on the subscription is copied to the new subscription.
  • Original subscriptions are deactivated only after confirmation: The old subscription is canceled (without refund) only after the new subscription is confirmed active.

Common Pitfalls and How to Avoid Them

Double Billing

If the old subscription is not deactivated before the new one bills, the customer gets charged twice. MoveMRR prevents this by:

  • Confirming the new subscription is active before touching the old one
  • Using atomic cancellation (no partial states)
  • Logging every action for audit

Incorrect Billing Dates

If the billing anchor isn’t set correctly, customers may be charged immediately upon recreation (prorated or full). MoveMRR explicitly sets the anchor to match the original subscription.

Missing Price Mappings

If you have different Price IDs in the destination account, subscriptions may fail to create. MoveMRR supports optional price mapping and validates mappings before execution.

API Permission Errors

If the restricted keys don’t have sufficient permissions, the migration will fail partway. MoveMRR validates key permissions upfront.

Step-by-Step Migration Process

  1. Request Customer Data Copy from Stripe: Contact Stripe support to initiate the copy. This takes 1-3 business days.

  2. Create restricted API keys: In both Stripe accounts, create restricted keys with only the permissions MoveMRR requires.

  3. Upload the mapping CSV: Once you receive the CSV from Stripe, upload it to MoveMRR.

  4. Optional: Configure price mapping: If your Price IDs differ, configure the mapping in MoveMRR.

  5. Run validation: MoveMRR checks all mappings, permissions, and subscription states before execution.

  6. Execute the migration: With one click, MoveMRR recreates all subscriptions and deactivates the originals.

  7. Review the audit log: Every action is logged with timestamps for accountability.

When to Use MoveMRR

MoveMRR is designed for SaaS exits where:

  • You have active subscriptions that must transfer to the buyer
  • You need to preserve billing dates and avoid double billing
  • You want a complete audit trail for due diligence
  • You don’t have engineering resources to build a custom migration