Skip to main content
Os webhooks são o mecanismo principal que o Plugin Pix Indireto (BTG) usa para avisar você sobre eventos de Pix em tempo real. Você recebe callbacks assíncronos, orientados a eventos, quando ocorrem mudanças nas operações Pix: transferências, devoluções, reivindicações de chave ou eventos de MED.
Esses webhooks se aplicam apenas ao modelo de Pix Indireto via BTG.Os webhooks do Pix Direto podem variar conforme o modelo de conectividade. Uma página à parte documenta esses webhooks.

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_EVENT é 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. Cada fluxo também tem uma URL no nível do fluxo para todas as suas entidades. O plugin a usa quando não existe URL no nível da entidade: WEBHOOK_DICT_URL, WEBHOOK_TRANSFER_URL e WEBHOOK_REFUND_URL.

Prioridade de resolução de URL


Quando você configura várias URLs, o plugin as resolve nesta ordem:
  1. URL no nível da entidade Exemplo: WEBHOOK_DICT_CLAIM_URL
  2. URL no nível do fluxo Exemplo: WEBHOOK_DICT_URL
  3. URL padrão WEBHOOK_DEFAULT_URL

Formato da requisição


Headers


Toda requisição de webhook inclui headers padronizados para rastreabilidade e segurança.

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: Padrões
  • Máximo de novas tentativas: 3
  • Timeout por requisição: 30 segundos
Depois que todas as tentativas falham, o plugin move o evento para uma dead-letter queue para acompanhamento operacional.

Configurações de nova tentativa customizadas

Você pode customizar as novas tentativas e os timeouts por evento:

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 (normalmente respostas 5xx consecutivas ou timeouts), ele pausa temporariamente as chamadas de webhook para o endpoint afetado. Depois de um período de espera configurável, 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.

Erros de transporte e eventos órfãos


Quando o plugin recebe um webhook de devolução, 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 (por uma ausência real ou por um erro de transporte engolido), o plugin registra a devolução como órfã. O plugin aborta apenas se você não configurar a ponte de consulta de transferências. 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: cashin.completed para a perna de cash-in e cashout.completed ou cashout.failed para a perna de cash-out. Para o fluxo interno completo, veja Transferências intra-PSP.

Boas práticas


Exemplos de evento


Expanda cada item para ver um payload de exemplo daquele tipo de evento.
Eventos de ciclo de vida de posse ou de portabilidade. Use-os para acompanhar disputas de chave Pix entre instituições.
Eventos de sinalização de disputa e de fraude alinhados às regras do MED do BACEN.
Solicitações e decisões de devolução relacionadas a casos de MED.
Mudanças de status da entidade de Recuperação de Fundos. O plugin atualiza o registro local antes de encaminhar a entidade completa.
Os eventos de ciclo de vida chegam como entityType: FUNDS_RECOVERY_EVENT (repasse, sem atualização no banco), com valores de event como FUNDS_RECOVERY_ANALYSED e FUNDS_RECOVERY_COMPLETED.
Eventos de transferência Pix recebida e enviada.Cash-in (transferência recebida):
Cash-out (transferência enviada):
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