Cupons

Validar Cupom por ID

Endpoint público, sem autenticação — mesmo comportamento de Validar Cupom, mas com o couponId no caminho em vez de code no body.

POST/v1/coupons/:couponId/validate
Base URL Produção:https://api.validapay.com.br
Base URL Sandbox:https://sandbox.validapay.com.br

IMPORTANTE: o código do cupom continua sendo lido de code no corpo da requisição; o couponId do caminho não é usado para buscar o cupom. Prefira Validar Cupom (POST /v1/coupons/validate) para novas integrações.

Authorizations

noauth

noauth

string obrigatório

Path Parameters

couponIdstringobrigatório
Couponid

Body

application/json

Content-Type:application/json
JSON
{
  "code": "BEMVINDO10",
  "amount": 199.90,
  "productIds": ["price_1788364755079_psuecwgdc"],
  "chargeType": "RECURRING",
  "customerDocument": "12345678901"
}

Schema

codestringobrigatório
Código digitado pelo cliente
productIdsarray[1]obrigatório
Price IDs do pedido. O primeiro identifica a conta dona do cupom e é usado na restrição de produto; sem ele o cupom não é encontrado
amountnumberopcional
Valor do pedido, usado para checar minAmount e calcular o desconto
chargeTypestringopcional
Tipo da cobrança sendo montada (default RECURRING)
Valores aceitos:RECURRINGONE_TIME
customerDocumentstringopcional
CPF/CNPJ do cliente, usado para checar firstTimeOnly
const url = 'https://sandbox.validapay.com.br/v1/coupons/:couponId/validate';

const options = {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
  "code": "BEMVINDO10",
  "amount": 199.90,
  "productIds": ["price_1788364755079_psuecwgdc"],
  "chargeType": "RECURRING",
  "customerDocument": "12345678901"
})
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));

Response Examples

200válido▾
JSON
{
  "valid": true,
  "coupon": {
    "code": "BEMVINDO10",
    "name": "Cupom de boas-vindas",
    "description": "10% na primeira cobrança",
    "discountType": "PERCENTAGE",
    "discountValue": 10,
    "maxCycles": 3,
    "maxDiscount": 30.0,
    "validUntil": "2026-12-31T23:59:59.000Z",
    "appliesTo": "RECURRING",
    "firstTimeOnly": true
  }
}