Pular para o conteúdo principal

Disputas - Mecanismo Especial de Devolução (MED)

Endpoints REST de MED temporariamente offline

Os webhooks de MED estão ativos: você recebe pix.med.opened e pix.med.updated normalmente quando uma disputa é aberta ou muda de status (ver Webhooks).

Todos os endpoints REST do módulo — consulta (GET /v1/accounts/{accountId}/pix/med), contestação (answer, decide, evidence/*) e também a listagem e as estatísticas por tenant (/v1/backoffice/tenants/{tenantId}/meds e /med-stats) — respondem HTTP 503 com errorCode: "service_temporarily_unavailable" durante a migração de liquidante. A documentação abaixo descreve o contrato desses endpoints, que volta a valer quando forem reativados.

O MED (Mecanismo Especial de Devolução) é o processo pelo qual um pagador pode solicitar a devolução de um PIX enviado, geralmente por suspeita de fraude ou erro operacional. Quando um MED é aberto contra sua conta, você tem um prazo para contestar ou aceitar a devolução.

Ciclo de Vida

OPEN -> PENDING_DECISION -> ACCEPTED / REJECTED / CANCELED

O webhook usa um vocabulário fechado de cinco valores em data.status. Status crus do liquidante nunca são propagados: o que não casa com a tabela abaixo vira PENDING_DECISION.

StatusDescrição
OPENMED aberta contra a sua conta. Aguardando resposta dentro do prazo.
PENDING_DECISIONResposta enviada ao banco, aguardando decisão do regulador. Também é o valor usado quando o liquidante manda um status fora do vocabulário.
ACCEPTEDMED aceita. O valor será devolvido ao pagador (total ou parcial).
REJECTEDMED rejeitada. O valor permanece na sua conta.
CANCELEDMED cancelada pelo reclamante ou regulador.

O estado CONTESTED e o histórico detalhado pertencem ao contrato dos endpoints REST (hoje em 503) — não aparecem nos webhooks.

Resultado Final

Quando uma MED é encerrada, o campo result indica o resultado do parceiro bancário:

ResultDescrição
AGREEDBanco concordou com a devolução
DISAGREEDBanco discordou da devolução

Devoluções Parciais

Uma MED pode resultar em múltiplas devoluções parciais. Cada devolução possui um E2E próprio (código D) e valor. O campo refundedAmount é a soma de todas as devoluções realizadas.

CenárioExemplo
Devolução totaloriginalAmount: 1000.00, refundedAmount: 1000.00
Devolução parcialoriginalAmount: 1000.00, refundedAmount: 300.00
Sem devolução (sem saldo)originalAmount: 1000.00, refundedAmount: 0.00

Recebendo MEDs via Webhook

Quando uma MED é aberta, você recebe um webhook pix.med.opened. Quando atualizada, pix.med.updated.

{
"id": "pix-med-opened-204cc938-da3d-4f04-baf3-0b2e6a2f1283",
"type": "pix.med.opened",
"occurredAt": "2026-02-18T19:34:14.000000000Z",
"schemaVersion": "1.0",
"environment": "production",
"tenantId": "tenant-suaempresa",
"accountId": "773107de-...",
"data": {
"medId": "204cc938-da3d-4f04-baf3-0b2e6a2f1283",
"tenantId": "tenant-suaempresa",
"accountId": "773107de-...",
"originalEndToEnd": "E303062942026021812490000005QLMv",
"amount": 1000.00,
"reasonCode": "FRAUD",
"claimMessage": "Fui enganado, não recebi o produto contratado",
"openedAtIso": "2026-02-18T19:34:14.000000000Z",
"status": "OPEN"
}
}

O pix.med.updated traz o mesmo conjunto de campos, sem claimMessage e openedAtIso, com status refletindo a transição.

Histórico de Status

A API mantém um histórico completo de todas as mudanças de status da MED. Cada entrada contém:

{
"history": [
{ "status": "RECEIVED", "rawStatus": "DELIVERED", "timestamp": "2026-02-18T19:34:14Z", "description": "MED received" },
{ "status": "CONTESTED", "rawStatus": "CONTESTED", "timestamp": "2026-02-19T10:00:00Z", "description": "Answer: DISAGREE" },
{ "status": "PENDING_DECISION", "rawStatus": "ACKNOWLEDGED", "timestamp": "2026-02-20T14:00:00Z", "description": "" },
{ "status": "REJECTED", "rawStatus": "REJECTED", "timestamp": "2026-02-23T09:00:00Z", "description": "" }
]
}

Contestando uma MED

A contestação via API (envio de resposta e upload de evidências) usa os endpoints POST /v1/accounts/{accountId}/pix/med/{medId}/answer, /decide e /evidence/* — todos em 503 hoje, conforme o aviso no topo desta página. Enquanto isso, a contestação deve ser feita diretamente no canal do parceiro bancário.

Consulta e listagem de MEDs

Por conta:

GET /v1/accounts/{accountId}/pix/med

Por tenant (backoffice):

GET /v1/backoffice/tenants/{tenantId}/meds

Quando reativadas, retornam as MEDs com histórico completo, refunds e campos de controle (holderAnswerStatus, holderAnswerDeadline, result).

Monitoramento de Taxa de MED

GET /v1/backoffice/tenants/{tenantId}/med-stats?days=30

Retorna estatísticas diárias consolidadas:

CampoDescrição
pixInCountTransações PIX IN naquele dia
pixInAmountValor total de PIX IN
medCountNúmero de MEDs para transações daquele dia
medAmountValor total de MEDs
quantityRatePercentmedCount / pixInCount * 100
amountRatePercentmedAmount / pixInAmount * 100

Faixas de Referência

As faixas abaixo são referência operacional (usadas no painel e no acompanhamento comercial), não um comportamento da API: nenhum código de erro ou bloqueio decorre automaticamente delas. Ações automáticas por taxa são configuradas em Políticas e Regras.

TaxaStatusDescrição
< 0.4%VerdeTaxa saudável
0.4% - 1.0%AmareloAtenção, monitorar
> 1.0%VermelhoTaxa elevada, ações podem ser necessárias

Políticas de MED

Consulte o guia de Políticas e Regras para configurar:

  • Auto-block: Bloquear saldo automaticamente para MEDs acima de um valor.
  • Taxa máxima: Limite de proporção MED/PIX-In com ações automáticas.