Disputas de Crédito
Pré-requisitos de acesso
- Permissão (módulo):
creditDispute(abrir/atualizar disputas). - Licença/Feature:
CREDIT_INVESTMENTShabilitada na licença do tenant (Vault). - Contêiner do menu: TOKENIZAÇÃO → grupo Crédito Tokenizado
O que é / quando usar
A tela de Disputas registra e resolve contestações vinculadas a uma Cobrança — por exemplo, o sacado alega que já pagou, que a cobrança é fraudulenta ou duplicada. Cada disputa tem tipo, motivo, quem abriu, status de andamento e, na resolução, quem resolveu e as notas.
Use esta tela para abrir uma disputa contra uma cobrança específica e para atualizar/resolver disputas existentes (em análise, resolvida válida, resolvida inválida).
Pré-condições
- Permissão:
creditDispute(permissão dupla — enum CPM + módulo dinâmico no DB). - Licença/Feature:
CREDIT_INVESTMENTShabilitada. Sem ela o grupo nem aparece no menu. - Dependências de outras telas: é obrigatório selecionar uma Cobrança existente (Cobranças) — a disputa é sempre vinculada por
chargeId.
Passo a passo
- Acesse o menu Crédito Tokenizado → Disputas.
- Pesquise e selecione uma Cobrança (a busca filtra por código de referência/ID).
- As disputas daquela cobrança são carregadas.
- Para abrir uma nova: escolha o Tipo e descreva o Motivo, depois Criar disputa (confirma no bottom-sheet).
- Para tratar uma existente: ⋮ → Atualizar abre o diálogo para mudar o Status e registrar Notas de resolução.
Filtros e colunas
| Filtro/Coluna | O que mostra | Origem do dado |
|---|---|---|
| Cobrança (seletor) | Cobrança selecionada para listar suas disputas | busca sobre getCharges(); obrigatório |
| Cobrança (coluna) | Código/ID da cobrança | Dispute.chargeId (resolvido via chargeMap) |
| Tipo | DEBTOR_CLAIM, FRAUD, DUPLICATE, OTHER | Dispute.disputeType |
| Status | Andamento: UNDER_REVIEW, RESOLVED_VALID, RESOLVED_INVALID (entre outros do backend) | Dispute.status |
| Aberta em | Data de abertura | Dispute.openedAt |
| Resolvida em | Data de resolução | Dispute.resolvedAt |
Campos (abertura de disputa)
| Campo | O que é | Obrigatório? | Efeito no sistema/backend |
|---|---|---|---|
| Tipo | Natureza da contestação | Sim | Gravado em disputeType; default DEBTOR_CLAIM. |
| Motivo | Texto livre descrevendo a disputa | Não | Gravado em disputeReason. |
| Aberta por | Operador que abriu | Automático | openedBy = ID do operador logado (ou system). |
Atualização (diálogo)
| Campo | O que é | Obrigatório? | Efeito no sistema/backend |
|---|---|---|---|
| Status | UNDER_REVIEW / RESOLVED_VALID / RESOLVED_INVALID | Sim | updateDispute(id, { status }); sem status a atualização é barrada. |
| Notas de resolução | Justificativa da decisão | Não | Gravado em resolutionNotes; resolvedBy = operador logado. |
Ações e modais
- Selecionar cobrança / Limpar: define o
chargeIdque filtra/abre disputas. - Criar disputa:
createDispute(chargeId, { disputeType, disputeReason, openedBy })após confirmação. Exige cobrança selecionada. - Atualizar (diálogo):
updateDispute(id, { status, resolutionNotes, resolvedBy }); resolver comoRESOLVED_VALID/RESOLVED_INVALIDencerra a disputa.
Abrir/resolver disputas pode disparar step-up (senha + MFA, X-Step-Up-Token) conforme o ambiente.
Regras de negócio / cuidados
Atenção
- Cobrança obrigatória. Disputa é sempre por cobrança; sem selecioná-la, a tela bloqueia a criação/listagem.
- Resolver é decisão de mérito.
RESOLVED_VALID(a contestação procede) vsRESOLVED_INVALID(improcede) tem efeitos distintos a jusante — registre as notas de resolução para auditoria. - Resolução válida pode disparar recompra/ajuste. Uma disputa válida de fraude/duplicidade frequentemente leva a uma Recompra ou cancelamento do deal.