Via API
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name shown in the dashboard and invoice details |
type | string | Yes | percentage or fixed |
cadence | string | Yes | once, repeated, or forever |
percentage_off | decimal string | When type=percentage | Discount as a percent, e.g. "15.00" for 15% |
amount_off | decimal string | When type=fixed | Flat discount amount, e.g. "50.00" |
currency | string | When type=fixed | ISO currency code, e.g. "USD" |
duration_in_periods | int | When cadence=repeated | Number of billing cycles the discount applies. Must not be set for other cadences. |
coupon_code | string | No | Human-readable code customers can enter to redeem (e.g. "SUMMER15"). Auto-generated if omitted. |
redeem_after | timestamp | No | Earliest time a new association can be created |
redeem_before | timestamp | No | Expiry. New associations cannot be created after this time. |
max_redemptions | int | No | Cap on total associations across all subscriptions |
metadata | object | No | Key-value pairs for your own tracking |
Cadence behaviour
| Cadence | What happens |
|---|---|
once | Discount applies to the first invoice in the association window only |
repeated | Discount applies for duration_in_periods consecutive billing cycles |
forever | Discount applies to every invoice for the life of the subscription |
Fixed-amount coupon
For a fixed dollar amount off, settype: fixed and provide both amount_off and currency:
Recurring coupon
To discount multiple billing cycles, usecadence: repeated with duration_in_periods:

