Pular para o conteúdo principal

Estornar uma cobrança

Devolve ao pagador o valor integral de uma cobrança confirmada. Vale para assinaturas em qualquer status — inclusive canceladas. É contrato estável: pode basear nele o atendimento de CDC.

POST/api/v1/subscriptions/:id/charges/:chargeId/refund

A requisição não leva corpo.

{
"status": "success",
"data": {
"id": 790,
"subscriptionId": 12,
"status": 3,
"value": 2990,
"amount": 29.9,
"dueDate": "2026-09-09",
"acquirerPaymentId": "0279e54a-88df-4b06-874b-65785c45a19f",
"denialCode": "",
"denialMessage": "",
"attempts": 1,
"nextRetryAt": null,
"paymentTransactionId": 63,
"createdAt": "2026-09-09T19:48:57.304828Z",
"updatedAt": "2026-10-06T14:02:10.5531Z",
"idempotent": false
}
}
SituaçãoHTTPMensagem / corpo
Cobrança CONFIRMED200idempotent: false. Cobrança vai a 3 REFUNDED e charge.refunded é disparado
Cobrança já REFUNDED200idempotent: true. Nenhum novo webhook
Cobrança inexistente ou de outra assinatura404Charge not found
Cobrança PENDING ou DENIED409Charge is not refundable
Assinatura inexistente404Subscription not found
Assinatura de outro lojista403Forbidden
Falha no adquirente502Refund failed. A cobrança continua CONFIRMED — pode repetir
Idempotente, inclusive em paralelo

Repetir a chamada — em sequência ou ao mesmo tempo — nunca estorna duas vezes nem gera dois charge.refunded: só uma chamada aplica o estorno, as demais voltam idempotent: true. Em caso de timeout, pode repetir com segurança.

O estorno não cancela a assinatura. Para encerrar o contrato, chame também POST /cancel (Cancelar assinatura). Na assinatura, lastChargeStatus passa a "REFUNDED". Estorno parcial não é suportado. O prazo para o valor aparecer na fatura do pagador segue as regras do emissor do cartão.