Mixed interval subscriptions
Manage subscriptions for items with different intervals.
You can include multiple subscription items with different prices and billing periods on a single subscription and Stripe automatically handles invoice generation.
For example, if you offer a service with an annual flat rate, plus a monthly usage-based fee, you can include both prices as items on the same subscription. Stripe generates a single, combined invoice when item-level billing intervals align and separate invoices when intervals diverge.
Note
Mixed interval subscriptions must use flexbile billing mode. You must upgrade your API version to 2025-06-30.
or later to use flexbile billing mode in the Dashboard and API.
Create a mixed interval subscription 
- Go to the Subscriptions page in the Dashboard.
- Select +Create Subscription.
- Add products that bill on different intervals, such as monthy and yearly billing intervals. Learn how to manage products and prices.
- Configure your Subscription settings.
- Scroll down to the Advanced settings section, set Billing mode to Flexible.
- Create the subscription.
Add mixed interval items to an existing subscription 
- Go to the Subscriptions page in the Dashboard.
- Find the subscripton and click +Update Subscription.
- Scroll down to the Advanced settings section, set Billing mode to Flexible.
- Click +Update Subscription.
- Find the subscripton and click +Update Subscription again.
- Add items with different intervals.
- Create the subscription.
Cancel a subscription 
Canceling a mixed interval subscription or schedule cancels all the subscription items, regardless of their interval.
Subscriptions have a single behavior for dunning. If all retries for a payment fail, even if the failing payment is for an invoice related to only one of the items on the subscription, Stripe cancels the entire subscription and marks it as unpaid or past due, depending on your configured dunning settings.
Learn more about canceling or deleting subscriptions.
Billing periods for mixed interval subscriptions 
Each subscription item has its own current_period_start and current_period_end. Subscription items track their respective billing periods directly instead of as a top-level shared billing period on the subscription resource.
For example, a subscription created on January 1 with a monthly, bimonthly, and quarterly item has the following periods:
current_period_start | current_period_end | |
---|---|---|
Monthly item | January 1 | February 1 |
Bi-monthly item | January 1 | March 1 |
Quarterly item | January 1 | April 1 |
Subscription | January 1 | February 1 |
After renewal on February 1 (subscription.
), the subscription’s current period adjusts to match the latest current_
and earliest current_
of all the items:
current_period_start | current_period_end | |
---|---|---|
Monthly item | February 1 | March 1 |
Bi-monthly item | January 1 | March 1 |
Quarterly item | January 1 | April 1 |
Subscription | February 1 | March 1 |
After cycling a third time:
current_period_start | current_period_end | |
---|---|---|
Monthly item | March 1 | April 1 |
Bi-monthly item | March 1 | May 1 |
Quarterly item | January 1 | April 1 |
Subscription | March 1 | April 1 |
Free trial
The item-level billing period dates are affected by free trial end dates, similar to regular subscriptions. When the subscription has a future-dated trial_end, all the current_
dates (subscription and items) are set to the trial_
date.
Pause at trial end and resume
You can configure a mixed interval subscription to pause at trial end when the payment method is missing through the trial_settings.end_behavior.missing_payment_method parameter as with regular subscriptions. You can resume paused subscriptions using stripe.subscription.resume, as with regular subscriptions. We only support the proration_
and billing_
parameters with mixed interval subscriptions.
Note
When resuming a mixed interval subscription with billing_
and proration_
, the debit proration for the partial period between the date of resumption and the end of the current billing period for each of the items aren’t generated or billed. See an example below:
For a mixed interval subscription with a monthly and a bimonthly item with
billing_
= January 1cycle_ anchor trial_
= February 1end trial_
= “pause”settings. end_ behavior. missing_ payment_ method
This example assumes this subscription is paused on February 1 because of a missing payment method, and the subscription resumes on February 15 with proration_
:
billing_cycle_anchor: ‘unchanged’ | billing_cycle_anchor: ‘now’ | |
---|---|---|
Monthly item | Item current period: February 1–March 1
| Item current period: February 15–March 15
|
Bimonthly item | Item current period: February 1–April 1
| Item current period: February 15–April 15
|
Subscription |
|
|
Interval alignment
In mixed interval subscriptions, every item’s price interval (the combination of price.
and price.
) must be a multiple of the shortest price interval in the subscription. Some price interval combinations aren’t supported for mixed interval subscriptions.
Examples of supported interval combinations:
- 1 month, 3 months
- 1 month, 1 year
- 1 day, 1 week
- 1 day, 3 months
- 1 day, 2 years
- 2 weeks, 4 weeks
- 2 months, 4 months, 6 months
Examples of unsupported interval combinations:
- 2 months, 3 months
- 4 months, 6 months
- 1 week, 1 month
- 2 days, 1 week
- 5 months, 1 year
Limitations 
Mixed interval subscriptions are subject to the following limitations:
- The deprecated cancel_at_period_end can’t detect which subscription item’s
current_
to use as the cancellation date, so defaults toperiod_ end min_
. Alternatively:period_ end - Use the
cancel_
parameter to cancel a subscription on a future date.at - Use the
min_
orperiod_ end max_
helpers to determine which item’s end period triggers the subscription cancelation.period_ end
- Use the
- Mixed interval subscriptions can’t calculate total iterations accurately. Use
duration
to specify the subscription schedule instead. - You can’t apply a retention coupon on mixed interval subscriptions through the customer portal.
- You currently can’t create mixed interval subscriptions on Checkout Sessions.