---
title: "Create a coupon"
method: POST
path: "/coupons"
tags: ["Coupons"]
---

# Create a coupon

`POST /coupons`

## Request

- Base URL: `https://api.cavuno.com/v1`
- URL: `https://api.cavuno.com/v1/coupons`
- Auth: HTTP bearer

## Request body

- CreateCouponBody
  - `name` string, required
  - `percentOff` number, nullable
  - `amountOff` number, nullable: Fixed discount in the currency major unit (e.g. 10 for $10, 1000 for ¥1000). Required with `currency` when there is no percentOff.
  - `currency` string, nullable
  - `duration` 'once' | 'forever' | 'repeating', required
  - `durationInMonths` integer
  - `maxRedemptions` integer
  - `redeemBy` integer: Unix ms deadline after which the coupon cannot be redeemed.
  - `appliesToPlanIds` string[]

## Response `201`

Created coupon.

- Coupon
  - `id` string, required
  - `object` 'coupon', required
  - `name` string, nullable, required
  - `percentOff` number, nullable, required
  - `amountOff` number, nullable, required
  - `currency` string, nullable, required
  - `duration` string, required
  - `durationInMonths` number, nullable, required
  - `valid` boolean, required
  - `appliesTo` string[], nullable, required
  - `timesRedeemed` number, required
  - `created` string, required

## Other responses

- `default`: An error. Every non-2xx response uses the same envelope; see the Errors section of the introduction.

## Changes

- **2026-10-19** `c34152c38176`: 1 info
  - added the optional property `error/upgrade` to the response with the `default` status

[Operation history](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/changes/coupons/post.md)

---

[API](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api.md) · [All operations](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/revisions/d5974dabff14?raw)
