Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
Billing
    Overview
    About the Billing APIs
    Subscriptions
      Overview
      Quickstart
      Use cases
      Build your integration
      Subscription features
        Subscription invoices
        Subscription schedules
        Subscription pricing
        Recurring pricing models
        Embed a pricing table
        Start subscriptions
        Set quantities
        Set billing cycles
        Backdate subscriptions
        Subscribe to multiple items
        Set trial periods
        Apply coupons
        Migrate subscriptions to Stripe
          Migrate subscriptions using a toolkit
          Migration toolkit CSV reference
          Migrate subscriptions using Stripe APIs
        How credit prorations are calculated
        Subscription payments
        Subscription payment methods
        Integrate with third-party payment processing
        Collection methods
        Share a link to update payment details
        Strong Customer Authentication (SCA)
        Manage subscriptions
        Modify subscriptions
        Manage pending updates
      Analytics
    Invoicing
    Usage-based billing
    Connect and Billing
    Tax and Billing
    Quotes
    Revenue recovery
    Automations
    Scripts
    Revenue recognition
    Customer management
    Entitlements
    Test your integration
Tax
Reporting
Data
Startup incorporation
HomeFinance automationBillingSubscriptionsSubscription featuresMigrate subscriptions to Stripe

Migrate subscriptions to Stripe Billing using toolkit

Learn how to migrate your existing subscriptions to Stripe using the toolkit.

Copy page

Use the Billing migration toolkit to migrate your existing subscriptions from a third-party system, home-grown system, or an existing Stripe account to Stripe Billing.

Before you begin

  1. If you haven’t already, review the migration stages.
  2. Set up a Stripe Billing integration before you begin migration. This is a one-time setup that you don’t need to repeat for future migrations.
  3. Request a PAN data import from your current processor. This step is only required if you’re migrating to Stripe from another processor. If you’re migrating from Stripe to Stripe, you can skip this prerequisite.
  4. If you’re migrating from a third-party or home-grown system, carefully time the cancellation of your existing subscriptions and the creation of new ones in Stripe. To avoid missing a billing period, create the new subscriptions in Stripe first, before canceling the old subscriptions. To avoid double billing, cancel subscriptions in your old system before the subscriptions are set to charge. For subscriptions with upcoming billing dates close to migration, schedule them to start after the cycle so the final bill is in the old system.

Open the Billing migration toolkit

Create a sandbox in the Dashboard if you want to run a test migration first.

  1. Navigate to Dashboard > Subscriptions > Migrations.

    Alternatively, you can click the overflow menu () next to + Create subscription, and select Migrate subscriptions.

  2. To start your migration, click Let’s get started.

Download a CSV file

First, export your existing subscriptions by matching the exported data to a migration-compatible CSV file. You can create your own CSV file, or download any of the following CSV templates provided by Stripe:

  • Basic
  • Multi-price items
  • Ad-hoc pricing

You can also find examples of CSV files for common migration use cases in the Toolkit CSV reference.

  1. Click Download CSV template.

  2. Choose a CSV template (basic, multi-price items, or ad-hoc pricing) based on your billing use case.

    Basic CSV

    This example shows a migration for common subscription use cases like quantity, taxes, billing anchor, discounts, trials, and backdating.

    Specify the following fields for a Basic CSV file:

    Multi-price items CSV

    This example shows a migration that has multiple products per subscription.

    Specify the following fields for a Multi-price items CSV file:

    Ad-hoc prices CSV

    This example shows handling a subscription migration using ad-hoc pricing for existing products.

    Specify the following fields for an Ad-hoc pricing CSV file:

  3. In the CSV file, specify the details of the subscriptions you want to export.

    For Stripe-to-Stripe migrations

    If you’re migrating subscriptions within Stripe accounts, refer to the CSV example before you specify and upload a CSV file.

Upload a CSV file

Click Upload CSV. The CSV file size limit is 120 MB.

Stripe validates the file to verify that the uploaded subscriptions are in the required CSV format. This process might take up to a few hours, depending on the size of the file. If the file is valid, you can proceed to the next step in the migration.

Resolve validation errors

If you have any errors in your uploaded file, the toolkit displays a failure summary. To resolve the errors:

  1. Click Download file to review errors.

  2. Review the processing_error column to see the errors.

  3. Correct all the errors. Common errors include:

    ErrorTroubleshooting
    Invalid datesMake sure all the dates are in epoch or Unix timestamp format.
    Incorrect start_date rangeMake sure the start_date for each subscription is at least 24 hours in the future.
    Missing dataMake sure every record contains the required fields.
    Incompatible price and taxMake sure prices for specified tax rates have the same tax_behavior (inclusive versus exclusive).
  4. Click Upload revised file to re-upload the corrected CSV (the CSV file size limit is 120 mb).

  5. Wait for re-validation to see the latest validation status.

Review uploaded subscriptions

After Stripe validates your CSV file, review the summary of your uploaded subscriptions for any discrepancies:

  1. Cross-check the summary for the correct:

    • Date of upload
    • Uploaded file name
    • Number of subscriptions
    • Number of customers
    • First subscription go-live date
  2. If everything is valid, click Start migration.

    If you see errors, click Cancel migration and restart the migration from Download a CSV file.

Track migration progress

After you review your uploaded subscriptions, track the progress of your migration:

Migration in progress

Your subscriptions are queued to schedule on the specified start date. This process can take a few minutes to a few hours, depending on the size of the file. For example, the validation and migration for 100,000 subscriptions takes approximately 30 minutes to complete.

The Billing migration toolkit uses the Subscription schedule to migrate your subscriptions. This allows your subscriptions to remain in a scheduled state for 24 hours before going live. In a sandbox, the buffer time is reduced to 1 hour for faster evaluation and testing.

Scheduled subscriptions

After migration, your subscriptions remain in a scheduled state for 24 hours before going live. You have 10 hours to cancel these scheduled subscriptions using the toolkit.

Currently, you can’t update scheduled subscriptions using the toolkit. If you want to update your scheduled subscriptions, you can either call the update endpoint, or update each subscription (one-by-one) in the Subscriptions Dashboard.

Customers can’t cancel scheduled subscriptions from their customer portal. They can only cancel live subscriptions.

Go live with subscriptions

After 24 hours, your scheduled subscriptions go live and charge customers on their applicable start dates. You can view all your live subscriptions in the Subscriptions Dashboard.

After the migration goes live, we recommend you monitor your subscriptions starting from the first payment. Make sure the charge dates and amounts for the migrated subscriptions match the specified start_date.

Customers can cancel live subscriptions from their customer portal.

Monitor subscriptions

When you monitor your subscriptions after the migration goes live, look out for problems related to payment methods.

For example, check transactions for unrecoverable issuer decline codes such as incorrect_number and take action to make sure invoices get paid. Consider notifying customers with invalid payment methods through channels other than email, such as text messages or in-app notifications.

When using automatic collection, check open or past due invoices to make sure customers aren’t missing default payment methods, which might cause the invoice to be unable to attempt collection.

View all migrations

To view all of your migrations:

  1. Select the migration you want to review in Migrations.

  2. To open a migration, click View in the dropdown menu.

    You can track the following fields:

    • Upload date
    • File name
    • Stripe billing migration id
    • Number of subscriptions
    • Migration status

OptionalCancel a migration

If you identify any problems with the scheduled subscriptions, you can roll back the migration and revert the scheduled subscriptions. The Dashboard displays a timestamp to indicate if you can still cancel the migration using the toolkit. You have 10 hours from when you scheduled the subscriptions to cancel them. After 10 hours, the cancel option is disabled in the toolkit.

  1. Find the migration you want to cancel in your Migrations.
  2. Click Cancel migration in the dropdown menu.

Cancel after 10 hours

To cancel the migration after 10 hours, you can either call the cancel endpoint, or individually cancel each subscription (one-by-one) in the Subscriptions Dashboard.

OptionalRun multiple migrations

You can run as many simultaneous subscription migrations as you want. For large migrations, divide the subscriptions into batches and start with a small batch. This can help you quickly identify any validation issues and save validation time.

To start a new migration:

  1. Click Start new migration.

  2. Restart the migration process from Download a CSV file.

    You can also find examples of CSV files for common migration use cases in the Toolkit CSV reference.

See also

  • Toolkit CSV reference
Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc