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
Versioning
Changelog
    Overview
    Basil
    Acacia
    Previous versions
Upgrade your API version
Upgrade your SDK version
Essentials
SDKs
API
Testing
Stripe CLI
Sample projects
Tools
Workbench
Developers Dashboard
Stripe Shell
Stripe for Visual Studio Code
Features
Workflows
Event Destinations
Stripe health alertsFile uploads
AI solutions
Agent toolkit
Model Context Protocol
Security and privacy
Security
Stripebot web crawler
Privacy
Extend Stripe
Build Stripe apps
Use apps from Stripe
Partners
Partner ecosystem
Partner certification
HomeDeveloper resourcesChangelogBasil2025-04-30.preview

Adds billing mode to control how prorations and invoices for subscriptions are calculated and orchestratedPublic preview

What’s new

The new billing_mode parameter lets you enable more flexible behaviour when you create Subscriptions, Invoice Previews, Checkout Sessions, or Subscription Schedules.

billing_mode=classicbilling_mode=flexible
Credit proration amounts are calculated based on the value of the subscription item’s current price, tax, quantity, and the last discounts used. This could lead to unexpected prorations when a customer’s tax rates change mid-cycle, debit prorations are disabled, or complex amount-off coupons are used.Credit prorations are calculated based on the original amount previously debited to a customer. This improves proration calculations to take into account taxes, coupons, and billing cycle considerations. For example, credit prorations will now accurately credit back taxes based on the original debit (if tax rate changed mid-cycle) and credit prorations will not be issued if there was no debit.
subscription.trial_start is unchanged when a subscription goes back to trialing state.subscription.trial_start is updated to reflect the most recent trial start date.
The billing_cycle_anchor is sometimes reset during other operations:
  • billing_cycle_anchor is reset to the cancel_at date when setting cancel_at to a date before the next time the subscription cycles.
  • billing_cycle_anchor is reset to the current time when switching from a subscription with all 0 USD prices to a subscription with at least one price greater than 0 USD.
  • billing_cycle_anchor is reset to the current time when switching to a price with a different recurring interval.
billing_cycle_anchor isn’t reset during other operations:
  • billing_cycle_anchor doesn’t change when setting cancel_at to a date before the next time the subscription cycles.
  • billing_cycle_anchor doesn’t change when switching from a subscription with all 0 USD prices to a subscription with at least one price greater than 0 USD.
  • billing_cycle_anchor doesn’t change when switching to a price with a different recurring interval.

Configuring billing_mode to flexible has limitations. Learn more about the limitations and how billing mode enables flexible behaviour for subscriptions.

Impact

You can set billing_mode to be flexible on the following API methods that create a subscription:

  • Create a subscription
  • Create an invoice preview
  • Create a checkout session
  • Create a subscription schedule

Changes

ParameterChangeResources or endpoints
billing_modeAdded
Checkout.Session#create.subscription_dataInvoice#create_preview.schedule_detailsInvoice#create_preview.subscription_details
 + 7 more
Quote#create.subscription_dataQuote.subscription_dataQuotePreviewSubscriptionScheduleSubscription#createSubscriptionSchedule#createSubscriptionScheduleSubscription

Upgrade

  1. View your current API version in Workbench.
  2. If you use an SDK, upgrade to the corresponding SDK version for this API version.
    • If you don’t use an SDK, update your API requests to include Stripe-Version: 2025-04-30.preview
  3. Upgrade the API version used for webhook endpoints.
  4. Test your integration against the new version.
  5. If you use Connect, test your Connect integration.
  6. In Workbench, perform the upgrade. You can roll back the version for 72 hours.

Learn more about Stripe API upgrades.

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