Infrações e MED
Saiba quando um Pix recebido é contestado, quanto fica bloqueado e como enviar a sua defesa.
Quando o pagador contesta um Pix que você recebeu (Mecanismo Especial de Devolução, MED), o liquidante abre uma infração sobre a transação. A MonkeyPay avisa pelo webhook, bloqueia o valor contestado na carteira e aceita a sua defesa pela API.
1. Receba o aviso
Cadastre a URL infraction na configuração de webhooks (veja o guia Webhooks). Cada abertura ou mudança de estado da infração gera um POST com o corpo da transação e o objeto infraction:
- O corpo não traz o nome do evento. Se a URL
infractionfor a mesma dos outros estados, identifique a infração pela presença do objetoinfraction. statusno nível raiz é o estado da transação; o da infração está eminfraction.status.- Guarde
infraction.id: ele é usado na consulta e na defesa. reportedBy,analysisResulteanalysisDetailsrepetem o que o liquidante informou e podem virnull.
2. Entenda o bloqueio
Ao abrir a infração, infraction.amount fica bloqueado no saldo da carteira. Esse valor pode ser menor que o da transação (contestação parcial). O desfecho decide o que acontece com ele:
infraction.status | Saldo | Transação |
|---|---|---|
approved | Valor bloqueado é debitado e devolvido ao pagador | Passa a infraction |
rejected, cancelled | Valor é liberado | Mantém o estado |
closed | Não há movimentação automática | Mantém o estado |
Estados intermediários (waiting_psp, open, acknowledged, analysing, defended, answered, waiting_adjustments) mantêm o bloqueio.
Se a infração chegar a
closede o valor seguir bloqueado, fale com o suporte informando oinfraction.id.
Tipos (infraction.type): refund_request (pedido de devolução), fraud (suspeita de fraude) e refund_cancelled (pedido de devolução cancelado).
3. Consulte a infração
GET /resource/infractions lista as infrações da organização do token e das suborganizações vinculadas, com paginação. A empresa-mãe pode consultar os casos das suas subempresas; a credencial de uma subempresa não alcança os casos da mãe ou de uma empresa irmã. Use organizationId para filtrar uma organização dentro do seu alcance.
Devolve a infração com transactionId, externalId, walletId, accountId, status, type, amount, reason, createdAt e updatedAt. account traz id, bankCode, bankIspb, bankName, agency, accountNumber, holder, type e status, ou vem null; pixTransaction traz só endToEnd, ou vem null. O detalhe não devolve o documento do titular da conta nem os dados de pagador e recebedor do Pix. Infração fora do alcance da credencial responde 404.
4. Envie a defesa
A defesa é enviada uma única vez por infração, em multipart/form-data:
| Campo | Obrigatório | Regra |
|---|---|---|
infractionId | sim | infraction.id recebido no webhook |
defense | não | Texto da defesa |
attachments | sim | De 1 a 10 arquivos, até 10 MiB (10.485.760 bytes) cada |
A resposta 201 confirma o registro da defesa e traz a mediação em data, com id, status (pending) e os links temporários dos anexos. Ela não confirma recebimento ou decisão do liquidante.
| Status | Motivo |
|---|---|
400 | Anexo ausente, fora dos limites ou com tipo não aceito; campo de arquivo diferente de attachments; ou o liquidante da transação não aceita defesa pela API |
404 | Infração inexistente ou de outra organização |
409 | Já existe defesa para essa infração |
Consulte o estado registrado por GET /resource/mediations/{mediationId}. GET /resource/mediations lista as mediações da organização do token e das suborganizações vinculadas. Mudanças em infraction.status também podem chegar pelo webhook, mas não devem ser interpretadas como confirmação de envio ou decisão sobre a defesa. Uma atualização da mediação depende do processamento das informações do liquidante.
Permissões
A consulta da infração exige o escopo monkeypay:infractions:read; enviar a defesa exige monkeypay:mediations:write, e acompanhá-la, monkeypay:mediations:read. Resposta 403 indica que a sua credencial não tem esses escopos: peça a habilitação ao suporte.