dispute é uma disputa (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
disputa: 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
- O caso começa em
needs_responseou, quando chega como alerta antecipado, emwarning_needs_response. Nesse momento, a organização precisa decidir se vai enviar defesa. - Enquanto o caso espera resposta,
evidence_details.due_byindica o prazo para montar e enviar a contestação — 6 dias corridos a partir da criação. Até lá você pode preencher, editar e limpar os campos deevidence(arquivos e textos) quantas vezes precisar; depois do prazo, essas ações são recusadas. - Depois que a defesa é enviada com sucesso — por você ou automaticamente —, o
dispute passa para
under_review. Esse status indica que a defesa foi recebida e a decisão final ainda está sendo avaliada. O envio é único: o caso não aceita novo envio eevidencenão aceita mais alteração. - O desfecho muda o
statusparawonquando a disputa é decidida a favor da sua organização, ou paralostquando é decidida contra. wonelostsão estados finais. Depois de um desses status, o dispute não muda mais.
lost: a decisão pode vir de
fora, através de um evento informando o resultado da análise; pode vir de uma
ação sua, chamando close pra encerrar o caso sem defender (mais detalhes na
página de close); ou pode acontecer automaticamente — se o prazo de
evidência vence sem nenhum campo de arquivo de evidence preenchido, o
dispute é encerrado como lost no momento do ajuste financeiro do valor
contestado, e você recebe charge.dispute.closed. Quando o prazo vence com
pelo menos um campo de arquivo preenchido e a defesa ainda não enviada, o
desfecho é outro: a Chargefy envia a defesa automaticamente, e o dispute segue
para under_review como num envio manual. Quando a defesa foi enviada, o
dispute permanece em under_review até a decisão final da análise, mesmo que
o ajuste financeiro aconteça no meio do caminho.
Data Object
Este é o formato completo retornado emget, 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, com um campo nomeado para cada tipo de evidência. O hash tem
sempre as mesmas 27 chaves, em ordem alfabética, com
null nas que não
foram preenchidas. Campos de texto recebem string livre; campos de
arquivo recebem o ID de um file (file_*) enviado com
purpose=dispute_evidence — veja Criar arquivo.Preencha, edite e limpe os campos com
Atualizar disputa: o merge é por campo, e
string vazia ("") limpa um campo — de texto ou de arquivo. Depois do envio
da defesa, evidence fica somente leitura e permanece no objeto como
histórico.object
Resumo do estado da evidência: o prazo pra envio (
due_by), se já existe
algum campo preenchido (has_evidence), se esse prazo já passou (past_due)
e se a defesa já foi enviada 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.

