Skip to main content
Este guia mostra como conciliar transações Pix entre o Midaz Ledger e os dados de liquidação do BACEN (o Banco Central do Brasil) usando o Matcher. Ele cobre tanto o Pix enviado (saída de caixa) quanto o Pix recebido (entrada de caixa), da configuração à operação diária e ao tratamento de exceções. Ao fim deste guia, você terá um contexto do Matcher que concilia as suas transações Pix com os extratos de liquidação do SPI do BACEN todo dia.

Fluxos de transações Pix


Os dois fluxos abaixo mostram o que o Matcher precisa conciliar em cada lado.

Pix enviado (saída de caixa)

Fluxo de saída de caixa do Pix enviado

Fluxo de saída de caixa: da iniciação pelo cliente, passando pela liquidação no SPI, até a conciliação no Matcher.

  1. Cliente inicia o Pix: o usuário final dispara um pagamento Pix pelo app ou pela API.
  2. Plugin cria a iniciação: o plugin Pix cria um registro de iniciação e resolve a conta de destino por consulta ao DICT.
  3. Plugin processa o pagamento: o plugin debita a conta do cliente no Midaz (transação em status pending) e envia a instrução de pagamento ao SPI.
  4. Liquidação confirmada: o SPI envia um webhook confirmando a liquidação. A transação no Midaz é efetivada.
  5. Matcher concilia: o Matcher compara a transação efetivada no Midaz com a entrada correspondente no extrato de liquidação do SPI do BACEN.

Pix recebido (entrada de caixa)

Fluxo de entrada de caixa do Pix recebido

Fluxo de entrada de caixa: da notificação recebida do SPI, passando pelo crédito no Midaz, até a conciliação no Matcher.

  1. Pix recebido chega: o SPI envia um webhook síncrono com os dados do Pix recebido.
  2. Plugin valida: o plugin Pix valida o payload e aprova a transação.
  3. Transação de crédito criada: o plugin cria uma transação CREDIT no Midaz para a conta do recebedor.
  4. Liquidação confirmada: o webhook de liquidação confirma que a transação é final.
  5. Matcher concilia: o Matcher compara a transação de crédito do Midaz com a entrada correspondente no extrato de liquidação do SPI do BACEN.
Nos dois fluxos, o endToEndId é o identificador único que liga a transação do Midaz ao registro de liquidação do BACEN. Essa é a chave principal da conciliação.

Configuração passo a passo


1

Crie o contexto

Crie um contexto de conciliação para as transações Pix. Use o tipo 1:1 porque cada transação Pix tem exatamente uma entrada de liquidação correspondente no BACEN.
As transações Pix não têm tarifas intermediárias nem liquidações parciais. Um Pix de R150,00noMidazdeveaparecercomoexatamenteR 150,00 no Midaz deve aparecer como exatamente R 150,00 no extrato do BACEN. Defina os dois valores de tolerância como zero. Eles são strings decimais, então passe "0".Definir autoMatchOnUpload como false dá a você o controle de quando a correspondência roda. Esse controle importa quando você precisa das duas fontes ingeridas antes de a execução rodar.
Veja o schema completo da requisição em Criar contexto.
2

Crie as fontes

Cada contexto precisa de duas fontes: uma para as transações do Midaz e uma para o extrato de liquidação do BACEN.Fonte A, Midaz (tipo LEDGER):
LEDGER é a categoria do Matcher para dados internos de ledger. Não é um conector ativo do Midaz. Você exporta as transações Pix do dia a partir do Midaz, incluindo o metadado endToEndId como coluna plana. Depois você sobe a exportação para esta fonte, na mão ou por um pipeline automatizado. Veja Matcher e Midaz para o fluxo de exportação e importação.Fonte B, extrato SPI do BACEN (tipo CUSTOM):
A fonte do BACEN usa o tipo CUSTOM porque você sobe o arquivo de liquidação do SPI na mão ou por um pipeline automatizado todo dia.Cada fonte deve declarar um side (LEFT ou RIGHT). Um contexto concilia a fonte LEFT dele contra a fonte RIGHT dele. Atribua um lado ao Midaz e o outro ao BACEN. Mantenha a atribuição consistente nas duas fontes.
Veja o schema completo da requisição em Criar fonte.
3

Crie os mapas de campo

Os mapas de campo dizem ao Matcher como traduzir os campos de cada fonte para os campos canônicos usados na correspondência.Um mapa de campo é um objeto JSON na forma { "<canonicalKey>": "<sourceColumn>" }. As chaves vêm do vocabulário canônico fechado do Matcher (external_id, amount, currency, date e, opcionais, description, fee_amount, fee_currency). Os valores são os nomes brutos das colunas em cada fonte. As buscas são planas. Um valor de mapeamento deve nomear uma coluna de primeiro nível na linha. Por isso a exportação do Midaz deve carregar endToEndId como uma coluna plana própria (veja Matcher e Midaz — mapeamento de campos personalizado).
external_id é a referência de correspondência entre os lados: o valor que o motor compara entre as duas fontes quando uma regra define matchReference. Mapeie-o para o endToEndId nos dois lados. Não mapeie IDs de linha locais de um lado (o id da transação no Midaz, o id_liquidacao do BACEN) para external_id. Esses valores nunca batem entre as fontes, então a correspondência por referência nunca acharia uma contraparte.
A tabela a seguir mostra como cada campo canônico mapeia para a coluna em cada fonte:Mapa de campo da fonte Midaz:
Mapa de campo da fonte BACEN:
Veja Criar mapa de campo para o schema completo da requisição e Mapeamento de campos para o vocabulário canônico.
4

Crie as regras de correspondência

As regras de correspondência definem como o Matcher compara transações entre fontes. Na conciliação de Pix, duas regras cobrem a grande maioria dos cenários.Regra 1 (correspondência exata por endToEndId, prioridade 1):
Esta regra resolve cerca de 95% dos casos. O endToEndId é único por transação Pix em todo o ecossistema. Uma correspondência por referência, valor, moeda e data dá uma conciliação confirmada com confiança máxima. A regra define caseInsensitive como false porque os valores de endToEndId diferenciam maiúsculas de minúsculas. A regra define referenceMustSet como true, então os dois lados devem carregar o endToEndId antes da comparação. Isso evita falsos positivos apenas por valor e data.Regra 2 (alternativa com tolerância de data, prioridade 51):
Um Pix iniciado às 23:58 pode liquidar no BACEN no dia de calendário seguinte. Esta regra permite uma janela de 1 dia para cobrir cenários de liquidação em D+1. Esta regra depende apenas da correspondência de valor e de moeda. A Regra 1 cuida da comparação do endToEndId.
Veja Criar regra de correspondência para o schema completo da requisição e todos os tipos de regra disponíveis.
5

Ative e agende

Com toda a configuração no lugar, ative o contexto e crie um agendamento diário.Ative o contexto:
Crie um agendamento para rodar diariamente às 07:00 UTC:
Rodar às 07:00 UTC dá margem suficiente para as liquidações em D+1 aparecerem no extrato do BACEN. Também dá tempo de você subir o arquivo diário antes de a execução de correspondência rodar.
Veja Atualizar contexto e Criar agendamento para os schemas completos das requisições.

Operação diária


Depois de configurado, o workflow diário de conciliação segue cinco passos.
1

Suba o extrato do BACEN

Suba o arquivo de liquidação do SPI do dia anterior para a fonte do BACEN. O Matcher interpreta CSV, JSON, XML e outros formatos do catálogo de formatos dele.
Você pode automatizar este passo com um pipeline que busca o arquivo do SPI e o sobe antes da execução de correspondência agendada.
2

Suba a exportação do Midaz

Exporte do Midaz as transações Pix efetivadas do dia anterior, incluindo o metadado endToEndId como coluna plana. Suba a exportação para a fonte Midaz do mesmo jeito. Em geral o mesmo pipeline automatiza este passo. Veja Matcher e Midaz para o fluxo de exportação e importação.
3

O Matcher roda às 07:00 (ou na mão)

A execução agendada roda automaticamente às 07:00 UTC. Para rodar a correspondência na mão, use o endpoint de execução.
Use DRY_RUN primeiro para ver os resultados sem commitá-los. Quando estiver satisfeito, rode de novo com COMMIT:
4

Revise os resultados

Depois que a execução termina, busque os grupos correspondidos para ver os resultados.
Cada grupo mostra a transação do Midaz correspondida e a entrada de liquidação do BACEN correspondente, junto com a regra que as correspondeu e a pontuação de confiança.
5

Resolva as exceções

As transações não conciliadas aparecem como exceções. Elas exigem investigação: uma transação presente em uma fonte mas não na outra, ou uma divergência de valor ou de data além da tolerância configurada.Revise as exceções, determine a causa raiz e resolva-as forçando a correspondência, ignorando ou corrigindo os dados de origem.
Rode sempre um DRY_RUN primeiro ao testar novas regras ou depois de mudanças de configuração. Isso evita que o Matcher comite correspondências indesejadas.

Exemplo prático: um dia de dados


O exemplo a seguir ilustra uma execução completa de conciliação de 17 de março de 2026.

Transações do Midaz (Fonte A)

Extrato SPI do BACEN (Fonte B)

Resultados da correspondência

Análise

  • txn-001 e txn-002: correspondência exata por endToEndId, valor, moeda e data. A Regra 1 resolveu essas correspondências com pontuação de confiança 100.
  • txn-003: Pix iniciado às 23:58, liquidado no BACEN em 2026-03-18. A Regra 2 (DATE_LAG com janela de 1 dia) pareou este com pontuação de confiança 85. Correspondências por defasagem de data nunca são autoconfirmadas. O par vai para a fila de revisão para uma pessoa confirmar.
  • txn-004: presente no Midaz mas ausente no BACEN. Possível falha de liquidação ou timeout do SPI. Investigue o status da transação pelo plugin Pix.
  • liq-8804: presente no BACEN mas ausente no Midaz. Este Pix recebido não chegou ao ledger. Confira a entrega do webhook ou reprocesse a mensagem.

Tratando exceções de Pix


A tabela a seguir cobre os cenários mais comuns de exceção de Pix e as ações recomendadas.

Correspondência forçada

Quando você confirmou que dois registros representam a mesma transação Pix mas o Matcher não conseguiu correspondência automática, use a correspondência forçada.

Ignorar transação

Quando você deve excluir uma transação da conciliação (por exemplo, um lançamento duplicado ou um Pix já estornado), marque-a como ignorada.
Veja Forçar correspondência e Ignorar transação para os schemas completos das requisições.

Devoluções de Pix (refunds)


As devoluções de Pix geram transações reversas que também precisam de conciliação. Quando o plugin Pix processa uma devolução, ele cria uma nova transação no Midaz com:
  • O originalEndToEndId que aponta de volta para a transação Pix original
  • Um novo returnIdentification (rtrId) que identifica a devolução de forma única no SPI
O extrato de liquidação do BACEN inclui as entradas de devolução com os dois identificadores, o que permite ao Matcher conciliá-las com as transações de devolução correspondentes no Midaz. Em volumes baixos de devolução, você pode conciliá-las dentro do mesmo contexto Pix Daily Reconciliation. Em volumes altos, crie um contexto separado dedicado à conciliação de devoluções. Isso simplifica a triagem de exceções e mantém as métricas de devolução isoladas das métricas do fluxo Pix padrão.
Iniciar uma devolução por POST /v1/transfers/{id}/refunds é um endpoint do plugin Pix, não um endpoint do Matcher. O Matcher não inicia transferências nem devoluções. Ele apenas concilia as transações resultantes. Cada devolução carrega o originalEndToEndId e um novo returnIdentification para rastreio ponta a ponta, que o Matcher então usa para corresponder a devolução com o extrato de liquidação do BACEN. Para iniciar devoluções, veja a documentação do plugin Pix.

Boas práticas


O endToEndId é o identificador único do Pix em todo o ecossistema, da instituição que inicia, passando pelo SPI, até a instituição que recebe. Guarde-o nos metadados da transação no Midaz e garanta que o extrato do BACEN o carregue. Sem ele, a conciliação cai para a correspondência por valor e data, que é bem menos confiável.
Transações Pix perto do fim do dia podem liquidar no BACEN em D+1. Agendar o Matcher para 07:00 UTC garante que o extrato do BACEN inclua todas as liquidações do dia anterior antes de a correspondência rodar. Isso elimina falsas exceções causadas por timing.
Ao processar volumes altos de Pix, crie dois contextos separados, um para a saída de caixa e um para a entrada de caixa. Isso simplifica a triagem de exceções, dá métricas mais granulares por fluxo e permite agendamento independente, se for preciso.
Uma conciliação de Pix saudável chega a mais de 99% de taxa de correspondência automática. Se a taxa cai abaixo de 95%, investigue problemas sistêmicos como falhas do plugin, mudanças de formato do BACEN ou metadados faltando nas transações do Midaz.
O Pix não tem tarifas intermediárias, liquidações parciais nem encargos de processamento. Se os valores divergem entre Midaz e BACEN, isso indica um problema real, não arredondamento. Mantenha os dois valores, feeToleranceAbs e feeTolerancePct, em zero.
Rode sempre um DRY_RUN antes do COMMIT, principalmente depois de mudanças de regra ou de mapa de campo. Isso permite revisar os resultados de correspondência e pegar erros de configuração antes de eles afetarem os dados de produção.

Métricas principais


Acompanhe estas métricas para monitorar a saúde do seu processo de conciliação de Pix.
Use os endpoints de dashboard do Matcher para monitorar estas métricas em tempo real. Veja Métricas do dashboard.

Próximos passos


Contextos e fontes

Aprenda a configurar e gerenciar contextos de conciliação e fontes de dados.

Regras de correspondência

Explore todos os tipos de regra disponíveis e as configurações avançadas de correspondência.

Integração com o Midaz

Conheça o mapeamento automático de campos e a fonte de dados do Midaz Ledger.

Resolvendo exceções

Guia detalhado sobre investigar, forçar correspondências e gerenciar exceções de conciliação.