# Consultar Cash-Out por E2E ID

Consulta una transaccion PIX por el End-to-End ID, el identificador unico atribuido por el BACEN en el Sistema de Pagos Instantaneos (SPI).

## Endpoint

```
GET /api/external/transactions/e2e/:e2e_id
```

## Headers

| Header | Tipo | Obligatorio | Descripcion |
|--------|------|-------------|-------------|
| `Authorization` | String | Si | `ApiKey {client_id}:{client_secret}` |

## Path Parameters

| Parametro | Tipo | Obligatorio | Descripcion |
|-----------|------|-------------|-------------|
| `e2e_id` | String | Si | End-to-End ID (formato: `E{ISPB}{YYYYMMDDHHmm}{secuencial}`) |

::: tip Formato del E2E ID
El End-to-End ID sigue el estandar BACEN: `E` + ISPB (8 digitos) + fecha/hora (12 digitos) + secuencial. Ejemplo: `E46026562202603091530abcdef01`. El ISPB `46026562` identifica a Monetarie.
:::

## Ejemplo

```bash
curl -X GET https://api.monetarie.com/api/external/transactions/e2e/E46026562202603091530abcdef01 \
  -H "Authorization: ApiKey $CLIENT_ID:$CLIENT_SECRET"
```

## Respuesta de Exito -- 200

Para una transaccion liquidada (tabla `transactions`):

```json
{
  "worked": true,
  "data": {
    "id": "c7f3a8b12d4e4f6a9c1b3e5f7a9b1d3e",
    "transaction_id": "PIXOUT20260309a1b2c3d4e5f6",
    "end_to_end_id": "E46026562202603091530abcdef01",
    "external_id": "order-9876",
    "type": "pix",
    "direction": "outbound",
    "status": "settled",
    "amount": 300000,
    "fee_amount": 350,
    "net_amount": 300350,
    "description": "Pagamento fornecedor",
    "counterparty_name": "Joao Silva",
    "recipient_key": "12345678901",
    "payer_document": "46026562000165",
    "recipient_document": "12345678901",
    "payer_ispb": "46026562",
    "payer_bank_name": "Monetarie",
    "created_at": "2026-03-09T15:30:00Z",
    "completed_at": "2026-03-09T15:30:02Z"
  }
}
```

El endpoint `GET /transactions/e2e/:e2e_id` busca en **3 fuentes** en el siguiente orden: (1) `transactions` liquidadas; (2) `outbound_requests` en curso (PIX OUT aun procesando); (3) `failed_transactions` rechazadas. **No busca en `qrcodes`** - para localizar QRs use `GET /transactions/:id` con el `tx_id` del QR, o `GET /transactions/ref/:external_id` con el `external_id` que usted atribuyo en la creacion.

La estructura de la respuesta varia conforme a la fuente encontrada - hay **3 shapes distintos**:

- **Transaccion liquidada** (`transactions` via `Helpers.format_external_transaction/1`): shape del ejemplo arriba, con `status: "settled"`. 18 campos (incluyendo `payer_document`, `recipient_document`, `payer_ispb`, `payer_bank_name`, `counterparty_name`). Mismo shape retornado por `GET /transactions/tag/:tag`.
- **PIX OUT en curso** (`outbound_requests`): shape reducido, con `status: "processing"`. Campos: `status`, `transaction_id`, `end_to_end_id`, `amount`, `fee_amount`, `net_amount`, `external_id`, `pix_key`, `description`, `type`, `direction: "outbound"`, `payment_status: "processing"`, `started_at`, `recipient: {name, key, key_type}`. **No incluye** `payer_document`, `payer_ispb` ni `completed_at`.
- **Transaccion rechazada** (`failed_transactions`): shape de falla, con `status: "failed"`. Agrega `reason_code` (uppercase BACEN o lowercase provider), `reason_description` (en ingles), `failure_reason` (string bruta), `failed_at`, y `recipient: {name, key}` simplificado.

Vea cada shape completo y los valores posibles del campo `status` en [Consultar Cash-Out por ID -- Valores del campo status](/es/pix-cashout-status#valores-del-campo-status). El campo `status` **no tiene vocabulario unico entre fuentes** - `outbound_requests` retorna `"processing"` mientras `transactions` con status interno 2 retorna `"pending"`.

::: tip Parser defensivo
Siempre enrute el parser por `data.status` **antes** de intentar leer campos especificos:

```javascript
switch (data.status) {
  case "settled":    // transacciones liquidadas - 18 campos
  case "processing": // PIX OUT en curso - sin payer_* ni completed_at
  case "failed":     // rechazada - con reason_code / reason_description
  case "pending":    // raro - transactions.status interno 2
}
```
:::

Todos los valores monetarios en **unidades base** (÷ 10.000 para reales). Campos `payer_document`, `recipient_document`, `payer_ispb` y `payer_bank_name` **aparecen solo en el shape "settled"** - son resueltos a partir del metadata de la transaccion y pueden ser `null` en rows antiguas o cuando la contraparte no envio los datos.

## Respuesta de Error -- 404

```json
{
  "worked": false,
  "detail": "Transacao nao encontrada para E2E ID: E46026562202603091530abcdef01"
}
```
