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

Adds the ability to itemize proration discount amounts

What’s new

Adds the ability to itemize proration discount amounts, so proration amounts and discount amounts are displayed consistently with non-prorations. When enabled, the proration amount properties show gross amounts before discounts are applied, and discount amounts include the actual applied discount amounts. When disabled, the proration discount properties include discount IDs, but discount amounts are 0.

Impact

You can now itemize proration discount amounts by setting the proration_discounts parameter to itemized when creating subscriptions, subscription schedules, quotes, checkout sessions, or preview invoices. You can also set this parameter to itemized for an existing subscription by migrating it. However, you can’t migrate a subscription from itemized to included.

Changes summary

ObjectPropertyIncludedItemized (new behavior)
Proration Line ItemamountNet amount (after discounts)Gross amount (before discounts)
discount_amountsMissing item-level discounts; group-level discounts show amount=0All discounts included with accurate amounts
Invoice ItemamountNet amountGross amount
net_amount (new property)Net amount for non-discountable invoice items; otherwise nullNet amount for non-discountable invoice items; otherwise null
proration_details (new property)All discounts included with amount=0All discounts included with accurate amounts
Invoicetotal_discount_amountsExcludes proration discountsIncludes proration discounts
subtotalIncludes net proration amounts (discounts already applied)Includes proration amounts after item-level discounts (group-level discounts applied separately)

Example: 10 USD gross debit proration with 10% item-level discount and 2 USD group-level discount

Included:

The following example shows the existing behavior, with discounts already applied:

Response:

// Line Item { "proration": true, "amount": 700, // Net: 7 USD after discounts (10 USD - 1 USD item - 2 USD group) "discount_amounts": [ // Item-level discount missing entirely {"amount": 0, "discount": "di_group_2off"} // Group-level shows ID but no amount ] } // Invoice Item { "proration": true, "amount": 700 // Net amount only } // Invoice { "total_discount_amounts": [ {"amount": 0, "discount": "di_group_2off"} // Missing item-level proration discount ], "subtotal": 700 // Adds proration amount after all discounts }

Itemized:

Request:

// POST /v1/subscriptions { // ... omitting irrelevant fields ... billing_mode: { type: "flexible", flexible: { // New parameter: only available when billing mode type is flexible proration_discounts: "itemized" // Default value is "included" } } // ... omitting irrelevant fields ... }

Response:

// Line Item { "proration": true, "amount": 1000, // Gross: 10 USD before discounts "discount_amounts": [ {"amount": 100, "discount": "di_item_10pct"}, // Item-level discount now visible {"amount": 200, "discount": "di_group_2off"} // Group-level with actual amount ] } // Invoice Item { "proration": true, "amount": 1000, // Gross amount "net_amount": 700, // New property: net amount after both discounts "proration_details": { // New property: populated when the invoice item is a proration "discount_amounts": [ {"amount": 100, "discount": "di_item_10pct"}, {"amount": 200, "discount": "di_group_2off"} ] } } // Invoice { "total_discount_amounts": [ {"amount": 100, "discount": "di_item_10pct"}, // Now includes item-level proration discount {"amount": 200, "discount": "di_group_2off"} // Now includes group-level proration discount ], "subtotal": 9000 // Includes proration amount after item-level discounts }

Upgrade considerations

  • Scope: This functionality is only available on subscriptions with flexible billing mode.
  • One-way migration: After you enable itemized discount amounts for a subscription, you can’t revert to included.
  • Code changes required: If your integration reads proration amount properties expecting net values, update to use the new net_amount property instead.
  • Historical invoices: Existing invoices reflect the behavior that was active when you created them.
  • Mixed invoice support: Single invoices can contain both included and itemized proration line items if you migrate a subscription between creating prorations.

Changes

ParametersChangeResources or endpoints
flexibleAdded
Checkout.Session#create.subscription_data.billing_modeInvoice#create_preview.schedule_details.billing_modeInvoice#create_preview.subscription_details.billing_mode
 + 7 more
Quote#create.subscription_data.billing_modeQuote.subscription_data.billing_modeSubscription#create.billing_modeSubscription#migrate.billing_modeSubscription.billing_modeSubscriptionSchedule#create.billing_modeSubscriptionSchedule.billing_mode
net_amountproration_detailsAdded
InvoiceItem

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-09-30.clover
  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.

Related changes

  • Removes iterations parameter for subscription schedules
  • Promotion Codes now reference Coupons using a polymorphic field for promotions
  • Adds the Discount source property and removes the Discount coupon property
  • Makes flexible billing mode the default for new subscriptions
  • Updates computation of subscription schedule phase end date to consider billing cycle anchor changes
  • Adds customer portal configuration trial behavior
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