RyzeDeskRyzeDesk

Stripe

4105 articles

Adds the ability to itemise proration discount amounts


Adds the ability to itemise proration discount amounts

What’s new

Adds the ability to itemise 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 itemise proration discount amounts by setting the proration_discounts parameter to itemised when creating subscriptions, subscription schedules, quotes, checkout sessions or preview invoices. You can also set this parameter to itemised for an existing subscription by migrating it. However, you can’t migrate a subscription from itemised to included.

Changes summary

ObjectPropertyIncludedItemised (new behaviour)
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 behaviour, 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
}

Itemised:

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": 900 // 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 itemised 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 behaviour that was active when you created them.
  • Mixed invoice support : Single invoices can contain both included and itemised proration line items if you migrate a subscription between creating prorations.

Changes

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
  1. Upgrade the API version used for webhook endpoints .
  2. Test your integration against the new version.
  3. If you use Connect, test your Connect integration .

Learn more about Stripe API upgrades.

Last verified 2026-09-27

Is this helpful?