Autumn and Stripe responsibilities
Autumn is the source of truth for a customer’s state and what they can do. Stripe handles subscriptions and payments.Autumn syncs from Stripe automatically. If you update or cancel a subscription directly in the Stripe dashboard, Autumn will attempt to apply the same change to the corresponding customer state.
Connecting Stripe
There are three ways to connect your Stripe account to Autumn:When disconnecting and reconnecting a different Stripe account, existing Stripe IDs on your plans become invalid. Autumn will recreate the products and prices in the new account when you
attach it, but old customers and subscriptions will no longer be linked.Currency
Currency is set at the organization level and defaults tousd. You can change it when connecting Stripe or from the developer settings page.
All new Stripe prices are created in your configured currency. Changing the currency does not migrate existing subscriptions — those remain in the original currency. New prices and subscriptions going forward will use the updated currency.
How customers map
When you create a customer in Autumn, you pass your own user ID (from your auth system, database, or any unique identifier) as thecustomer_id. This is the only ID you need — there’s no separate “auth ID” concept.
By default, a Stripe customer is not created when you create an Autumn customer. The Stripe customer is created lazily — the first time a billing operation needs one (attaching a plan, opening the billing portal, setting up a payment method, etc.).
You can change this behavior:
- Pass
createInStripe: trueto create the Stripe customer immediately when the Autumn customer is created - Pass
stripeId: "cus_abc123"to link an existing Stripe customer instead of creating a new one
- Autumn → Stripe: the Stripe customer ID is stored on the Autumn customer
- Stripe → Autumn: the Autumn customer ID is stored in the Stripe customer’s
metadata
How products and prices map
The table below shows what maps to what:In production, Stripe products and prices are lazily created — only on the first
attach that uses them, not when you create or update a plan in Autumn. This means you can pre-map an Autumn plan to an existing Stripe product/price before the first attach, and Autumn will reuse it instead of creating a duplicate.Fixed prices
Each fixed price on a plan maps 1:1 to a Stripe price, attached to the plan’s Stripe product.Usage-based prices
Usage-based prices are more complex. For each priced feature, Autumn creates a separate Stripe product (named"Plan Name - Feature Name") with its own Stripe price. Depending on the billing model, Autumn may also create:
- An empty placeholder price to anchor the subscription
- A billing meter for in-arrear usage reporting
- A prepaid price for upfront usage billing
Renaming in Stripe
You can rename products and update their descriptions directly in the Stripe dashboard for display purposes (e.g., on invoices or the customer portal). Autumn won’t overwrite these cosmetic changes.Renaming in Stripe is purely cosmetic. The plan’s ID and configuration are still managed in Autumn. For structural changes (prices, features, billing model), always use Autumn.
Webhooks
Autumn automatically creates and manages webhook endpoints when you connect Stripe. You don’t need to configure these manually. Autumn listens for key Stripe events to keep state in sync:Direct vs deferred execution
When you callbilling.attach, Autumn takes one of two paths depending on whether the customer can be charged immediately:
Direct (immediate): The customer already has a payment method. Autumn creates the Stripe subscription, charges the customer, and provisions balances — all in a single API call.
Deferred (checkout): The customer doesn’t have a payment method, or the payment requires additional action (like 3DS). Autumn creates a Stripe Checkout Session (or returns a required_action), stores the pending billing plan, and completes everything when the webhook confirms payment.
See Payment Flow for the full breakdown of redirect modes and checkout behavior.