> ## Documentation Index
> Fetch the complete documentation index at: https://leylandscompany.leylnd.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrating to Autumn

> How to migrate your existing Stripe customers to Autumn

It's easy to move your existing customers to Autumn. The Autumn team will help you move your subscriptions and purchases over without any disruption. The main reasons teams migrate are:

* **Speed** - Team-based billing, multi-interval usage limits, auto-topups, timeseries charts: all handled by Autumn out of the box.
* **Flexibility** — Plan versioning, custom deals, and pricing changes without code deploys
* **Reliability** — No webhook edge cases, race conditions, or state sync issues to debug

<Info>
  Planning a complex migration? [Reach out to us](https://cal.com/ayrod) — we can help you plan and execute it.
</Info>

## Migration Steps

<Steps>
  <Step title="Replace your existing billing code with Autumn">
    Start by integrating Autumn in your development environment. Replace your existing Stripe billing logic with Autumn's SDK:

    * Set up your pricing plans in the [Autumn dashboard](https://app.useautumn.com)
    * Install the Autumn SDK and configure your API keys
    * Replace Stripe checkout, subscription management, and usage tracking with Autumn equivalents

    See our [setup guide](/documentation/getting-started/setup) for detailed integration instructions.
  </Step>

  <Step title="Link your production Stripe account">
    Connect your existing Stripe account to Autumn in your production environment. This gives us access to your active subscriptions so we can link them during migration.
  </Step>

  <Step title="Map your products in production">
    Before importing any customers, make sure every plan your Stripe customers are currently on has a matching plan set up in your Autumn production environment. Each customer you import will reference one of these plans by its `plan_id`, so this mapping needs to be in place first.
  </Step>

  <Step title="Import your customers">
    For each customer, call [`billing.import`](/api-reference/billing/import) with their existing Stripe customer ID, their current subscription, and the Autumn plan it maps to. This links their live Stripe subscription so Autumn can manage it going forward — **there will be no change or disruption to your customers' billing**.

    ```typescript theme={null}
    const autumn = new Autumn({ secretKey: "am_sk_..." });

    await autumn.billing.import({
      customerId: "user_123",
      processors: [{ type: "stripe", id: "cus_ABC123" }],
      billables: [
        {
          processor: "stripe",
          link: { subscriptionId: "sub_XYZ789" },
          plan: { planId: "pro" },
        },
      ],
    });
    ```

    If you need to preserve a customer's exact usage counts rather than have their balances reset on import, follow up with [`balances.update`](/api-reference/balances/updateBalance) to set the correct remaining balance for each feature:

    ```typescript theme={null}
    await autumn.balances.update({
      customerId: "user_123",
      featureId: "messages",
      remaining: 42,
    });
    ```
  </Step>

  <Step title="Deploy your Autumn integration">
    Once your customers are imported, you can deploy your Autumn integration to production. Your existing customers will be seamlessly linked to their Stripe subscriptions through Autumn.
  </Step>
</Steps>
