---
title: "Crear un cupón"
method: POST
path: "/coupons"
tags: ["coupons"]
---

# Crear un cupón

`POST /coupons`

Crea un nuevo cupón de descuento. Puedes especificar un descuento fijo (`amount_off_in_cents`) o un porcentaje (`percent_off`), pero no ambos.

## Headers

- `X-SECRET-KEY` string, required

## Request body

- object
  - `coupon` CouponsPostRequestBodyContentApplicationJsonSchemaCoupon, required
    - `name` string, required — Nombre o código del cupón
    - `amount_off_in_cents` integer — (Opcional) Descuento fijo en centavos (ej: 1500 = Q15.00). Requiere `currency`.
    - `currency` 'GTQ' | 'USD' — (Requerido si usas `amount_off_in_cents`) Moneda del descuento
    - `percent_off` number, double — (Opcional) Porcentaje de descuento (ej: 10 = 10%)
    - `duration` 'once' | 'forever' — Para suscripciones: `once` aplica solo al primer pago, `forever` aplica a todos los pagos futuros
    - `max_redemptions` integer — (Opcional) Número máximo de usos
    - `automatically_applies` boolean — (Opcional) Si es `true`, el descuento se aplica automáticamente en checkouts de tienda
    - `expires_at` string, date-time — (Opcional) Fecha de expiración del cupón

## Response `201`

Cupón creado exitosamente

- Coupon
  - `id` string — ID único del cupón
  - `name` string — Nombre o código del cupón
  - `discount_mode` 'code' | 'bank' | 'custom_bins' — Tipo de descuento
  - `display_name` string, nullable — Nombre visible para el cliente (usado en modo custom_bins)
  - `amount_off_in_cents` integer, nullable — Descuento fijo en centavos
  - `percent_off` number, double, nullable — Porcentaje de descuento
  - `automatically_applies` boolean — Si el descuento se aplica automáticamente en checkouts de tienda
  - `max_redemptions` integer, nullable — Número máximo de usos
  - `times_redeemed` integer — Número de veces que se ha redimido el descuento
  - `currency` string, nullable — Moneda del descuento fijo
  - `duration` 'once' | 'forever' — Duración del descuento para suscripciones
  - `expires_at` string, date-time, nullable — Fecha de expiración
  - `status` string — Estado del cupón

## Other responses

- `400` — Error de validación

---

[API](https://skmtc.dev/recurrente/apis/referencia-api.md) · [All operations](https://skmtc.dev/recurrente/apis/referencia-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/recurrente/referencia-api/revisions/da12dce50f30/schema)
