Pré-requisitos
Antes de começar, confirme que você tem:
- O seu ISPB (Identificador do Sistema de Pagamentos Brasileiro): o identificador de 8 caracteres derivado do CNPJ da sua instituição
- Acesso às suas instâncias do Midaz e do CRM (com deploy feito e rodando)
- Acesso aos serviços do provedor BTG (o BTG fornece as credenciais)
O plugin usa o
PIX_ISPB para gerar e verificar os IDs end-to-end. Já as transferências intra-PSP (P2P) ele detecta pela conta alias do pagador: veja Transferências intra-PSP.1. Licença
O plugin exige uma licença válida para operar. A Lerian fornece a chave de licença durante o onboarding.
2. Access Manager (opcional)
O Access Manager cuida da autenticação do plugin. Quando está habilitado, ele valida as requisições recebidas antes de elas chegarem à API do plugin.
PLUGIN_AUTH_ENABLED=true, o plugin valida o header Authorization de cada requisição para garantir que:
- O token pertence a um usuário ou aplicação autorizada
- O token dá acesso ao endpoint e ao método da API solicitados
As credenciais de cliente (
CLIENT_ID / CLIENT_SECRET) do Midaz e do CRM são obrigatórias mesmo quando PLUGIN_AUTH_ENABLED=false. As credenciais de tarifas são obrigatórias quando CASHIN_FEE_CALCULATION_TYPE=segment.3. Midaz
O Midaz é o ledger central de todas as transações Pix que o plugin processa. O plugin lança cada operação de cash-in, cash-out e devolução no Midaz como uma transação por partidas dobradas.
Conexão
Requisitos de ativo
Configure um ativo na sua organização e no seu ledger com estas propriedades:
Vincule todas as contas ao seu ledger usando o ativo
BRL. O plugin rejeita operações em contas que não seguem essa configuração.
Configuração das contas
Antes de usar o plugin, crie uma conta no Midaz para cada cliente sob o seu ISPB. Use o endpoint Create an Account para criar as contas. Cada conta deve:
- Pertencer à organização e ao ledger que você configurou
- Usar o ativo
BRL
Header X-Account-Id
Muitas operações Pix exigem o header
X-Account-Id para identificar qual conta executa a ação. Esse ID corresponde ao ID da conta no ledger do Midaz.
Quando você chama um endpoint do plugin, o valor de X-Account-Id diz ao plugin:
- Qual conta usar nas operações do ledger
- Quais dados de cliente buscar no CRM
- Qual saldo validar e atualizar
Como o plugin usa o ID da conta
O plugin usa o ID da conta de formas diferentes conforme o tipo de operação:Conformidade das contas
O plugin verifica o status da conta no Midaz. Ele recusa uma iniciação de transferência, um cash-out ou uma devolução de uma conta
BLOCKED. Ele também recusa um Pix recebido para uma conta que não está ACTIVE.
Para impedir liquidações Pix em uma conta específica, bloqueie a conta direto no Midaz. O plugin recebe uma rejeição quando tenta lançar a transação.
Documentação relacionada:
4. CRM
O CRM guarda as informações do cliente (titular) e as contas bancárias associadas a ele. Cada conta do Midaz deve ter um titular e uma conta alias correspondentes no CRM para executar operações Pix. O plugin consulta os dados do CRM para:
- Registrar e validar chaves Pix
- Montar as mensagens de pagamento para o BACEN
- Autorizar as transações recebidas
- Processar os workflows de devolução e de disputa
Conexão
Titulares
Os dados do titular representam o cliente dono da conta. Crie cada titular no CRM antes de executar qualquer operação Pix para esse cliente.
Campos obrigatórios
Campos opcionais
Documentação relacionada: Criar um titular
Contas alias
As contas alias ligam uma conta do Midaz aos dados bancários dela. Cada conta alias deve incluir as informações bancárias que o ecossistema Pix exige para processar transações.
Campos obrigatórios
Quando o dígito verificador é uma letra, o DICT o recebe como
0: uma conta guardada como AB1234567X é registrada no DICT como AB12345670. Mantenha o valor original no CRM.
Tipos de conta aceitos
Você não pode registrar nem reivindicar uma chave Pix para uma conta
SLRY. O plugin retorna PIX-0129.
Documentação relacionada: Criar uma conta alias
5. Provedor BTG
O BTG é o participante direto que conecta sua instituição à infraestrutura do Pix no BACEN. O BTG fornece as credenciais diretamente quando sua instituição contrata a integração indireta com o BACEN.
Conexão
mTLS (segurança dos webhooks)
O TLS mútuo (mTLS) valida o certificado do BTG nas requisições de webhook. Ele confirma que os webhooks recebidos vêm do BTG. O seu ingress repassa o certificado que o BTG apresenta no header
MTLS_CERTIFICATE_HEADER (padrão X-Client-Cert).
BTG_OUTBOUND_MTLS_ENABLED=true com CLIENT_TLS_CERT_FILE e CLIENT_TLS_KEY_FILE. Veja Variáveis de ambiente.
6. Serviço de tarifas (opcional)
Habilite o cálculo de tarifas para cobrar e distribuir tarifas automaticamente nos pagamentos recebidos. Isso é opcional. Se você não configurar, o plugin processa as transações sem cálculo de tarifas.
Conexão
Como funciona
Quando você define
CASHIN_FEE_CALCULATION_TYPE=segment, o plugin:
- Busca o segmento associado à conta que recebe
- Calcula as tarifas aplicáveis antes de processar a transação no Midaz
- Distribui o pagamento recebido conforme as regras de pacote ligadas a esse segmento
Passos de configuração
- Crie segmentos no Midaz: defina os segmentos de conta que determinam as regras de tarifa
- Configure pacotes no Fees Engine: ligue cada segmento às regras de cálculo de tarifa dele
- Atribua segmentos às contas: crie ou atualize contas do Midaz com o ID de segmento adequado
- Conciliação do DICT (VSync)
O VSync concilia seus dados locais do DICT com o BACEN processando todos os eventos do dia relacionados a chaves. Ele mantém seu estado local consistente com os registros oficiais do BACEN.
Configuração do cache Redis
O VSync usa o Redis para fazer cache dos vínculos do BTG/DICT e dos titulares do CRM durante a conciliação. Nos deploys com Helm, o
REDIS_HOST padrão aponta para o Valkey embutido, então uma instalação padrão não exige configuração extra.
Conexão (sempre usada)
Pool de conexões e novas tentativas (sempre usados)
Autenticação (opcional, usada apenas se definida)
TLS (opcional, usado apenas se REDIS_TLS=true)
Autenticação IAM da GCP (opcional, usada apenas se REDIS_USE_GCP_IAM=true)
TTLs do cache do VSync (sempre usados)
8. Segurança dos webhooks internos
O plugin usa um canal de comunicação interno entre os serviços Worker e Application. As assinaturas HMAC-SHA256 protegem esse canal contra adulteração e ataques de replay.
9. Camadas de worker
O plugin opera com quatro workers, cada um cuidando de uma parte diferente do ciclo de vida do Pix. Cada worker roda como um serviço separado ao lado da aplicação principal.
Worker de entrada
A Application recebe as notificações de webhook do BTG e as armazena. Depois, o worker de entrada entrega cada notificação aos endpoints internos da Application para processamento.
Worker de saída
O worker de saída envia as notificações de evento do plugin para a sua aplicação por webhooks. É assim que o seu sistema fica informado sobre os eventos Pix (transferências, devoluções, reivindicações, disputas).
Prioridade de resolução de URL
O plugin resolve as URLs de webhook nesta ordem, usando a primeira que corresponder:- URL de entidade: uma URL específica do tipo de evento (por exemplo,
WEBHOOK_DICT_CLAIM_URL) - URL de fluxo: uma URL para a categoria mais ampla (por exemplo,
WEBHOOK_DICT_URL) - URL padrão: a URL de fallback (
WEBHOOK_DEFAULT_URL)
WEBHOOK_<FLOW>_<ENTITY>_*. Veja Webhooks.
Para tipos de evento de webhook, payloads, comportamento de novas tentativas e boas práticas, veja o guia de Webhooks.
Worker de conciliação
O worker de conciliação precisa das mesmas credenciais da camada Application para estes serviços:
- CRM: URL e credenciais
- BTG: URL e credenciais
- Midaz: ID da organização
PLUGIN_PIX_BTG_BASE_URL, PLUGIN_PIX_BTG_CLIENT_ID e PLUGIN_PIX_BTG_CLIENT_SECRET, com o endpoint de token em PLUGIN_AUTH_URL.
Veja as seções correspondentes acima para detalhes de cada configuração.
Você pode restringir quando o worker opera configurando uma janela de horário específica. Isso ajuda a agendar as tarefas de conciliação fora do horário de pico. O plugin aceita janelas de horário que atravessam a meia-noite.
Se você deixar os dois campos vazios, o worker roda sem restrição de horário (24/7).
O worker sempre interpreta a janela de conciliação no fuso
America/Sao_Paulo (BRT), qualquer que seja o relógio do contêiner ou a variável TZ. O worker embute os dados de fuso horário da IANA. A janela continua alinhada com o bloqueio de escrita do DICT do BACEN, mesmo em imagens mínimas ou distroless. Você não precisa definir TZ.Worker de agendamento
O worker de agendamento executa os pagamentos Pix agendados quando vencem. Ele vem desligado por padrão. Ele chama a API da Application com as mesmas variáveis de credenciais de cliente do worker de conciliação.
Os endpoints de cashout e de devolução do Pix Indireto aceitam idempotência pelo header de requisição
X-Idempotency. O plugin guarda uma resposta reutilizável por IDEMPOTENCY_RESPONSE_TTL segundos (padrão 86400, 24 horas). Para estratégias de nova tentativa e detalhes de implementação, veja Novas tentativas e idempotência.10. Observabilidade (OpenTelemetry)
O plugin vem com instrumentação OpenTelemetry (traces, métricas e logs) nas camadas Application e Worker. O plugin rastreia os fluxos Pix de ponta a ponta: transferências (cash-in e cash-out), devoluções, webhooks de entrada e de saída, conciliação do DICT e liquidação intra-PSP. Você pode seguir um único pagamento pelas chamadas ao plugin, ao Midaz, ao CRM e ao BTG. A telemetria vem desabilitada por padrão. Habilite e aponte o exporter OTLP para o seu collector:
Quando
ENABLE_TELEMETRY=true, OTEL_EXPORTER_OTLP_ENDPOINT é obrigatório. Defina as mesmas variáveis do OTel na Application e em cada Worker para os traces se correlacionarem entre os serviços.Exporter: gRPC e TLS
O plugin exporta traces, métricas e logs por OTLP/gRPC. O esquema do endpoint controla a segurança do transporte:
Exemplo: endpoint do collector
Aponte o plugin para qualquer collector compatível com OTLP (o OpenTelemetry Collector, Grafana LGTM/Alloy etc.) que escute na porta gRPC:
11. Health e readiness
A Application e os Workers expõem uma probe de readiness em
/readyz (ao lado das verificações padrão de liveness). Aponte a probe de readiness do seu orquestrador para esse endpoint para o tráfego ser roteado apenas quando o serviço e as dependências dele estiverem prontos.
Propósito da transferência (MED 2.0)
O endpoint de cashout aceita um header opcional
X-Purpose que identifica o propósito da transação, usado nas transferências de devolução do MED 2.0. Quando omitido, o padrão é TRANSFER.
Próximos passos
Com o plugin configurado, você pode começar a operar o Pix.
- Webhooks: tipos de evento, payloads, novas tentativas e boas práticas
- MED 2.0: Recuperação de Fundos: recuperação de fraude entre contas e o header X-Purpose
- Operações de devolução: devoluções parciais distribuídas e desbloqueio
- Transferências intra-PSP: liquidação P2P interna e reporte TRCK002
- Domínios principais: DICT: entender a gestão de chaves Pix
- Domínios principais: transações: fluxos e ciclo de vida das transações
- Domínios principais: QR Codes: geração de QR code estático e dinâmico
- Referência da API: documentação completa da API para as operações de DICT, reivindicações, transações, QR Codes e MED

