Before you start
The coupon must be:- Status:
active - Within its
redeem_after/redeem_beforewindow (if set) - Below its
max_redemptionslimit (if set)
At subscription creation
Pass coupons in thesubscription_coupons array. Each entry takes a coupon_code (the human-readable code from the coupon object), optional start_date/end_date, and an optional price_id to target a specific line item.
Subscription-level coupon
Discounts the full invoice subtotal. Omitprice_id:
start_date defaults to the subscription start date. end_date is optional: omit it to let the coupon run until its own cadence ends or the subscription cancels.
Line-item coupon
Discounts one specific price in the plan only. Setprice_id to the target price:
Scheduled discounts via phases
Subscription phases are the recommended way to apply time-bounded coupons. Each phase has its ownstart_date and optional end_date. Coupons in a phase inherit those dates as their association window.
Example: introductory discount for Q1 only
Example: line-item discount scoped to a phase
Common scheduling patterns
Add or remove a coupon after subscription creation
Use the subscription modification API withtype: "coupon".
Add a coupon
start_date defaults to now if omitted. end_date is optional: omit it to apply the coupon indefinitely.
To target a specific line item instead of the full invoice, add subscription_line_item_id (mutually exclusive with subscription_id):
Remove a coupon
coupon_association_id from the subscription response with expand=coupon_associations.
Removal affects only invoices generated after the request. Previously issued invoices are not changed.
Preview before executing
subscription_coupons fields (at creation)
coupon_params fields (post-creation modification)
How discounts appear on invoices
Discount amounts are tracked at two levels on each line item:
At the invoice level,
total_discount is the sum of all coupon discounts across all line items.
The discount terms are snapshotted when the coupon is applied, so they are preserved even if the coupon definition is later updated.

