Encerrar
Cancelar assinatura
Cancela a assinatura.
DELETE
/v1/subscriptions/:subscriptionIdBase URL Produção:
https://api.validapay.com.brBase URL Sandbox:
https://sandbox.validapay.com.brQuando o cancelamento vale:
- Com período já pago pela frente: o cancelamento fica agendado para o fim desse período (
cancelAtPeriodEnd: true). O cliente continua com acesso até lá e não há novas cobranças. Dá para desfazer com Desfazer cancelamento agendado. - Sem período pago (nunca pagou, venda avulsa ou período já encerrado): cancela na hora. Cobranças em aberto são canceladas.
Use Ver uma assinatura e o campo
cancellationpara saber, antes, qual dos dois vai acontecer.
Authorizations
bearer
Authorization
string obrigatório
Cabeçalho de autenticação Bearer no formato Bearer {{token}} onde {{token}} é o seu token OAuth2.
Escopos requeridos
subscriptions/write
Path Parameters
subscriptionIdstringobrigatórioID da assinatura (ex: sub_xxx) - required
Body
application/json
Content-Type:application/json
JSON
{
"reason": "Cliente pediu o cancelamento"
}Schema
reasonstringopcionalMotivo, gravado no histórico
const url = 'https://sandbox.validapay.com.br/v1/subscriptions/:subscriptionId';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer {{token}}'
},
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));Response Examples
200cancelamento agendado▾
JSON
{
"success": true,
"message": "Cancelamento agendado para o fim do período vigente",
"subscriptionId": "sub_xxx",
"status": "ACTIVE",
"cancelAtPeriodEnd": true,
"immediate": false,
"effectiveAt": "2026-11-10T00:00:00.000Z",
"reason": "Cliente pediu o cancelamento"
}Campos da resposta
successbooleantrue quando o pedido foi registrado
messagestringResultado, em texto
subscriptionIdstringID da assinatura
statusstringSituação atual; muda para CANCELED no fim do período
cancelAtPeriodEndbooleantrue: o cancelamento acontece no fim do período pago
immediatebooleanfalse: cancelamento agendado
effectiveAtstringQuando a assinatura será cancelada
reasonstringMotivo informado
200cancelada na hora▾
JSON
{
"success": true,
"message": "Assinatura cancelada com sucesso",
"subscriptionId": "sub_xxx",
"status": "CANCELED",
"immediate": true,
"effectiveAt": null,
"canceledCycles": 1,
"canceledCharges": 1,
"canceledNotas": 0,
"flaggedNotas": 0,
"reason": "Cancelamento solicitado"
}Campos da resposta
successbooleanmessagestringsubscriptionIdstringstatusstringAssinatura cancelada
immediatebooleantrue: cancelada agora
effectiveAtobjectcanceledCyclesnumberCiclos em aberto que foram cancelados
canceledChargesnumberCobranças em aberto que foram canceladas
canceledNotasnumberNotas fiscais canceladas
flaggedNotasnumberNotas fiscais que precisam de cancelamento manual
reasonstring400já cancelada▾
JSON
{
"error": {
"message": "Assinatura já está cancelada",
"code": "SUBSCRIPTION_ALREADY_CANCELED",
"details": null,
"timestamp": "2026-09-24T12:00:00.000Z"
}
}