Chargebacks
Enviar defesa
Envia a defesa do chargeback: o texto em description e os anexos já enviados por POST /v1/disputes/{caseId}/evidence/files. O envio é único — depois dele a defesa não aceita mais anexos nem alterações.
POST
/v1/disputes/:caseId/evidenceBase URL Produção:
https://api.validapay.com.brBase URL Sandbox:
https://sandbox.validapay.com.br- Sem
attachmentIds, vão todos os anexos do caso. Com a lista, só os escolhidos; os demais saem da defesa. IDs que não são anexos do caso são ignorados. - É preciso ao menos um anexo.
A resposta traz evidence.status: SUBMITTED e evidence.submission.status: PENDING. Acompanhe o andamento em GET /v1/disputes/{caseId} e o desfecho em status do chargeback.
Case de uso: Como lojista, quero enviar a defesa com os comprovantes, para contestar um chargeback de um pedido entregue.
Escopos requeridos
charges/write
Path Parameters
caseIdstringobrigatórioIdentificador do chargeback (`caseId`), devolvido na listagem
Body
application/json
Content-Type:application/json
JSON
{
"description": "Produto entregue em 02/10/2026, conforme comprovante assinado pelo comprador.",
"attachmentIds": [
"evd_1790598765432_r7t2n5vbc"
]
}Schema
descriptionstringobrigatórioTexto da defesa
attachmentIdsarray[1]opcionalfileId dos anexos que vão na defesa. Sem o campo, vão todos
Query Parameters
typeobrigatóriosempre CHARGEBACK nesta seção
CHARGEBACK
const url = 'https://sandbox.validapay.com.br/v1/disputes/:caseId/evidence?type=CHARGEBACK';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"description": "Produto entregue em 02/10/2026, conforme comprovante assinado pelo comprador.",
"attachmentIds": [
"evd_1790598765432_r7t2n5vbc"
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));Response Examples
200Defesa enviada▾
JSON
{
"caseId": "cbk_1790512345678_k3m9q2xwz",
"type": "CHARGEBACK",
"evidence": {
"description": "Produto entregue em 02/10/2026, conforme comprovante assinado pelo comprador.",
"status": "SUBMITTED",
"submittedAt": "2026-10-21T10:15:27.000Z",
"attachments": [
{
"fileId": "evd_1790598765432_r7t2n5vbc",
"fileName": "comprovante-entrega.pdf",
"contentType": "application/pdf",
"size": 184320,
"uploadedAt": "2026-10-21T10:12:03.000Z"
}
],
"submission": {
"status": "PENDING",
"sentAt": null,
"protocol": null
}
}
}400Sem descrição▾
JSON
{
"error": {
"message": "Descrição da defesa é obrigatória",
"code": "EVIDENCE_DESCRIPTION_REQUIRED",
"details": null,
"timestamp": "2026-10-28T14:20:00.000Z"
}
}400Sem anexo▾
JSON
{
"error": {
"message": "Pelo menos um anexo é obrigatório",
"code": "EVIDENCE_ATTACHMENT_REQUIRED",
"details": null,
"timestamp": "2026-10-28T14:20:00.000Z"
}
}400Defesa bloqueada▾
JSON
{
"error": {
"message": "Caso encerrado ou defesa já enviada",
"code": "EVIDENCE_CASE_LOCKED",
"details": null,
"timestamp": "2026-10-28T14:20:00.000Z"
}
}404Chargeback não encontrado▾
JSON
{
"error": {
"message": "Caso de chargeback não encontrado",
"code": "CHARGEBACK_CASE_NOT_FOUND",
"details": null,
"timestamp": "2026-10-28T14:20:00.000Z"
}
}