Skip to main content
Um dispute é uma contestação (chargeback) aberta pelo comprador sobre uma charge — geralmente porque ele não reconhece a cobrança, alega fraude ou diz que não recebeu o produto. O objeto acompanha o ciclo inteiro dessa contestação: desde o alerta inicial, passando pelo prazo pra você enviar a defesa, até a decisão final. Ele sempre aponta de volta pra charge original através do campo charge.

Ciclo de vida

  1. O caso começa em needs_response ou, quando chega como alerta antecipado, em warning_needs_response. Nesse momento, a organização precisa decidir se vai enviar defesa.
  2. Enquanto o caso espera resposta, evidence_details.due_by indica o prazo para anexar evidência e enviar a contestação.
  3. Depois que a evidência é enviada com sucesso, o dispute passa para under_review. Esse status indica que a defesa foi recebida e a decisão final ainda está sendo avaliada.
  4. O desfecho muda o status para won quando a contestação é decidida a favor da sua organização, ou para lost quando é decidida contra.
  5. won e lost são estados finais. Depois de um desses status, o dispute não muda mais.
Existem duas formas de um dispute chegar em lost: a decisão pode vir de fora, através de um evento informando o resultado da análise, ou pode vir de uma ação sua, chamando close pra encerrar o caso sem enviar defesa (mais detalhes na página de close). Fora isso, vale reforçar desde já: não existe um fechamento automático quando o prazo de evidência vence — se você deixar o prazo passar sem enviar nada nem chamar close, o dispute simplesmente continua parado no mesmo status até que a decisão chegue por fora ou você encerre manualmente. Isso é explicado com mais detalhe no campo evidence_details abaixo.

Data Object

Este é o formato completo retornado em get, itens de list, update, close e em data.object dos webhooks charge.dispute.*.
string
Identificador do dispute. Usa o prefixo dp_*.
string
Sempre "dispute".
integer
Valor contestado, em centavos.
string
ID da charge contestada (ch_*).
object
Conteúdo da defesa: texto livre que você mandou explicando o caso (por exemplo, histórico de conversa com o cliente) mais a referência ao arquivo anexado. Quando existe um arquivo de evidência, file aponta pro ID do arquivo (file_*) — o objeto completo do arquivo, incluindo caminho de armazenamento, fica interno e não aparece aqui. Só existe um arquivo “vivo” por dispute: anexar um novo substitui o anterior.
object
Resumo do estado da evidência: o prazo pra envio (due_by), se já existe algo anexado (has_evidence), se esse prazo já passou (past_due) e quantas vezes você já enviou a defesa pra análise (submission_count). Veja o detalhe de cada subcampo abaixo.
boolean
Indica se a charge ainda pode receber refund.
object
Pares chave-valor livres. Quando vazio, retorna {}.
string | null
Motivo normalizado quando disponível.
string
Estado do dispute.