Cupons

Validar Cupom por ID

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

Authorizations

noauth

noauth

string obrigatório

Path Parameters

couponIdstringobrigatório
Couponid

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

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.

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
amountnumberopcional
Valor do pedido, usado para checar minAmount e calcular o desconto
productIdsarray[1]opcional
Price IDs do pedido, usados para checar restrição de produto
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

200200 vá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
  }
}