# MED (/en/docs/conta-digital/med)

<QuickLinks>
  <QuickLink href="/docs/conta-digital/endpoints/infractions/get_infractions" title="List MED disputes" method="GET" path="/transactions/infractions" />

  <QuickLink href="/docs/conta-digital/endpoints/infractions/get_infraction" title="Get MED dispute" method="GET" path="/transactions/infractions/{protocol}" />
</QuickLinks>

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.

<Callout type="info">
  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.
</Callout>

## Lifecycle and balance [#lifecycle-and-balance]

<Mermaid
  chart="`
flowchart LR
  A[&#x22;INFRACTION_OPENED&#x22;] --> B[&#x22;Amount blocked&#x22;]
  B --> C{&#x22;Result&#x22;}
  C -->|&#x22;AGREED&#x22;| D[&#x22;Amount goes back to the payer&#x22;]
  C -->|&#x22;DISAGREED&#x22;| E[&#x22;Amount comes back to the balance, minus the fee&#x22;]
  C -->|&#x22;CANCELLED&#x22;| F[&#x22;Amount comes back in full&#x22;]

  style A fill:#f59e0b,stroke:#d97706,color:#ffffff
  style D fill:#ef4444,stroke:#dc2626,color:#ffffff
  style E fill:#14ce71,stroke:#0eb464,color:#ffffff
  style F fill:#14ce71,stroke:#0eb464,color:#ffffff
`"
/>

| Moment                 | Webhook                                                 | Statement line                                                                                                                                                |
| ---------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Opening                | `INFRACTION_OPENED`                                     | `INFRACTION_BLOCK`: the amount leaves the available balance, when `infraction.blocksBalance` is `true` in the [limits](/docs/conta-digital/statement#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 [#list]

[`GET /transactions/infractions`](/docs/conta-digital/endpoints/infractions/get_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](/docs/conta-digital/endpoints/infractions/get_infractions).

## Look up [#look-up]

[`GET /transactions/infractions/{protocol}`](/docs/conta-digital/endpoints/infractions/get_infraction), with the `protocol` that comes in the `INFRACTION_OPENED` webhook.

```json
{
  "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](/docs/conta-digital/endpoints/infractions/get_infraction).