Mixed interval subscriptionsPrivate preview
Learn how to add items with different intervals to your subscriptions.
You can bill for multiple recurring prices with different intervals on a single subscription using mixed interval subscription. This allows you to combine different pricing structures within a single subscription.
For example, if a customer subscribes to a service with an annual flat fee of 500 USD and a monthly usage-based fee, you can include both prices as items on the same subscription. Stripe generates combined invoices when item-level billing cycles align and generates separate invoices when only one item is due.
Mixed interval subscription private preview
The mixed interval subscription is currently in private preview and might change in functionality and integration path before it becomes generally available. We recommend testing your integration with non-production traffic.
Get started with mixed interval subscriptions 
Billing mode public preview
billing_
is currently in public preview. Learn more about public preview limitations.
To enable mixed interval subscriptions, you must set billing_
on the following API endpoints and upgrade your API version to 2025-04-30.
or later.
Create a subscription with mixed intervals 
Create a subscription using prices of different recurring interval values to invoice for subscription items renewing at disjoint times.
For the example of a 100 USD per quarter and a 15 USD per month subscription starting on January 1 2024, create the following subscription:
The response includes a subscription with both items and bills for them on the first invoice (latest_
):
{ "object": "subscription", "id":
, "current_period_start": 1704067200, // Jan 1 2024 "current_period_end": 1706745600, // Feb 1 2024 "items": { "data": [ { "id": "si_A", "price": "price_id_monthly",'{{SUBSCRIPTION_ID}}'
On February 1 and March 1, the subscription renews and generates a new invoice for the monthly price. On April 1, the subscription renewal creates an invoice for both the monthly and quarterly price.
Cancel a subscription 
- When you cancel a mixed interval subscription or schedule, Stripe cancels all the subscription items, regardless of their interval.
- Subscriptions have a single behavior for dunning, even if an invoice only bills for one of the items on the subscription. If all retries for a payment fail, Stripe cancels the entire subscription and marks it as unpaid or past due, depending on your configured dunning settings.
Billing periods for mixed interval subscriptions 
Each subscription item has its own current_period_start and current_period_end.
Stripe sets the subscription’s current period based off the subscription item’s billing periods, where:
- current_period_start is the maximum of the item’s
current_
dates.period_ start - current_period_end is the minimum of the item’s
current_
dates.period_ end
The subscription.
always indicates the next date that an item will cycle.
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 |
Deprecated subscription parameters
The subscription-level parameters subscription.current_period_start and subscription.current_period_end are deprecated. Define period values at the subscription item level instead.
Adjustments to billing periods
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
A mixed interval subscription can be configured 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. Paused subscriptions can be resumed using stripe.subscription.resume, as with regular subscriptions. Currently, only proration_
and billing_
parameters are supported.
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 |
|
|
Mixed interval considerations 
There are several restrictions introduced with the mixed interval feature.
Cycle alignment
The price cycle of every subscription item must be a multiple of the shortest price cycle present on the subscription. A price’s interval is a combination of the price.
and price.
fields.
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 
While in private preview, mixed interval subscriptions are subject to the following limitations that might change during development:
- All subscription item prices must specify
recurring.
andusage_ type: licensed billing_
. We don’t support metered pricing.scheme: per_ unit - Mixed interval subscriptions are currently available in the Stripe API only, and not the customer portal.
- You can’t use cancel_at_period_end on a mixed interval subscription because it’s unclear which subscription item’s
current_
to use to determine the cancellation date.period_ end