Cupons
Validar Cupom
/v1/coupons/validatehttps://api.validapay.com.brhttps://sandbox.validapay.com.brAuthorizations
noauth
string obrigatório
Endpoint público, sem autenticação — pensado para ser chamado do frontend do próprio cliente para validar um código de cupom antes de aplicá-lo numa cobrança ou checkout.
Sempre responde 200. Quando o cupom não é válido, valid=false e reason traz o motivo (COUPON_NOT_FOUND, COUPON_INACTIVE, COUPON_NOT_STARTED, COUPON_EXPIRED, COUPON_EXHAUSTED, MIN_AMOUNT_NOT_MET, PRODUCT_NOT_ELIGIBLE, COUPON_NOT_APPLICABLE, COUPON_ALREADY_USED).
Quando válido, devolve os dados do cupom necessários para calcular o efeito no checkout: para discountType=PERCENTAGE ou FIXED, use discountValue (e maxDiscount) para calcular o desconto. Para discountType=EXTRA_PERIOD, não há desconto a aplicar no valor — mostre uma mensagem como "+N dia(s)/mês(es) grátis" e deixe o efeito para a próxima cobrança.
Body
application/json
{
"code": "BEMVINDO10",
"amount": 199.90,
"productIds": ["price_1788364755079_psuecwgdc"],
"chargeType": "RECURRING",
"customerDocument": "12345678901"
}Schema
codestringobrigatórioamountnumberopcionalproductIdsarray[1]opcionalchargeTypestringopcionalRECURRINGONE_TIMEcustomerDocumentstringopcionalconst url = 'https://sandbox.validapay.com.br/v1/coupons/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▾
{
"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
}
}200200 inválido▾
{
"valid": false,
"reason": "COUPON_EXPIRED"
}