Consultar Cash-Out por E2E ID
Consulta uma transação PIX pelo End-to-End ID, o identificador único atribuído pelo BACEN no Sistema de Pagamentos Instantâneos (SPI).
Endpoint
GET /api/external/transactions/e2e/:e2e_idHeaders
| Header | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | String | Sim | ApiKey {client_id}:{client_secret} |
Path Parameters
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
e2e_id | String | Sim | End-to-End ID (formato: E{ISPB}{YYYYMMDDHHmm}{sequencial}) |
Formato do E2E ID
O End-to-End ID segue o padrão BACEN: E + ISPB (8 dígitos) + data/hora (12 dígitos) + sequencial. Exemplo: E37839059202603091530abcdef01. O ISPB 37839059 identifica a Owem Pay.
Exemplo
curl -X GET https://api.owem.com.br/api/external/transactions/e2e/E37839059202603091530abcdef01 \
-H "Authorization: ApiKey $CLIENT_ID:$CLIENT_SECRET"Resposta de Sucesso -- 200
Para uma transação liquidada (tabela transactions):
{
"worked": true,
"data": {
"id": "c7f3a8b12d4e4f6a9c1b3e5f7a9b1d3e",
"transaction_id": "PIXOUT20260309a1b2c3d4e5f6",
"end_to_end_id": "E37839059202603091530abcdef01",
"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": "37839059000188",
"recipient_document": "12345678901",
"payer_ispb": "37839059",
"payer_bank_name": "Owem Pay",
"created_at": "2026-03-09T15:30:00Z",
"completed_at": "2026-03-09T15:30:02Z"
}
}O endpoint GET /transactions/e2e/:e2e_id busca em 3 fontes na seguinte ordem: (1) transactions liquidadas; (2) outbound_requests em andamento (PIX OUT ainda processando); (3) failed_transactions rejeitadas. Não busca em qrcodes — para localizar QRs use GET /transactions/:id com o tx_id do QR, ou GET /transactions/ref/:external_id com o external_id que você atribuiu na criação.
A estrutura da resposta varia conforme a fonte encontrada — há 3 shapes distintos:
- Transação liquidada (
transactionsviaHelpers.format_external_transaction/1): shape do exemplo acima, comstatus: "settled". 18 campos (incluindopayer_document,recipient_document,payer_ispb,payer_bank_name,counterparty_name). Mesmo shape retornado porGET /transactions/tag/:tag. - PIX OUT em andamento (
outbound_requests): shape reduzido, comstatus: "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}. Não incluipayer_document,payer_ispbnemcompleted_at. - Transação rejeitada (
failed_transactions): shape de falha, comstatus: "failed". Adicionareason_code(uppercase BACEN ou lowercase provider),reason_description(em inglês),failure_reason(string bruta),failed_at, erecipient: {name, key}simplificado.
Veja cada shape completo e os valores possíveis do campo status em Consultar Cash-Out por ID -- Valores do campo status. O campo status não tem vocabulário único entre fontes — outbound_requests retorna "processing" enquanto transactions com status interno 2 retorna "pending".
Parser defensivo
Sempre roteie o parser por data.status antes de tentar ler campos específicos:
switch (data.status) {
case "settled": // transações liquidadas — 18 campos
case "processing": // PIX OUT em andamento — sem payer_* nem completed_at
case "failed": // rejeitada — com reason_code / reason_description
case "pending": // raro — transactions.status interno 2
}Todos os valores monetários em unidades base (÷ 10.000 para reais). Campos payer_document, recipient_document, payer_ispb e payer_bank_name aparecem apenas no shape "settled" — são resolvidos a partir do metadata da transação e podem ser null em rows antigas ou quando a contraparte não enviou os dados.
Resposta de Erro -- 404
{
"worked": false,
"detail": "Transacao nao encontrada para E2E ID: E37839059202603091530abcdef01"
}