---
title: "Update a coupon"
method: POST
path: "/v1/coupons/{coupon}"
---

# Update a coupon

`POST /v1/coupons/{coupon}`

Updates the metadata of a coupon. Other coupon details (currency, duration, amount\_off) are, by design, not editable.

## Path parameters

- `coupon` string, required

## Response `200`

Successful response.

- Coupon — A coupon contains information about a percent-off or amount-off discount you might want to apply to a customer. Coupons may be applied to [subscriptions](https://api.stripe.com#subscriptions), [invoices](https://api.stripe.com#invoices), [checkout sessions](https://docs.stripe.com/api/checkout/sessions), [quotes](https://api.stripe.com#quotes), and more. Coupons do not work with conventional one-off [charges](/api/charges/create) or [payment intents](https://docs.stripe.com/api/payment_intents).
  - `amount_off` integer, nullable — Amount (in the `currency` specified) that will be taken off the subtotal of any invoices for this customer.
  - `applies_to` CouponAppliesTo
    - `products` string[], required — A list of product IDs this coupon applies to
  - `created` integer, required — Time at which the object was created. Measured in seconds since the Unix epoch.
  - `currency` string, currency, nullable — 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.
  - `currency_options` object — 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).
  - `duration` 'forever' | 'once' | 'repeating', required — One of `forever`, `once`, or `repeating`. Describes how long a customer who applies this coupon will get the discount.
  - `duration_in_months` integer, nullable — If `duration` is `repeating`, the number of months the coupon applies. Null if coupon `duration` is `forever` or `once`.
  - `id` string, required — Unique identifier for the object.
  - `livemode` boolean, required — If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
  - `max_redemptions` integer, nullable — Maximum number of times this coupon can be redeemed, in total, across all customers, before it is no longer valid.
  - `metadata` object, nullable — Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
  - `name` string, nullable — Name of the coupon displayed to customers on for instance invoices or receipts.
  - `object` 'coupon', required — String representing the object's type. Objects of the same type share the same value.
  - `percent_off` number, nullable — 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.
  - `redeem_by` integer, nullable — Date after which the coupon can no longer be redeemed.
  - `times_redeemed` integer, required — Number of times this coupon has been applied to a customer.
  - `valid` boolean, required — Taking account of the above properties, whether this coupon can still be applied to a customer.

## Other responses

- `default` — Error response.

---

[API](https://skmtc.net/stripe/apis/stripe-api.md) · [All operations](https://skmtc.net/stripe/apis/stripe-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/stripe/stripe-api/versions/707de00b0616/schema)
