# Create a coupon (internal) **POST /admin/billing/coupons** Creates the coupon in Stripe, keeps a local copy for search and returns it. Send exactly one of `percentOff` or `amountOffCents` (with `currency`); `durationInMonths` is required with `duration: repeating` and not allowed otherwise. Breaking either rule returns 400. Super admin only. ## Servers - http://api.example.com: http://api.example.com () ## Authentication methods - Access token ## Parameters ### Body: application/json (object) - **couponId** (string) Stripe coupon id — THIS IS THE REDEEMABLE CODE customers type. Stripe generates a random one when omitted. - **name** (string) Human-readable name shown on the invoice - **percentOff** (number) Percent discount, 1-100. Mutually exclusive with amountOffCents. - **amountOffCents** (number) Fixed discount in cents. Requires currency. - **currency** (string) ISO currency, required with amountOffCents - **duration** (string) - **durationInMonths** (number) Months to repeat for — required when duration is "repeating" - **maxRedemptions** (number) Total redemptions allowed across all customers - **redeemBy** (string(date-time)) Cannot be applied after this instant (ISO 8601) - **appliesToProducts** (array[string]) Restrict the discount to these Stripe product ids - **metadata** (object) - **reason** (string) Audit note — why this coupon was issued ## Responses ### 201 #### Body: application/json (object) - **data** (object) - **statusCode** (number) - **timestamp** (string(date-time)) [Powered by Bump.sh](https://bump.sh)