Cupons
Criar Cupom
Cria um cupom de desconto ou de período extra.
/v1/couponshttps://api.validapay.com.brhttps://sandbox.validapay.com.brUm 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.
Authorizations
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
201▾
{
"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"
}400▾
{
"error": {
"message": "Dados inválidos",
"code": "VALIDATION_ERROR",
"details": null,
"timestamp": "2026-09-11T21:00:00.000Z"
}
}