# Listar contestações MED (/docs/conta-digital/endpoints/infractions/get_infractions)

## GET /transactions/infractions

`GET https://api.hub.payzu.com.br/api/v1/transactions/infractions`

Escopo: `INFRACTION_READ`. Devolve as contestações MED da conta, da mais recente para a mais antiga pela data de abertura, paginadas por cursor. A resposta a uma contestação é feita no painel.

### Query params

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `limit` | integer | no | Itens por página, de 1 a 100. — minimum: 1; maximum: 100; default: 20 |
| `cursor` | string | no | `nextCursor` da página anterior. |
| `status` | string | no | Um estado exato. Com `status`, o `open` é ignorado. — `OPEN`, `ACKNOWLEDGED`, `DEFENDED`, `ANSWERED`, `WAITING_PSP`, `WAITING_ADJUSTMENTS`, `CANCELLED`, `CLOSED` |
| `open` | boolean | no | `true` traz só as abertas: todo estado que não é `CLOSED` nem `CANCELLED`. |
| `type` | string | no | Motivo alegado. — `REFUND_REQUEST`, `FRAUD`, `REFUND_CANCELLED` |
| `analysisResult` | string | no | Resultado da análise. — `AGREED`, `DISAGREED` |

### Responses

**200** Página de contestações.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `data` | object[] | yes | Contestações da conta, pela data de abertura, da mais recente para a mais antiga. |
| `data.id` | string | yes | Identificador da contestação na PayZu. |
| `data.protocol` | string | yes | Protocolo da contestação. É o identificador usado na consulta e nos webhooks. |
| `data.type` | string | yes | Motivo alegado. — `REFUND_REQUEST`, `FRAUD`, `REFUND_CANCELLED` |
| `data.status` | string | yes | Etapa da contestação. `OPEN`, `CLOSED` e `CANCELLED` movem dinheiro; as demais são etapas entre os bancos. A cancelada devolve o valor bloqueado inteiro, sem taxa de análise. — `OPEN`, `ACKNOWLEDGED`, `DEFENDED`, `ANSWERED`, `WAITING_PSP`, `WAITING_ADJUSTMENTS`, `CANCELLED`, `CLOSED` |
| `data.reportedBy` | string | yes | Ponta que abriu a contestação. — `DEBITED_PARTICIPANT`, `CREDITED_PARTICIPANT` |
| `data.reportDetails` | string | yes | Relato de quem abriu. |
| `data.analysisResult` | string | null | yes | Resultado, quando `CLOSED`. `AGREED`: procedente, o valor volta ao pagador. `DISAGREED`: improcedente, o valor volta ao saldo disponível, menos a taxa de análise. — `AGREED`, `DISAGREED` |
| `data.analysisDetails` | string | null | yes | Justificativa do resultado. |
| `data.endToEndId` | string | yes | End-to-end do Pix contestado. |
| `data.blockedAmount` | integer | yes | Valor separado do saldo disponível enquanto a análise corre. Em centavos. |
| `data.feeCharged` | integer | yes | Taxa de análise cobrada. `0` até o encerramento. Em centavos. |
| `data.settledAmount` | integer | yes | Quanto voltou ao pagador. `0` até o encerramento. Em centavos. |
| `data.reportedAt` | string | yes | Quando foi aberta. — format: date-time |
| `data.dueAt` | string | null | yes | Prazo para responder. `null` quando não há. — format: date-time |
| `data.closedAt` | string | null | yes | Quando foi encerrada. — format: date-time |
| `data.origin` | object | yes | Operação contestada. |
| `data.origin.kind` | string | yes | `PAYMENT`: cobrança. `DEPOSIT`: Pix recebido sem cobrança. — `PAYMENT`, `DEPOSIT` |
| `data.origin.id` | string | yes | Identificador da cobrança ou do depósito como vem nos webhooks. |
| `data.origin.amount` | integer | yes | Valor recebido. Em centavos. |
| `data.origin.paidAt` | string | null | yes | Quando foi recebido. — format: date-time |
| `data.origin.payerName` | string | null | yes | Numa cobrança, o cliente informado; num depósito, o pagador informado pelo banco. |
| `data.origin.payerDocument` | string | null | yes | CPF mascarado ou CNPJ formatado. |
| `nextCursor` | string | no | Cursor da próxima página. Ausente na última página. |

**400** Requisição inválida.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Descrição em português, pronta para exibir. Pode mudar a qualquer momento. |
| `code` | string | yes | Código estável do erro. É por ele que o seu sistema decide o que fazer. |
| `details` | object | no | Contexto estruturado do erro, quando existe. |

**401** Credencial ausente, inválida ou expirada.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Descrição em português, pronta para exibir. Pode mudar a qualquer momento. |
| `code` | string | yes | Código estável do erro. É por ele que o seu sistema decide o que fazer. |
| `details` | object | no | Contexto estruturado do erro, quando existe. |

**403** Sem permissão: escopo, IP ou operação desabilitada.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Descrição em português, pronta para exibir. Pode mudar a qualquer momento. |
| `code` | string | yes | Código estável do erro. É por ele que o seu sistema decide o que fazer. |
| `details` | object | no | Contexto estruturado do erro, quando existe. |