Extrato
Três leituras do que se moveu: o extrato de um dia encerrado, as transações de agora e o resumo de um período. Todas com escopo ex.extrato.read.
Extrato do dia #
GET /v2/ex/extrato/{data}
Só para dia encerrado. data é o dia contábil em America/Sao_Paulo.
GET /v2/ex/extrato/2026-09-17
→ 200
{
"data": "2026-09-17",
"conciliado": false,
"geradoEm": "2026-09-18T12:00:00.786679Z",
"totais": {
"creditos": "650.00",
"debitos": "0.00",
"emAberto": { "creditos": "0.00", "debitos": "0.00", "quantidade": 0 }
},
"transacoes": [
{
"data": "2026-09-17T13:05:00Z",
"tipo": "DEPOSITO",
"sentido": "CREDITO",
"valor": "150.00",
"referencia": "FIN02J1ZK7M9QW3ERT5TY6UI8O",
"endToEndId": "E12345678202609181200000000000001",
"status": "CREDITADO",
"efetivado": true
},
{
"data": "2026-09-17T13:00:00Z",
"tipo": "DEPOSITO",
"sentido": "CREDITO",
"valor": "500.00",
"referencia": "FIN01J1ZK7M9QW3ERT5TY6UI8O",
"endToEndId": "E12345678202609181200000000000002",
"status": "CREDITADO",
"efetivado": true
}
],
"cursor": { "proximo": "", "temMais": false }
}
| Campo | Tipo | Descrição |
|---|---|---|
totais.creditos, totais.debitos |
string | Soma do dia inteiro, não da página, das linhas daquele dia que já efetivaram. A linha é do dia em que nasceu, menos a do saque e a da devolução que saíram, que são do dia em que o dinheiro saiu: o saque pedido num dia e liquidado no seguinte fica no primeiro, em aberto, enquanto não sai, e passa ao segundo quando sai. Se uma linha efetivar depois no mesmo dia, o total daquele dia muda. O depósito conta no dia em que entrou, também se depois voltar ao pagador ou for retido: a devolução e a retenção são linhas próprias, na data delas. Créditos menos débitos de um dia é quanto o seu disponivel variou nele, fora a parte que o split leva. |
totais.emAberto |
objeto | O que ficou em aberto: saque não liquidado, depósito que volta ao pagador sem ter virado saldo. |
conciliado |
booleano | true quando o dia já foi fechado e conferido do nosso lado. false não invalida as linhas. |
geradoEm |
string | Quando o extrato foi lido. Duas leituras do mesmo dia podem diferir nas linhas em aberto. |
transacoes[].tipo |
string | DEPOSITO, CREDITO_DE_DEPOSITO (o crédito de um depósito que estava em devolução e foi creditado depois, no dia em que virou saldo), SAQUE, PREMIO, COMISSAO (saque de parceiro de split), DEVOLUCAO, DEVOLUCAO_DE_SAQUE (o que o banco do favorecido devolveu de um saque já realizado), BLOQUEIO (saldo retido por contestação, ordem judicial ou análise de risco), DESBLOQUEIO (o retido que voltou ao saldo), TARIFA, PENALIDADE (a penalidade prevista no contrato, lançada pela instituição) ou CREDITO_AVULSO (um crédito lançado pela instituição, como uma bonificação). Um tipo que você não conhece, trate pelo sentido. |
transacoes[].sentido |
string | CREDITO ou DEBITO. |
transacoes[].efetivado |
booleano | true se a linha é dinheiro que mudou de mão. |
transacoes[].referencia |
string | O txid no depósito, credito:<txid> no crédito de um depósito, o idEnvio no saque, endToEndId:id na devolução, idEnvio:rtrId na volta de um saque, tarifa:<meio>:<referência> na tarifa e bloqueio:<tipo>:<id> ou desbloqueio:<tipo>:<id> na retenção, com o tipo dela (MED, JUDICIAL ou CAUTELAR), e lancamento:<id> na penalidade e no crédito da instituição. A retenção inteira está em GET /v2/ex/bloqueios. |
transacoes[].idEnvio |
string | Só nas linhas de um saque que a instituição dividiu em vários Pix (o saque de cada Pix, a tarifa dele e a volta dele): o idEnvio do saque que você pediu. A referência dessas linhas é o idEnvio, um hífen e a parte, como SAQ01J1ZK7M9QW3ERT5TY6UI8O-002. |
transacoes[].parte |
inteiro | Só nessas linhas: a posição do Pix no saque, a mesma de pix[].parte em Consultar saque. |
O extrato do dia pagina como as listagens: passe cursor.proximo em ?cursor= enquanto cursor.temMais for true.
GET /v2/ex/extrato/{data}/arquivo devolve o mesmo dia em CSV, com o SHA-256 do conteúdo no trailer x-conteudo-sha256. Com ?formato=zip, vem um zip com o mesmo CSV dentro, uns cinco vezes menor, e o trailer continua sendo o SHA-256 do CSV. Outro valor em formato é 400 formato_invalido.
Transações de agora #
GET /v2/ex/transacoes
A janela é de instantes RFC 3339: de entra, ate não. Sem um dos dois, ela fica aberta daquele lado. Depósitos aparecem ao serem creditados; saques e devoluções, ao serem pedidos, com o status do momento, e passam ao instante em que o dinheiro saiu quando saem: confira efetivado.
Para listar só um tipo ou uma situação, passe tipo e situacao: cada um aceita vários valores, separados por vírgula. Um valor que não existe é 400.
GET /v2/ex/transacoes?de=2026-09-18T00:00:00Z&ate=2026-09-18T23:59:59Z&limite=2
→ 200
{
"transacoes": [
{
"data": "2026-09-18T12:00:03.779747Z",
"tipo": "DEVOLUCAO",
"sentido": "DEBITO",
"valor": "50.00",
"referencia": "E12345678202609181200000000000001:DEV01J1ZK7M9QW3ERT5TY6UI8O",
"endToEndId": "E12345678202609181200000000000001",
"status": "EM_PROCESSAMENTO",
"efetivado": false
},
{
"data": "2026-09-18T12:00:02.774316Z",
"tipo": "SAQUE",
"sentido": "DEBITO",
"valor": "300.00",
"referencia": "SAQ01J1ZK7M9QW3ERT5TY6UI8O",
"endToEndId": "E12345678202609181200000000000003",
"status": "EM_PROCESSAMENTO",
"efetivado": false
}
],
"cursor": { "proximo": "MTc4OTcyMzIyMzc2NDAzMH5GSU4w...", "temMais": true }
}
Para o mesmo recorte num arquivo, use GET /v2/ex/transacoes/arquivo com de e ate (obrigatórios, até 31 dias), tipo e situacao. Vem um CSV para planilha, separado por ponto e vírgula, com as mesmas linhas e na mesma ordem; com ?formato=zip, o mesmo CSV num zip. O trailer x-linhas diz quantas transações vieram. Ele não leva o SHA-256: para conciliar, use o arquivo do dia encerrado.
Resumo do período #
GET /v2/ex/resumo
Soma os dias encerrados entre de e ate, ambos AAAA-MM-DD, até 366 dias. Se ate inclui o dia corrente, atePedido diz o que foi pedido e ate o que foi somado.
GET /v2/ex/resumo?de=2026-08-19&ate=2026-09-18
→ 200
{
"de": "2026-08-19",
"ate": "2026-09-17",
"atePedido": "2026-09-18",
"geradoEm": "2026-09-18T12:00:00.792600Z",
"totais": {
"creditos": "650.00",
"debitos": "0.00",
"operacoesCredito": 2,
"operacoesDebito": 0,
"ticketMedio": "325.00"
},
"porDia": [
{ "dia": "2026-09-17", "creditos": "650.00", "debitos": "0.00", "operacoes": 2 }
],
"porTipo": [
{ "tipo": "DEPOSITO", "creditos": "650.00", "debitos": "0.00", "operacoes": 2 }
]
}
Dia sem movimento não aparece em porDia. ticketMedio é creditos dividido por operacoesCredito.
Com incluirHoje=true a soma inclui o dia corrente, até o instante da consulta. A resposta traz parcialAte, o instante até onde o dia de hoje foi somado, e ate passa a ser o último dia somado. Esse número muda até a virada do dia.
Achar uma operação por qualquer id #
GET /v2/ex/transacoes/mapear
Recebe em ref um txid, idEnvio, endToEndId, rtrId, a sua referência externa ou o id de uma retenção (o mesmo que GET /v2/ex/bloqueios lista), e diz onde achou. A lista procuradas da resposta é onde o servidor procurou, e inclui domínios internos.
GET /v2/ex/transacoes/mapear?ref=SAQ01J1ZK7M9QW3ERT5TY6UI8O
→ 200
{
"ref": "SAQ01J1ZK7M9QW3ERT5TY6UI8O",
"achados": [
{
"dominio": "payout",
"campo": "id_envio",
"id": "SAQ01J1ZK7M9QW3ERT5TY6UI8O",
"situacao": "EM_PROCESSAMENTO",
"valor": "300.00",
"quando": "2026-09-18T12:00:02Z"
}
],
"procuradas": ["cobranca", "payout", "devolucao", "devolucao_recebida", "contingencia", "devolvido_pela_parceira", "venda_cartao", "boleto", "infracao", "bloqueio"],
"naoProcuradas": []
}
Erros #
| Status | title |
Quando |
|---|---|---|
| 400 | data_invalida |
data fora de AAAA-MM-DD. |
| 400 | periodo_obrigatorio |
Resumo sem de ou sem ate. |
| 400 | periodo_invalido |
de ou ate fora do formato, ou de depois de ate. |
| 400 | ref_obrigatoria |
mapear sem ref. |
| 400 | ref_invalida |
ref com mais de 140 caracteres. |
| 422 | dia_nao_encerrado |
Extrato do dia corrente ou futuro. Use as transações. |
| 422 | periodo_nao_encerrado |
Nenhum dia do período encerrou ainda. |
| 422 | periodo_longo_demais |
Resumo acima de 366 dias. |