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

# Create a coupon

`POST /api/coupons`

Create a new discount coupon.

## Request body

- CreateCouponDto
  - `code` string, required — Unique coupon code
  - `name` string, required — Display name
  - `description` string
  - `discountType` 'PERCENTAGE' | 'FIXED_AMOUNT', required
  - `discountValue` number, required — Discount value (percentage 0-100 or fixed amount)
  - `currency` string — Currency for FIXED_AMOUNT discounts
  - `maxRedemptions` number — Max number of redemptions (null = unlimited)
  - `appliesToPlanIds` string[] — Plan IDs this coupon applies to (empty = all)
  - `expiresAt` string
  - `createdAt` string — Backdate createdAt (ISO 8601). For data imports.

## Response `201`

Coupon created

- CouponResponse
  - `id` string, required
  - `code` string, required
  - `name` string, required
  - `description` string
  - `discountType` 'PERCENTAGE' | 'FIXED_AMOUNT', required
  - `discountValue` string, required — Discount value as decimal string
  - `currency` string
  - `maxRedemptions` number
  - `redemptionCount` number, required
  - `appliesToPlanIds` string[], required
  - `isActive` boolean, required
  - `expiresAt` string
  - `createdAt` string, required
  - `updatedAt` string, required

## Other responses

- `400` — Invalid coupon data or duplicate code

---

[API](https://skmtc.net/novabilling/apis/novabilling-api.md) · [All operations](https://skmtc.net/novabilling/apis/novabilling-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/novabilling/novabilling-api/revisions/0e449a4e0dc8/schema)
