Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
Overview
Billing
OverviewAbout the Billing APIs
Subscriptions
Invoicing
Usage-based billing
    Overview
    Choose a usage-based billing setup
      Use products and prices
        Manage billing setup
        Transform quantities
      Use rate cards
    Record usage for billing
    Offer billing credits
    Monitor usage
Quotes
Customer management
Billing with other products
Revenue recovery
Automations
Test your integration
Tax
Overview
Use Stripe tax
Manage compliance
Reporting
Overview
Select a report
Configure reports
Reports API
Reports for multiple accounts
Revenue recognition
Data
OverviewSchema
Custom reports
Data Pipeline
Data management
HomeRevenueUsage-based billingChoose a usage-based billing setupUse products and prices

Manage your usage-based billing setup

Learn how to handle billing-related tasks for your usage-based billing model.

After you create your usage-based billing model, you can modify different parts of your billing setup. For example, you can update a subscription item’s price during a billing cycle, backdate a subscription to include usage in the next invoice, or cancel usage-based subscriptions.

Update prices mid-cycle

You can update a subscription item’s price during a billing cycle.

With billing_mode=flexible subscriptions, we create an invoice item that bills for previously reported metered usage when you remove a metered price from a subscription.

For example, say you have a monthly subscription that you switch from price A to price B on January 16. On January 16, we create an invoice item billing for usage from January 1 to January 16. When the subscription cycles on February 1, we bill for price B from January 16 to February 1.

The proration_behavior you specify when removing a metered price affects these metered invoice items. If you want to remove a metered price without billing for it, set proration_behavior to none.

With billing_mode=classic subscriptions, limitations apply when switching from one meter price to another.

On future invoices, we reflect only usage that occurs after the update. For example, say you have a monthly subscription that you switch from price A to price B on January 16. At the end of the month, the invoice includes usage from January 16 to January 31 at price B. Usage from January 1 to January 16 isn’t billed.

An exception exists if you use billing thresholds and have a threshold invoice already generated at the old price. For example, say you generate a threshold invoice on January 10 using price A. You still charge that threshold invoice to the customer. At the end of the month, the invoice includes usage from January 16 to January 31 at price B. The earlier threshold invoice doesn’t offset any usage for this end-of-month invoice.

Similar restrictions apply if you add a new subscription item with a billing meter price in the middle of the subscription cycle. For example, say you add a new subscription item with price C on January 16. At the end of the month, the invoice includes usage from January 16 to January 31 at price C for that subscription item.

To capture previously reported usage when changing prices, choose one of these options:

  • Report the aggregated usage again to capture it in the cycle on the new price.
  • Reset the billing_cycle_anchor parameter to now, applying the old price to previously reported usage.

To update the price for a subscription item:

Command Line
cURL
curl https://api.stripe.com/v1/subscription_items/{{SUBSCRIPTION_ITEM_ID}} \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d price={{NEW_PRICE_ID}}

To delete a subscription item:

Command Line
cURL
curl -X DELETE https://api.stripe.com/v1/subscription_items/{{SUBSCRIPTION_ITEM_ID}} \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

After deletion, the invoice doesn’t reflect any usage from that item.

Create a backdated subscription

You can record usage for a customer even before creating a subscription for them. After recording usage for a customer, use the backdate_start_date to create a subscription before the first report.

With billing_mode=flexible subscriptions, the subscription’s first invoice includes this backdated usage.

With billing_mode=classic subscriptions, the subscription’s next invoice, generated when it cycles, includes this backdated usage.

Command Line
cURL
curl https://api.stripe.com/v1/subscriptions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer={{CUSTOMER_ID}} \ -d "items[0][price]"={{PRICE_ID}} \ -d backdate_start_date=1710000000

Cancel usage-based subscriptions

With usage-based billing, the bill the customer pays varies based on consumption during the billing cycle. When changing the billing cycle results in a subscription interval ending early, you charge the customer for the usage accrued during the shortened billing cycle.

Note

We don’t support proration with usage-based billing.

You can’t reactivate canceled subscriptions. Instead, you can collect updated billing information from your customer, update their default payment method, and create a new subscription with their existing customer record.

If you use cancel_at_period_end to schedule the cancellation of a subscription, you can reactivate the subscription at any time up to the end of the period. To do so, update cancel_at_period_end to false.

For subscriptions that cancel at the end of the period, the final invoice at the end of the cycle includes metered usage from the last billing cycle.

Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc