Track the MED disputes opened against the account and the effect of each one on the balance.
MED (Mecanismo Especial de Devolução, the Special Return Mechanism) is the Central Bank process for returning a disputed Pix. The payer's bank opens the dispute against the account that received the money, with a response deadline. Without a response, the amount can go back to the payer, leaving the account balance.
Responding to the dispute requires documents and a decision from the account holder, and it is done in the Digital Account dashboard, before the deadline in dueAt. Through the API, with the INFRACTION_READ scope, you track each dispute.
Lifecycle and balance
| Moment | Webhook | Statement line |
|---|---|---|
| Opening | INFRACTION_OPENED | INFRACTION_BLOCK: the amount leaves the available balance, when infraction.blocksBalance is true in the limits. |
| Deadline approaching | INFRACTION_DEADLINE, when 48, 24 and 6 hours are left | |
Upheld (AGREED) | INFRACTION_CLOSED | INFRACTION_SETTLED: the amount went back to the payer. |
Rejected (DISAGREED) | INFRACTION_CLOSED | INFRACTION_RELEASED: the amount comes back to the balance, minus the analysis fee. |
| Cancelled | INFRACTION_CLOSED with status: CANCELLED | INFRACTION_RELEASED: the amount comes back in full, with no fee. |
While the dispute is not over, a refund of the disputed charge or a return of the disputed deposit is refused with REFUND_INFRACTION_OPEN.
List
GET /transactions/infractions, from newest to oldest by opening date, paginated by cursor.
To track only the ones that are not over yet, filter with open=true: you get all that are neither CLOSED nor CANCELLED. All filters in List MED disputes.
Look up
GET /transactions/infractions/{protocol}, with the protocol that comes in the INFRACTION_OPENED webhook.
{
"id": "cmu6f0a1b000001s6abcd1234",
"protocol": "b1c2d3e4-5f60-4a7b-8c9d-0e1f2a3b4c5d",
"type": "REFUND_REQUEST",
"status": "OPEN",
"reportedBy": "DEBITED_PARTICIPANT",
"reportDetails": "Cliente não reconhece a compra.",
"analysisResult": null,
"analysisDetails": null,
"endToEndId": "E99999999202610051433a1b2c3d4e5f",
"blockedAmount": 1500,
"feeCharged": 0,
"settledAmount": 0,
"reportedAt": "2026-10-06T10:00:00.000Z",
"dueAt": "2026-10-13T10:00:00.000Z",
"closedAt": null,
"origin": {
"kind": "PAYMENT",
"id": "cmu2wbljx0000e8gtlic8q1gi",
"amount": 1500,
"paidAt": "2026-10-05T14:33:10.004Z",
"payerName": "Maria Souza",
"payerDocument": "***.982.247-**"
}
}| Field | Description |
|---|---|
status | OPEN, ACKNOWLEDGED, DEFENDED, ANSWERED, WAITING_PSP, WAITING_ADJUSTMENTS, CANCELLED or CLOSED. Only OPEN, CLOSED and CANCELLED affect the balance; the others are steps between the banks. |
analysisResult | Result, when CLOSED: AGREED (upheld, the amount goes back to the payer) or DISAGREED (rejected, the amount comes back to the balance, minus the analysis fee). |
blockedAmount | Amount set aside from the available balance while the analysis runs. |
feeCharged, settledAmount | Analysis fee charged and amount returned to the payer. 0 until the result. |
origin | The disputed operation. kind is PAYMENT (charge) or DEPOSIT (Pix received without a charge), and id is the same paymentId or depositId as in the webhooks. |
All fields in Get MED dispute.