Pré-requisitos
Antes de configurar os webhooks, confirme que você tem:
- O Plugin Pix Indireto configurado e em execução (veja Como funciona a participação indireta)
- Um endpoint HTTPS pronto para receber as requisições de webhook
- Entendimento básico do ciclo de vida dos eventos Pix e dos fluxos de transação
O que os webhooks oferecem
Os webhooks não são opcionais nas operações de Pix Indireto. O Pix é um sistema assíncrono e com várias partes. Uma requisição de API pode ter sucesso antes de a transação chegar ao seu estado final. O sistema confirma esse estado depois, após a liquidação e a confirmação da contraparte. Os webhooks permitem que seu sistema:
- Acompanhe o status autoritativo da transação
- Reaja a devoluções, estornos e eventos de MED
- Mantenha a consistência do ledger e a consistência operacional
- Reduza o polling e a sobrecarga operacional
Tipos de evento
Você recebe eventos agrupados por fluxo e entidade, alinhados aos domínios do BACEN (Banco Central do Brasil).
Cada evento reflete uma transição de estado no ecossistema Pix. Trate cada evento como a fonte da verdade.
As duas entidades do MED 2.0 se comportam de formas diferentes. O plugin emite
FUNDS_RECOVERY depois de atualizar o registro local. FUNDS_RECOVERY_EVENTS é um repasse dos eventos de ciclo de vida do BTG, sem atualização no banco. Veja MED 2.0: Recuperação de Fundos para o fluxo completo.O DICT (Diretório de Identificadores de Contas Transacionais) é o diretório do BACEN que gerencia as chaves Pix e as operações relacionadas, como reivindicações, infrações e devoluções.
Configuração de webhooks
Para habilitar os webhooks, configure as URLs de destino e selecione quais tipos de evento seu sistema recebe.
Variáveis de ambiente
Você pode configurar os endpoints de webhook no nível de entidade, de fluxo ou global.
As outras entidades seguem o mesmo padrão, por exemplo
WEBHOOK_DICT_FUNDS_RECOVERY_EVENTS_URL ou WEBHOOK_SCHEDULE_CASHOUT_URL.
Cada fluxo também tem uma URL no nível do fluxo para todas as suas entidades, WEBHOOK_<FLOW>_URL. O plugin a usa quando não existe URL no nível da entidade, por exemplo WEBHOOK_DICT_URL ou WEBHOOK_TRANSFER_URL.
Prioridade de resolução de URL
Quando você configura várias URLs, o plugin as resolve nesta ordem:
-
URL no nível da entidade
Exemplo:
WEBHOOK_DICT_CLAIM_URL -
URL no nível do fluxo
Exemplo:
WEBHOOK_DICT_URL -
URL padrão
WEBHOOK_DEFAULT_URL
Formato da requisição
Headers
Toda requisição de webhook inclui headers padronizados para rastreabilidade.
Estrutura do corpo
O schema do payload varia conforme o tipo de evento, mas sempre representa uma mudança de estado.
Respostas e comportamento de nova tentativa
Resposta esperada
Seu endpoint deve retornar um status HTTP 2xx para confirmar a entrega.
Estratégia de novas tentativas
O plugin repete automaticamente as entregas que falham, com backoff exponencial (multiplicador padrão
2):
Padrões
- Máximo de tentativas: 10
- Timeout por requisição: 10 segundos (
WEBHOOK_WORKER_TIMEOUT)
GET /v1/webhooks/outbound e POST /v1/webhooks/outbound/{id}/retry.
Backoff customizado
Você pode mudar o multiplicador de backoff por entidade:Proteção por circuit breaker
Um circuit breaker protege a entrega de webhooks e evita falhas em cascata. Quando o Plugin Pix detecta falhas repetidas de entrega (por padrão, 5 respostas
5xx ou erros de conexão consecutivos), ele pausa temporariamente as chamadas de webhook para aquele fluxo e aquela entidade.
Depois de um período de espera configurável (padrão de 30 segundos), o sistema tenta o endpoint de novo para checar se ele se recuperou.
Quando o endpoint volta a responder com sucesso, o plugin retoma a entrega normal automaticamente.
O circuit breaker funciona junto com as novas tentativas e o backoff exponencial.
Consultar e reprocessar webhooks
O plugin guarda os webhooks que recebe do BTG (de entrada) e os webhooks que envia para você (de saída). Use estes endpoints para encontrar um webhook e processá-lo ou enviá-lo de novo:
Erros de transporte e eventos órfãos
Quando o plugin recebe uma solicitação de devolução do MED, ele procura a transferência original ao longo da cadeia cash-in → cash-out. Se nenhuma origem local corresponder, o plugin persiste a devolução como um registro órfão para a auditabilidade do BACEN. Ele não descarta a devolução, então o registro continua visível para conciliação e acompanhamento. Se a consulta de uma origem falhar na camada de transporte, o plugin pula essa origem e continua. Quando nenhuma origem é resolvida, o plugin registra a devolução como órfã.
originalEndToEndId é a chave canônica de todas as consultas de devolução. O plugin resolve devoluções nos dois sentidos, cash-in → devolução e cash-out → devolução, com esse campo. Sempre indexe as devoluções por originalEndToEndId (o ID end-to-end da transferência original), não por um único caminho de consulta específico de um sentido.
Relatórios de transações internas (intra-PSP)
O plugin liquida as transferências intra-PSP (P2P) internamente. Elas nunca chegam ao BTG para liquidação, mas mesmo assim o plugin as reporta ao BACEN pela abstração TRCK002. O BTG confirma o status do relatório por um webhook CAMT025 que carrega a entidade
PixInternalTransactionsReport.
O plugin atualiza o status do relatório quando o webhook de relatório CAMT025 confirma ou falha. Os webhooks de saída disparam antes, quando a transferência intra-PSP liquida:
TRANSFER / CASHIN para a perna de cash-in e TRANSFER / CASHOUT para a perna de cash-out. Para o fluxo interno completo, veja Transferências intra-PSP.
Para listar os relatórios de transação, use GET /v1/transaction-reports. Se o worker não enviou um relatório, envie-o com POST /v1/transaction-reports/{id}/submit. O plugin não altera um relatório que já está em PROCESSING ou CONFIRMED. O webhook CAMT025 entrega o resultado.
Relatórios de tempos de transação (TemposTransacoes)
O plugin calcula os percentis de experiência do pagador do TemposTransacoes do BACEN para um mês de referência fechado. Para iniciar o cálculo, envie
POST /v1/statistics/tempos-transacoes/jobs com o referenceMonth no formato YYYY-MM. O job começa em PENDING, passa para RUNNING e termina em COMPLETED ou FAILED. Um mês de referência pode ter um job PENDING ou RUNNING por vez.
Para ver o job de um mês, use GET /v1/statistics/tempos-transacoes/jobs/{referenceMonth}. Quando o status é COMPLETED, o campo result traz os percentis. O plugin também envia um webhook REPORT / TEMPOSTRANSACOES com o resultado quando o job termina.
Boas práticas
Exemplos de evento
Expanda cada item para ver um payload de exemplo daquele tipo de evento. Cada exemplo mostra os campos principais. Um payload pode trazer mais.
Reivindicação DICT
Reivindicação DICT
Eventos de ciclo de vida de posse ou de portabilidade. Use-os para acompanhar disputas de chave Pix entre instituições.
Relato de infração DICT (MED)
Relato de infração DICT (MED)
Eventos de sinalização de disputa e de fraude alinhados às regras do MED do BACEN.
Devolução DICT (MED)
Devolução DICT (MED)
Solicitações e decisões de devolução relacionadas a casos de MED.
Recuperação de fundos DICT (MED 2.0)
Recuperação de fundos DICT (MED 2.0)
Mudanças de status da entidade de Recuperação de Fundos. O plugin atualiza o registro local antes de enviar o evento.Os eventos de ciclo de vida chegam como
entityType: FUNDS_RECOVERY_EVENTS (repasse, sem atualização no banco), com valores de payload.body.event como FUNDS_RECOVERY_ANALYSED e FUNDS_RECOVERY_COMPLETED.Cash-in e cash-out de transferência
Cash-in e cash-out de transferência
Eventos de transferência Pix recebida e enviada.Cash-in (transferência recebida):Cash-out (transferência enviada):
Cash-in e cash-out de devolução
Cash-in e cash-out de devolução
Eventos de liquidação de devolução de transações Pix.Cash-in de devolução (receber uma devolução):Cash-out de devolução (enviar uma devolução):
Próximos passos
- Domínios principais do Pix: transferências: Operações de transferência em detalhe
- Domínios principais do Pix: DICT: Entenda as operações do DICT e a gestão de chaves
- Domínios principais do Pix: MED: Tratamento de disputa e devolução do MED
- MED 2.0: Recuperação de Fundos: Recuperação de fraude entre contas e seus webhooks
- Transferências intra-PSP: Liquidação P2P interna e reporte TRCK002
- Referência da API: Documentação completa da API para DICT, Reivindicações, Transações, QR Codes e operações de MED

