SelectwinSelectwin

Cupons - Criar

POST /v1/coupons

Cria um novo cupom de desconto com regras de aplicação, validade e limites.

Requisição

Shell
curl -X POST "https://api.selectwin.io/v1/coupons" \
  -H "SelectKey: sk_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Black Friday 25%",
    "code": "BLACKFRIDAY25",
    "type": "percentage",
    "value": 25,
    "enabled": true,
    "minCartAmount": 10000,
    "usageLimit": 100,
    "limitOneUsePerCustomer": true,
    "initDate": "2026-04-01T00:00:00Z",
    "endDate": "2026-04-30T23:59:59Z"
  }'

Campos do corpo

CampoTipoObrig.Descrição
namestring (1–80)simNome descritivo do cupom.
codestring (1–50)simCódigo aplicado pelo cliente (único por empresa).
typeenumsimflat (valor fixo em reais) ou percentage (taxa 0–100).
valuenumbersimDesconto. Se percentage: 0–100. Se flat: valor em reais (decimal, ex.: 12.30).
enabledbooleansimCupom ativo.
minCartAmount / maxCartAmountnumber (centavos)nãoFaixa de valor do carrinho em centavos.
minCartItems / maxCartItemsnumber (int)nãoFaixa de quantidade de itens.
usageLimitnumber (int)nãoLimite total de usos.
usageQuantitynumber (int)nãoQuantas vezes cada cliente pode usar o cupom (0 = sem limite por cliente). Com limitOneUsePerCustomer: true, vale 1. Não é contador — quantas vezes o cupom já foi usado vem em redemptionsCount, na leitura.
limitOneUsePerCustomerbooleannãoRestringe a 1 uso por cliente.
isCumulativebooleannãoPermite acumular com outros descontos. Default false.
initDate / endDatedatetime ISO 8601nãoJanela de validade.
allowedItemIdsarray de ids de variante (var_…, ≤ 1000)nãoRestringe a variantes específicas — o cupom só vale com uma delas no carrinho, e só desconta esses itens. Cada id precisa ser uma variante da sua conta, no mesmo ambiente do cupom; um id de produto (prd_…) ou de outra conta volta 400 invalidParameters no campo allowedItemIds[i] (ver Visão Geral).
allowedCustomerIdsarray de cus_* (≤ 1000)nãoRestringe a clientes específicos.
scopeenumnãofirstCharge (default) ou recurring.
recurringCyclesnumber (1–999) | nullnãoQuando scope=recurring: máximo de ciclos (null = todos).

Resposta - 201 Created

JSON
{
  "id": "dis_01hqzvabc",
  "name": "Black Friday 25%",
  "code": "BLACKFRIDAY25",
  "type": "percentage",
  "value": 25,
  "enabled": true,
  "minCartAmount": 10000,
  "maxCartAmount": null,
  "minCartItems": null,
  "maxCartItems": null,
  "usageLimit": 100,
  "usageQuantity": 0,
  "redemptionsCount": 0,
  "limitOneUsePerCustomer": true,
  "isCumulative": false,
  "initDate": "2026-04-01T00:00:00.000Z",
  "endDate": "2026-04-30T23:59:59.000Z",
  "allowedItemIds": null,
  "allowedCustomerIds": null,
  "scope": "firstCharge",
  "recurringCycles": null,
  "createdAt": "2026-04-12T17:56:33.000Z",
  "updatedAt": "2026-04-12T17:56:33.000Z"
}

Nota: Root level, sem merchant ou _links.

Atributos da Resposta

AtributoTipoDescrição
idstringpublicId dis_* (ou coup_* para legados).
namestring | nullNome descritivo.
codestring | nullCódigo para aplicação.
typestringflat ou percentage.
valuenumberDesconto: 0–100 se percentage; reais (decimal) se flat.
enabledbooleanAtivo.
minCartAmount / maxCartAmountnumber | nullFaixa de valor do carrinho (centavos).
minCartItems / maxCartItemsnumber | nullFaixa de quantidade de itens.
usageLimitnumber | nullLimite total de usos.
usageQuantitynumber | nullLimite de usos por cliente (0 = sem limite). Não é contador.
redemptionsCountnumberQuantas vezes o cupom já foi usado (resgates em andamento e confirmados) — a mesma contagem que o usageLimit barra. Esgotado quando usageLimit > 0 e redemptionsCount >= usageLimit.
limitOneUsePerCustomerbooleanUma vez por cliente.
isCumulativebooleanAcumulável.
initDate / endDatestring | nullValidade (ISO 8601).
allowedItemIds / allowedCustomerIdsarray | nullRestrições.
scopestringfirstCharge ou recurring.
recurringCyclesnumber | nullMáx. de ciclos quando scope=recurring.
createdAt / updatedAtstringTimestamps ISO 8601.

Respostas de Erro

error.codeHTTPQuando
couponCodeConflict409Já existe um cupom com este code.

Erros de validação do corpo retornam 400 (campos inválidos) ou 422 (ex.: percentage > 100).

Melhores Práticas

  • Use codes únicos e memoráveis.
  • Defina datas de validade (initDate/endDate).
  • Acompanhe redemptionsCount nas leituras para saber quando o cupom vai esgotar.

Atualizado em 21 de outubro de 2026

Preferências de cookies

Hoje o site usa só cookies essenciais: nenhuma ferramenta de medição ou de anúncios está ligada, e nada é compartilhado com terceiros. Se isso mudar, você decide aqui antes de qualquer coisa ser carregada.

  • Mantêm o site funcionando: segurança, a sua escolha sobre cookies e preferências como a versão da documentação. Não dependem de consentimento.

    Sempre ativos