Cupons
Criar Cupom
Cria um cupom de desconto ou de período extra.
Um cupom PERCENTAGE ou FIXED desconta valor da cobrança. Um cupom EXTRA_PERIOD soma dias ou meses à data da próxima cobrança da assinatura, sem gerar cobrança no período pulado — por exemplo, um cupom de "1 mês grátis" numa assinatura mensal faz a próxima cobrança ocorrer 2 meses depois da anterior, em vez de 1.
O campo maxCycles controla em quantos ciclos recorrentes o benefício se repete: com maxCycles=3, os 3 próximos ciclos recebem o desconto (ou o período extra); a partir do 4º, a cobrança volta ao normal. Deixe vazio para o cupom valer em todos os ciclos, até a assinatura ser cancelada.
EXTRA_PERIOD exige appliesTo=RECURRING — não se aplica a cobranças avulsas.
Case de uso:
Como SaaS, quero oferecer "2 meses grátis" para quem assina um plano anual, sem mexer no valor cobrado em cada ciclo.
/v1/couponshttps://api.validapay.com.brhttps://sandbox.validapay.com.brAuthorizations
Authorization
string obrigatório
Cabeçalho de autenticação Bearer no formato Bearer {{token}} onde {{token}} é o seu token OAuth2.
Escopos requeridos
Body
application/json
{
"code": "BEMVINDO10",
"name": "Cupom de boas-vindas",
"description": "10% na primeira cobrança",
"discountType": "PERCENTAGE",
"discountValue": 10,
"extraPeriodUnit": "MONTHS",
"maxCycles": 3,
"maxRedemptions": 100,
"minAmount": 50.00,
"maxDiscount": 30.00,
"validFrom": "2026-09-01T00:00:00.000Z",
"validUntil": "2026-12-31T23:59:59.000Z",
"productIds": ["price_1788364755079_psuecwgdc"],
"firstTimeOnly": true,
"appliesTo": "RECURRING"
}Schema
codestringobrigatóriodiscountTypestringobrigatórioPERCENTAGEFIXEDEXTRA_PERIODdiscountValuenumberobrigatório0.01namestringopcionalaté 100 caracteresdescriptionstringopcionalaté 255 caracteresextraPeriodUnitstringopcionalDAYSMONTHSmaxCyclesnumberopcional1maxRedemptionsnumberopcional1minAmountnumberopcional0.01maxDiscountnumberopcional0.01validFromstringopcionaldate-timevalidUntilstringopcionaldate-timeproductIdsarray[1]opcionalfirstTimeOnlybooleanopcionalappliesTostringopcionalALLRECURRINGONE_TIMEconst url = 'https://sandbox.validapay.com.br/v1/coupons';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer {{token}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"code": "BEMVINDO10",
"name": "Cupom de boas-vindas",
"description": "10% na primeira cobrança",
"discountType": "PERCENTAGE",
"discountValue": 10,
"extraPeriodUnit": "MONTHS",
"maxCycles": 3,
"maxRedemptions": 100,
"minAmount": 50.00,
"maxDiscount": 30.00,
"validFrom": "2026-09-01T00:00:00.000Z",
"validUntil": "2026-12-31T23:59:59.000Z",
"productIds": ["price_1788364755079_psuecwgdc"],
"firstTimeOnly": true,
"appliesTo": "RECURRING"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));Response Examples
201201▾
{
"couponId": "coup_1789157079333_fq358baak",
"accountId": "4231833",
"code": "BEMVINDO10",
"name": "Cupom de boas-vindas",
"description": "10% na primeira cobrança",
"discountType": "PERCENTAGE",
"discountValue": 10,
"extraPeriodUnit": null,
"maxCycles": 3,
"maxRedemptions": 100,
"currentRedemptions": 12,
"minAmount": 50.0,
"maxDiscount": 30.0,
"validFrom": "2026-09-01T00:00:00.000Z",
"validUntil": "2026-12-31T23:59:59.000Z",
"productIds": [
"price_1788364755079_psuecwgdc"
],
"firstTimeOnly": true,
"appliesTo": "RECURRING",
"status": "ACTIVE",
"createdAt": "2026-09-01T10:00:00.000Z",
"updatedAt": "2026-09-01T10:00:00.000Z"
}400400▾
{
"error": {
"message": "Dados inválidos",
"code": "VALIDATION_ERROR",
"details": null,
"timestamp": "2026-09-11T21:00:00.000Z"
}
}