{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/stripe/main/json-schema/stripe-coupon-schema.json", "title": "Coupon", "description": "A coupon contains information about a percent-off or amount-off discount you\nmight want to apply to a customer. Coupons may be applied to [subscriptions](https://stripe.com/docs/api#subscriptions), [invoices](https://stripe.com/docs/api#invoices),\n[checkout sessions](https://stripe.com/docs/api/checkout/sessions), [quotes](https://stripe.com/docs/api#quotes), and more. Coupons do not work with conventional one-off [charges](https://stripe.com/docs/api#create_charge) or [payment intents](https://stripe.com/docs/api/payment_intents).", "x-generated": "2026-10-12", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/stripe-coupons-api-openapi.yml#/components/schemas/coupon", "properties": { "amount_off": { "description": "Amount (in the `currency` specified) that will be taken off the subtotal of any invoices for this customer.", "type": [ "integer", "null" ] }, "applies_to": { "$ref": "#/$defs/coupon_applies_to" }, "created": { "description": "Time at which the object was created. Measured in seconds since the Unix epoch.", "format": "unix-time", "type": "integer" }, "currency": { "description": "If `amount_off` has been set, the three-letter [ISO code for the currency](https://stripe.com/docs/currencies) of the amount to take off.", "type": [ "string", "null" ] }, "currency_options": { "additionalProperties": { "$ref": "#/$defs/coupon_currency_option" }, "description": "Coupons defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).", "type": "object" }, "duration": { "description": "One of `forever`, `once`, and `repeating`. Describes how long a customer who applies this coupon will get the discount.", "enum": [ "forever", "once", "repeating" ], "type": "string", "x-stripeBypassValidation": true }, "duration_in_months": { "description": "If `duration` is `repeating`, the number of months the coupon applies. Null if coupon `duration` is `forever` or `once`.", "type": [ "integer", "null" ] }, "id": { "description": "Unique identifier for the object.", "maxLength": 5000, "type": "string" }, "livemode": { "description": "Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.", "type": "boolean" }, "max_redemptions": { "description": "Maximum number of times this coupon can be redeemed, in total, across all customers, before it is no longer valid.", "type": [ "integer", "null" ] }, "metadata": { "additionalProperties": { "maxLength": 500, "type": "string" }, "description": "Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.", "type": [ "object", "null" ] }, "name": { "description": "Name of the coupon displayed to customers on for instance invoices or receipts.", "maxLength": 5000, "type": [ "string", "null" ] }, "object": { "description": "String representing the object's type. Objects of the same type share the same value.", "enum": [ "coupon" ], "type": "string" }, "percent_off": { "description": "Percent that will be taken off the subtotal of any invoices for this customer for the duration of the coupon. For example, a coupon with percent_off of 50 will make a $ (or local equivalent)100 invoice $ (or local equivalent)50 instead.", "type": [ "number", "null" ] }, "redeem_by": { "description": "Date after which the coupon can no longer be redeemed.", "format": "unix-time", "type": [ "integer", "null" ] }, "times_redeemed": { "description": "Number of times this coupon has been applied to a customer.", "type": "integer" }, "valid": { "description": "Taking account of the above properties, whether this coupon can still be applied to a customer.", "type": "boolean" } }, "required": [ "created", "duration", "id", "livemode", "object", "times_redeemed", "valid" ], "type": "object", "x-expandableFields": [ "applies_to", "currency_options" ], "x-resourceId": "coupon" }