Migration workflow
The six stages of a Stripe subscription migration, gate by gate, from the source scan to the verified cancel step.
A migration project runs in six stages. Each stage waits behind a gate that must pass first. You see what will happen before anything touches a customer's card.
1. Connect
The source owner creates a read-only restricted key from the one-click link and pastes it into the project. The destination owner adds a write key in stage 5. Keys are encrypted before they are stored, scoped to one project, and deleted 30 days after the project completes.
The source read-only key includes Invoices read. Invoices read is read only. After each renewal, SubPorter uses it to confirm that the customer was charged once.
2. Scan
SubPorter reads the source account in one pass:
- Every active subscription, with the products, prices, and billing meters it depends on.
- A sort of the subscriptions: the ones that move on their own, and the ones that need a decision.
- A preview of the products, prices, and meters to recreate in the destination account.
Nothing is written. The scan is free.
3. Decide
The source owner decides each flagged subscription: move now, or leave for now. The customer list for Stripe's copy is built from these decisions, so nothing moves without a person's approval.
One flag to know: two customer records with the same email, each with an active subscription. SubPorter matches copied customers by email when Stripe assigns new IDs, so it cannot tell these two apart. Move one, leave the other.
4. Pay
The one-time fee is charged here, after you have seen what will move and decided every flagged subscription. The first write to the destination account comes after payment.
5. Move
Connect the destination account. The destination owner creates a write key from the one-click link. SubPorter recreates the products, prices, and billing meters with new IDs. Each new object keeps its source ID in metadata.
Copy customers with Stripe. SubPorter generates the customer list. The source owner uploads it with Copy to account in the Stripe Dashboard and enters the destination account ID. The destination owner accepts the request. Stripe copies the customers and their saved payment methods. Card data never passes through SubPorter.
Verify. SubPorter finds every copied customer in the destination account and maps it to its source customer. It sets the default payment method where the copy dropped it, and previews tax. A missing or ambiguous customer stops the next stage until it is fixed.
6. Schedule
Create and verify schedules. SubPorter creates one subscription schedule per moving subscription, in small batches, each starting on the subscription's renewal date. The source account keeps billing during this step. Then SubPorter reads every schedule back and checks the customer, start date, prices, quantities, collection method, tax, and status. A mismatch stops the cancel step.
Add the cancellation key. The source owner creates a second, narrow restricted key that can only set subscriptions to cancel at period end. It also includes Invoices read. SubPorter checks that it belongs to the same source account.
Cancel at period end. After every schedule is verified, and after an explicit confirmation, SubPorter sets each moved source subscription to cancel at period end. Current periods finish as paid. This is the only write SubPorter makes to the source account, and it cannot be undone.
Renewal invoice. After the migration is complete, the schedule table gains a Renewal invoice column. When you open the project after a renewal, SubPorter reads the invoices from that renewal date in both accounts and shows whether the customer was charged once. It reads with the stored keys until they are deleted, 30 days after the project completes. If the source key cannot read invoices, the column is not shown.
Migration records
The project ends with the migration records: what moved, what stayed by decision, what was verified, and when each source subscription ends. Both owners can download them.