Migrating payments or subscriptions is a challenging task – I recently faced this in my job.
We had to migrate customers and their subscriptions from one Stripe account to another while ensuring zero downtime for users.
Stripe actually provides a built-in tool to migrate customers and their payment methods between accounts. For that:
You need the “Data Migration” role on both Stripe accounts.
Just remember: being an Admin is not enough — the Data Migration role is separate and must be explicitly granted.
Once you have the right role, go to the Customers tab, click “Copy”, select all customers, and enter the destination account ID.
You can find the account ID easily by searching “Account Details” in the Stripe dashboard.
Once the copy is initiated, the migration process takes 1–2 hours, depending on the number of customers.
Stripe does not allow you to set a specific billing date when creating a subscription. That means if you re-create a subscription as “active,” it charges the customer immediately, which is not ideal.
So here’s what we did:
• We created a trial subscription on the destination Stripe account.
• The trial period was set to match the remaining time until the customer’s next renewal.
• This way, the subscription remains in trial mode and gets charged at the correct next billing date.
• Once that happens, it transitions to active, and the billing cycle remains unchanged.
Finally, we cancelled the original subscription on the sender Stripe account — with no refunds or proration.
I’ve open-sourced the script I used to automate this process.
👉 Check it out here — and if you find it useful, please ⭐ star the repo on GitHub!