| [ Web Proxy ] |
| Viewing: https://docs.stripe.com/billing/subscriptions/billing-mode | [Back] [Original] |
You can set your preferred billing mode to orchestrate your invoices and subscriptions to meet your business requirements. You can configure each subscription to use one of two billing modes:
Compare classic versus flexible billing mode.
You cant migrate a subscription from flexible billing mode to classic billing mode.
Flexible billing mode provides more accurate billing for prorations, usage-based pricing, flexible invoicing, and trial settings. It also unlocks new capabilities such as mixed intervals on the same subscription. These improvements are only available in flexible billing mode, which is why we recommend creating new subscriptions with flexible billing mode and migrating your existing ones.
We recommend that new Billing users use flexible billing mode for subscriptions and invoices, although we dont require it.
For existing users, your default billing mode is preserved as classic to maintain backward compatibility with your current integration. However, we recommend migrating to flexible billing mode to take advantage of the latest billing features and improvements. Learn more about the differences between classic and flexible billing mode.
You can set or update the billing mode through the API or Dashboard when you create or migrate subscriptions. We apply a default billing mode if you dont specify one.
2025-09-30.clover and later, the default is flexible. For earlier versions, the default is classic. If you upgrade your API version, the default billing mode for new subscriptions changes accordingly.To use flexible billing mode, your integration must be on Stripe API version 2025-06-30.basil or later. Learn how to upgrade your API version.
You can create a flexible billing mode subscription or update a classic billing mode subscription to be flexible through the Dashboard, regardless of your integrations API version. To fully modify these subscriptions in the Stripe API, your integration must be on 2025-06-30.basil or later. To see what version youre on, go to the Workbench overview and look at the API versions section. From there, click Upgrade to upgrade to a newer version.
Follow the steps below to create a flexible billing mode subscription through the subscription editor:
The default billing mode value depends on your account settings. You can customize both the available billing mode options and the default selection in the Subscription editor. To configure this, go to Settings > Billing > Subscriptions and emails > Default billing mode. In the subscription editor, you can choose to display billing mode options from the following:
The billing mode default setting also determines the billing mode for subscriptions created through Dashboard-generated Payment Links and Pricing Tables. For example, if you set the billing mode default to flexible and then create a Payment Link in the Dashboard, any subscription generated from that Payment Link uses flexible billing mode.
The billing mode default setting only applies to new subscriptions created in the Dashboard. It doesnt affect subscriptions created using the API or subscriptions migrated to flexible mode.
You can migrate your existing subscriptions to flexible billing mode. The flexible behaviors take effect for all new activity on the subscription after migration. However, Stripe doesnt recalculate any resources created before migration, including pending proration Invoice Items.
To use flexible billing mode, your integration must be on Stripe API version 2025-06-30.basil or later. To see what version youre on, go to the Workbench overview and look at the API versions section. From there, click Upgrade to upgrade to a newer version.
Migrating to flexible billing mode changes how Stripe calculates prorations, handles usage-based billing, and processes cancellations for all new activity on the subscription after migration. Stripe doesnt recalculate any resources created before migration, including pending proration invoice items.
Key consequences of migrating:
Key benefits of migrating:
For a full breakdown of behavior differences, see Compare classic and flexible billing mode.
You can migrate a subscription with an active subscription schedule to flexible billing mode using the migrate API. The Dashboard doesnt support billing mode migration for subscriptions with active schedules. When you migrate through the API, Stripe also updates the subscription schedules billing_mode automatically.
If a subscription schedule hasnt started yet and has no active subscription, you cant migrate it. Cancel and recreate the schedule with billing_mode set to flexible.
When you create a subscription schedule from an existing subscription, dont set billing_mode if the subscription already has one. The schedule automatically inherits the billing_mode from the original subscription. If you set billing_mode when using from_subscription, Stripe returns an error.
If you use flexible subscriptions, you can set your preferred behavior for proration discounts on invoices and invoice items:
Learn more about the differences between itemized and included.
To enable itemized proration discounts, you must upgrade your API version to 2025-06-30.basil or later.
Create or migrate a subscription in order to set proration_discounts to itemized.
curl https://api.stripe.com/v1/subscriptions \ -u "sk_test_wU7nrJCZspk1NPDxiQgAF05q:" \ -H "Stripe-Version: 2025-06-30.basil" \ -d "items[0][price]=" \ -d "customer={{PRICE_ID}}" \ -d "billing_mode[type]=flexible" \ -d "billing_mode[flexible][proration_discounts]=itemized" \ -d payment_behavior=default_incomplete \ -d "payment_settings[save_default_payment_method]=on_subscription"{{CUSTOMER_ID}}
The code example above returns the following response:
{ "id": "sub_JgRjFjhKbtD2qz", "object": "subscription", "billing_mode": { "flexible": { "proration_discounts": "itemized" }, "type": "flexible", "updated_at": 1751071020 },
| Web Proxy Viewer | New URL | Original Page |