Cobranças
Reemitir cobrança
Reemite uma cobrança que expirou sem pagamento. Um novo Pix ou boleto é emitido com o mesmo valor, cliente e dados da original e com o novo vencimento. A cobrança expirada continua no histórico, ligada à nova pelos campos reissuedFromChargeId e reissuedToChargeId (veja Detalhes da cobrança).
/v1/charges/:chargeId/reissuehttps://api.validapay.com.brhttps://sandbox.validapay.com.brSem dueDate, o novo vencimento é daqui a 7 dias. O prazo para pagar depois do vencimento é o mesmo da cobrança original.
O que pode ser reemitido
- Cobrança avulsa: Pix ou boleto com
statusEXPIRED. - Cobrança de assinatura: só quando a assinatura está
EXPIRED, encerrada por falta de pagamento. Vale para Pix, boleto e cartão. - Cada cobrança é reemitida uma vez. Se a nova também expirar, reemita a nova.
Cobrança de assinatura: a assinatura é reativada
- Todas as cobranças Pix e boleto expiradas do mesmo ciclo são reemitidas juntas, e
chargestraz cada uma delas. - O ciclo e a fatura voltam a aguardar pagamento, com o novo vencimento.
- Itens que tinham sido cancelados porque a cobrança expirou voltam para a assinatura e aparecem em
restoredItems. - A assinatura volta para
ACTIVE. Se a cobrança era a do primeiro ciclo, ela volta paraPENDING: a assinatura ainda aguarda o primeiro pagamento. - São enviados os webhooks
subscription.reactivatedecharge.created, este para cada cobrança nova.
Cartão: nenhuma cobrança nova é criada. A fatura é reaberta e a resposta traz type CARD_COLLECTION_REQUIRED e checkoutUrl, o link para o cliente informar outro cartão e pagar.
Boleto: o boleto antigo não é cancelado. Um boleto pago no último dia pode compensar em até 3 dias úteis, por isso a resposta traz warning. Se o cliente pagar os dois, a devolução de um deles é manual. Enquanto o boleto da assinatura ainda pode ser pago, a reemissão responde 400 com CHARGE_STILL_PAYABLE.
A linha digitável do boleto (payment.boletoUrl) pode vir null e ficar pronta alguns segundos depois. Consulte Detalhes da cobrança com o chargeId novo.
Cobrança de outra conta responde 404 com CHARGE_NOT_FOUND, igual a um ID inexistente.
Case de uso: Como lojista, quero reemitir o Pix vencido de um assinante com nova data, para que ele consiga pagar e a assinatura volte a valer.
Authorizations
Authorization
string obrigatório
Cabeçalho de autenticação Bearer no formato Bearer {{token}} onde {{token}} é o seu token OAuth2.
Escopos requeridos
Path Parameters
chargeIdstringobrigatórioBody
application/json
{
"dueDate": "2026-11-06"
}Schema
dueDatestringopcional^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$const url = 'https://sandbox.validapay.com.br/v1/charges/:chargeId/reissue';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer {{token}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"dueDate": "2026-11-06"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));Response Examples
200Cobrança avulsa▾
{
"chargeId": "cha_1793389356699_1vxrggeo4",
"reissuedFromChargeId": "cha_1790102857277_lgn02g8y3",
"status": "PENDING",
"paymentType": "PIX",
"amount": 100,
"dueDate": "2026-11-06T00:00:00Z",
"expiresAt": "2026-12-07T02:59:59.999Z",
"payment": {
"transactionId": 4000823176,
"emvQrCode": "00020101021226930014br.gov.bcb.pix…",
"dueDate": "2026-11-06"
}
}200Assinatura reativada▾
{
"subscriptionId": "sub_1786116225961_dcsm8gcbd",
"status": "ACTIVE",
"cycleNumber": 2,
"dueDate": "2026-11-06",
"invoiceId": "inv_1787886170440_p1ytajkof",
"charges": [
{
"chargeId": "cha_1793389487033_lqbdqsxci",
"reissuedFromChargeId": "cha_1787886170448_9czoxnbg9",
"status": "AWAITING_PAYMENT",
"paymentType": "BOLETO",
"amount": 100,
"dueDate": "2026-11-06",
"expiresAt": "2026-12-07T02:59:59.999Z",
"payment": {
"transactionId": "9b22cd56-ca19-47f6-b19e-08908158ae9c",
"dueDate": "2026-11-06",
"boletoUrl": "34191090081225054789529988600002216220000001000"
},
"warning": "Um boleto pago no último dia ainda pode compensar em até 3 dias úteis. Se o cliente pagar o antigo e o novo, o estorno de um deles é manual."
}
],
"restoredItems": []
}200Assinatura no cartão▾
{
"subscriptionId": "sub_1790434949828_avjk2oaco",
"status": "PENDING",
"cycleNumber": 1,
"dueDate": "2026-11-06",
"invoiceId": "inv_1790434950984_drr8jcm8h",
"type": "CARD_COLLECTION_REQUIRED",
"checkoutUrl": "https://app.validapay.com.br/fatura/inv_1790434950984_drr8jcm8h"
}400Data inválida▾
{
"error": {
"message": "dueDate deve ser hoje ou uma data futura",
"code": "INVALID_DATA",
"details": [
{
"code": "custom",
"message": "dueDate deve ser hoje ou uma data futura",
"path": [
"dueDate"
]
}
],
"timestamp": "2026-10-30T19:42:41.000Z"
}
}400Cobrança não reemitível▾
{
"error": {
"message": "Só é possível reemitir cobrança PIX ou boleto expirada, ou cartão de assinatura encerrada por falta de pagamento",
"code": "CHARGE_NOT_REISSUABLE",
"details": null,
"timestamp": "2026-10-30T19:42:41.000Z"
}
}400Assinatura não expirada▾
{
"error": {
"message": "A assinatura desta cobrança não está expirada; para mudar o vencimento use a troca de vencimento da assinatura",
"code": "SUBSCRIPTION_NOT_EXPIRED",
"details": null,
"timestamp": "2026-10-30T19:42:41.000Z"
}
}400Ciclo não encerrado▾
{
"error": {
"message": "O ciclo desta cobrança não foi encerrado por falta de pagamento",
"code": "CYCLE_NOT_REACTIVATABLE",
"details": null,
"timestamp": "2026-10-30T19:42:41.000Z"
}
}400Boleto ainda pagável▾
{
"error": {
"message": "Esta cobrança ainda pode ser paga até 30/10/2026; reemita depois disso",
"code": "CHARGE_STILL_PAYABLE",
"details": null,
"timestamp": "2026-10-30T19:42:41.000Z"
}
}404▾
{
"error": {
"message": "Cobrança não encontrada",
"code": "CHARGE_NOT_FOUND",
"details": null,
"timestamp": "2026-10-30T19:42:41.000Z"
}
}409Já reemitida▾
{
"error": {
"message": "Esta cobrança já foi reemitida ou está sendo reemitida",
"code": "CHARGE_ALREADY_REISSUED",
"details": null,
"timestamp": "2026-10-30T19:42:41.000Z"
}
}