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-06-30.preview

Consolidates billing mode configuration across Billing productsBreaking changes

What’s new

We’ve unified the billing_mode parameter and field format across all billing endpoints. The billing_mode parameter now uses a consistent object format with a type field, replacing the previous string format. We’ve also consolidated the billing_mode_details field into the main billing_mode object.

Why is this a breaking change?

The billing_mode parameter and field changed from accepting a string value (classic or flexible) to requiring an object with a type field (for example, {type: 'flexible'}). Additionally, the separate billing_mode_details field has been removed, and its updated_at property is now included directly in the billing_mode object.

Impact

You need to update your integration if you currently use the billing_mode parameter or access the billing_mode field in API responses.

Before:

{ "billing_mode": "flexible", "billing_mode_details": { "updated_at": 1234567890 } }

After:

{ "billing_mode": { "type": "flexible", "updated_at": 1234567890 } }

This change affects the following API endpoints and resources:

  • Create subscriptions
  • Create subscription schedules
  • Checkout Sessions
  • Quotes
  • Create a preview invoice

Changes

ParameterChangeResources or endpoints
billing_mode_detailsRemoved
Subscription
FieldsChangeFrom → to
Checkout.Session#create.subscription_data.billing_modeInvoice#create_preview.schedule_details.billing_modeInvoice#create_preview.subscription_details.billing_modeQuote#create.subscription_data.billing_modeQuote.subscription_data.billing_modeSubscription#create.billing_modeSubscriptionSchedule#create.billing_modeChanged
enum('classic'|'flexible') → billing_mode
Quote.subscription_data.billing_modeQuotePreviewSubscriptionSchedule.billing_modeSubscription.billing_modeSubscriptionSchedule.billing_modeChanged
optional → required
QuotePreviewSubscriptionSchedule.billing_modeSubscription.billing_modeSubscriptionSchedule.billing_modeChanged
enum('classic'|'flexible') → SubscriptionsResourceBillingMode
Subscription#migrate.billing_modeChanged
literal('flexible') → billing_mode_migrate

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-06-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