> ## Documentation Index
> Fetch the complete documentation index at: https://docs.waffo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Coupons

> Create coupons and promotion codes, hand out codes per channel, and see how often they are used

## Coupon Management

The Coupons page is where you set up discounts for your store. A **coupon** defines the offer — how much off, which products, when it ends and how many times it can be claimed — and comes with one **promotion code** that customers enter at checkout. To hand the same offer out per channel or audience, add more promotion codes to the coupon, each with its own conditions. For how discounts behave at checkout and on subscriptions, see [Discounts & Promotions](https://docs.waffo.ai/guides/discounts.md).

Coupons belong to one environment: the page follows the **Test Mode** switch, and a coupon created in test mode does not work in live mode. Use [Copy to live](#copying-a-coupon-to-live) once it is ready.

![Coupons list](https://mintcdn.com/waffo/fzyQe5Jh5yF_yUiY/images/dashboard/discounts-list.png?fit=max\&auto=format\&n=fzyQe5Jh5yF_yUiY\&q=85\&s=997ad1e53892442a1a6cd14a0f056120)

## Coupon List

The overview cards show active coupons, redemptions across all coupons, the most used coupon and how many extra promotion codes you have added. Below them, coupons are listed with:

| Column | Description |
| - | - |
| Name | The coupon's name (only you see it) and its discount, duration and limits |
| Promotion code | The coupon's default code. Expand a row to see its extra codes |
| Status | Active, Used up, Expired, Deactivated or Failed — hover a status for what it means |
| Used / limit | Redemptions across all of the coupon's codes, against its total limit |
| Expires | The coupon's redeem-by date, or no expiry |
| Products | All products, or how many products it is limited to |

Filter the list with the **All / Active / Ended / Deactivated / Failed** tabs, or search by name or by promotion code — a search by code also matches the extra codes of a coupon.

### Coupon Status

| Status | Meaning |
| - | - |
| Active | Customers can claim the coupon now by entering one of its codes |
| Used up | Claimed as many times as its limit allows; its codes are rejected at checkout |
| Expired | Past its redeem-by date; its codes are rejected. The date cannot be changed — create a new coupon to extend |
| Deactivated | Deactivated by you; its codes are rejected. Discounts already on subscriptions keep running until the subscription's next plan change |
| Failed | The coupon could not be created. Its code has been released, so you can create it again with the same code |

## Creating a Coupon

![Create coupon](https://mintcdn.com/waffo/fzyQe5Jh5yF_yUiY/images/dashboard/discounts-create.png?fit=max\&auto=format\&n=fzyQe5Jh5yF_yUiY\&q=85\&s=e28dc699e3ebfceea1892fda047e679b)

**1. Click 'New coupon'**

Find the button in the top right of the Coupons page.

**2. Name the coupon**

The name helps you spot the coupon in the list; customers only ever see the promotion code.

**3. Choose the products**

The coupon applies to every product by default. Switch on **Limit to specific products** to pick the products it works for.

**4. Set the discount**

A percentage off, or a fixed amount off with one amount for each currency the selected products are priced in.

**5. Set the duration**

For subscriptions only: discount the first payment, the first N billing cycles, or every payment.

**6. Set the promotion code and limits**

A code is generated for you; keep it or type your own. Optionally add an expiry date, a total redemption limit, and extra promotion codes.

**7. Create**

The summary on the right shows what the coupon does. Click **Create coupon**.

> [!WARNING]
>
> Only the name can be changed after creation. To change the promotion code, discount, products, expiry or redemption limit, create a new coupon.

### Coupon Fields

| Field | Required | Description |
| - | - | - |
| Name | Yes | Internal name, not shown to customers |
| Products | No | All products by default, or a selection. A product not published to the current environment cannot be selected |
| Type | Yes | Percentage or fixed amount |
| Percent off | For percentage | Above 0 and up to 100, with at most 2 decimals |
| Amount off | For fixed amount | One amount per currency, following the currencies your products are priced in. A currency not listed gets no discount — there is no conversion |
| Duration | Yes | Once (first payment only), multiple billing cycles, or forever. One-time products are always discounted once |
| Promotion code | Yes | 3–32 letters, digits or `-`, case-insensitive. Must not be in use by another active code in this store |
| Expiry date | No | Redeemable until the end of that day in your time zone. When the coupon expires, discounts already applied to subscriptions also end |
| Redemption limit | No | How many times the coupon can be claimed in total, across all of its promotion codes |

> [!NOTE]
>
> A paid trial period uses the discount: a once coupon is used up by the trial, and a multi-cycle coupon counts the trial as its first cycle. Free trials don't use it.

### Adding Promotion Codes While Creating

Switch on **Add more promotion codes** to hand out extra codes for the same coupon right away — up to 20 single codes, each with its own conditions, or a batch generated with a prefix. Every extra code claims the same coupon with the same discount; its uses and expiry cannot exceed the coupon's. You can also add codes later on the coupon page.

## Coupon Details

Click a coupon row to open its details. The panel shows the discount, the default promotion code, the duration, redemptions against the limit, the expiry, the products it applies to, and all of its promotion codes.

![Coupon details](https://mintcdn.com/waffo/fzyQe5Jh5yF_yUiY/images/dashboard/discounts-detail.png?fit=max\&auto=format\&n=fzyQe5Jh5yF_yUiY\&q=85\&s=073f24c5e9fa5a0e15b7d36eb4f4a19f)

From here you can:

* **Rename** the coupon
* **Add promotion code** — a single code, or a batch (see below)
* **Export CSV** of the promotion codes
* **Deactivate** the coupon or one of its promotion codes
* **Copy to live** a test-mode coupon

### Promotion Codes

Whichever of a coupon's codes a customer enters at checkout, they claim that coupon. A promotion code only adds conditions of its own:

| Condition | Description |
| - | - |
| Only specific customers can use it | Customer emails, separated by commas or new lines |
| This code can be used up to N times | Cannot exceed the coupon's limit |
| Each customer can use it up to N times | Lifetime uses per customer |
| This code's expiry date | Cannot be later than the coupon's expiry |
| Minimum order amount | Per currency, before discount and tax. Other currencies have no minimum |

Filter the codes by **All / Active / Deactivated** or search by code. A code can be deactivated on its own; this is permanent, and the code can then be reused by a new promotion code.

> [!NOTE]
>
> A promotion code cannot be added to a coupon that is deactivated, expired, or failed to create.

### Generating Codes in Bulk

In **Add promotion code**, switch to **Generate in bulk** to create up to 500 codes at once, with an optional prefix (up to 12 characters) and the same conditions for every code — for example single-use codes for a newsletter. When they are ready you can copy them all or download them as CSV; the CSV can be exported again from the coupon details at any time.

![Generated promotion codes](https://mintcdn.com/waffo/fzyQe5Jh5yF_yUiY/images/dashboard/discounts-generated.png?fit=max\&auto=format\&n=fzyQe5Jh5yF_yUiY\&q=85\&s=810ffc9166b0e92141b693a93c6c1458)

### Deactivating a Coupon

Deactivating is permanent: the coupon and all of its promotion codes stop working for new orders, and their codes are released for reuse. Discounts already on subscriptions continue until the subscription's next plan change — see [Discounts & Promotions](https://docs.waffo.ai/guides/discounts.md#when-the-discount-ends).

## Copying a Coupon to Live

A coupon created in test mode can be copied to the live environment from its details once your store has passed review. The copy is a new coupon with the same settings and its redemptions start at 0. Optionally copy its active, unexpired promotion codes along with it, with the same conditions.

* Products not yet published to live are left out of the copy; if none of the coupon's products are published, publish them first.
* If the coupon's expiry has already passed, the live coupon gets no expiry, and its expired promotion codes are not copied.
* A code already in use on live stops the copy — deactivate it there first, or copy without promotion codes.

## Next Steps

> **[Discounts & Promotions](https://docs.waffo.ai/guides/discounts.md)**
>
> How codes are checked at checkout and how subscriptions are discounted

> **[Coupon Endpoints](https://docs.waffo.ai/api-reference/endpoints/coupons/overview.md)**
>
> Create coupons and promotion codes from your server


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.