Skip to main content
Webhooks são o principal mecanismo que o Plugin de Pix Indireto (BTG) usa para notificar você sobre eventos relacionados ao Pix em tempo real. Você não depende de respostas síncronas. Em vez disso, você recebe callbacks assíncronos e orientados a eventos quando ocorrem mudanças relevantes nas operações de Pix — transferências, devoluções, reivindicações de chave ou eventos de MED. Esse modelo oferece a você:
  • Atualizações quase em tempo real
  • Integrações desacopladas
  • Conciliação confiável e rastreabilidade operacional
Estes webhooks aplicam-se somente ao modelo de Pix Indireto via BTG.Os webhooks de Pix Direto podem diferir conforme o modelo de conectividade. Uma página à parte os documenta.

Pré-requisitos


Antes de configurar os webhooks, certifique-se de ter:
  • O Plugin de Pix Indireto configurado e em execução (consulte Como funciona a participação indireta)
  • Um endpoint HTTPS pronto para receber requisições de webhook
  • Compreensão básica do ciclo de vida de eventos do Pix e dos fluxos de transação

Por que os webhooks são importantes no Pix


O Pix é um sistema assíncrono e multipartes. Uma requisição de API pode ser bem-sucedida antes de a transação alcançar seu estado final. O sistema confirma esse estado mais tarde, 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 contábil e 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 comportam-se de forma diferente. O plugin emite FUNDS_RECOVERY após atualizar seu registro local. FUNDS_RECOVERY_EVENT é um repasse direto dos eventos de ciclo de vida do BTG, sem atualização no banco de dados. Consulte 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 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 em nível de entidade, fluxo ou global. Cada fluxo também tem uma URL em nível de fluxo para todas as suas entidades. O plugin a usa quando nenhuma URL em nível de entidade existe: 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 em nível de entidade Exemplo: WEBHOOK_DICT_CLAIM_URL
  2. URL em nível de fluxo Exemplo: WEBHOOK_DICT_URL
  3. URL padrão WEBHOOK_DEFAULT_URL
Isso oferece controle de roteamento granular e sem infraestrutura duplicada.

Formato da requisição


Cabeçalhos


Toda requisição de webhook inclui cabeçalhos 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 retentativa


Resposta esperada


Seu endpoint deve retornar um status HTTP 2xx para confirmar a entrega bem-sucedida.

Estratégia de retentativa


O plugin reenvia automaticamente as entregas que falham com backoff exponencial: Padrões
  • Máximo de retentativas: 3
  • Timeout por requisição: 30 segundos
Após todas as retentativas falharem, o plugin move o evento para uma fila de mensagens falhas para acompanhamento operacional.

Configurações personalizadas de retentativa

Você pode personalizar as retentativas 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 de Pix detecta falhas repetidas de entrega (normalmente respostas 5xx consecutivas ou timeouts), ele pausa temporariamente as chamadas de webhook para o endpoint afetado. Após um período de espera configurável, o sistema realiza tentativas controladas de retentativa para verificar se o endpoint se recuperou. Quando o endpoint volta a retornar respostas bem-sucedidas, o plugin retoma a entrega normal automaticamente. Esse mecanismo oferece a você:
  • Proteção contra endpoints sobrecarregados ou instáveis
  • Recuperação suave sem intervenção manual
  • Maior estabilidade geral do sistema em ambientes de produção
O circuit breaker funciona em conjunto com as retentativas e o backoff exponencial. Ele adiciona uma camada extra de segurança para a entrega de webhooks.

Erros de transporte e eventos órfãos


Quando o plugin recebe um webhook de devolução, ele busca a transferência original ao longo da cadeia cash-in → cash-out. Se nenhuma fonte 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, de modo que o registro permanece visível para conciliação e acompanhamento. Se uma busca de fonte falhar na camada de transporte, o plugin ignora essa fonte e continua. Quando nenhuma fonte corresponde — por uma ausência limpa ou um erro de transporte descartado — o plugin registra a devolução como órfã. O plugin só aborta quando a ponte de busca de transferências não está configurada. originalEndToEndId é a chave canônica para todas as buscas de devolução. O plugin resolve as devoluções a partir de ambas as direções, cash-in → refund e cash-out → refund, com esse campo. Indexe sempre as devoluções por originalEndToEndId (o ID de ponta a ponta da transferência original), não por um único caminho de busca específico de direção.

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 o plugin ainda as reporta ao BACEN por meio da abstração TRCK002. O BTG confirma o status do relatório por meio de 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 são emitidos antes, quando a transferência intra-PSP é liquidada: cashin.completed para o lado de cash-in e cashout.completed ou cashout.failed para o lado de cash-out. Para o fluxo interno completo, consulte Transferências intra-PSP.

Boas práticas


Exemplos de eventos


A seguir estão exemplos representativos de payloads de webhook que você recebe do Plugin de Pix Indireto. Expanda cada entrada para ver seu payload.
Eventos de ciclo de vida de propriedade ou portabilidade. Use-os para acompanhar disputas de chave Pix entre instituições.
Eventos de sinalização de disputa e 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 Recuperação de Fundos. O plugin atualiza seu registro local antes de encaminhar a entidade completa.
Os eventos de ciclo de vida chegam como entityType: FUNDS_RECOVERY_EVENT (repasse direto, sem atualização no banco de dados), 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 para transações Pix.Refund cash-in (recebendo uma devolução):
Refund cash-out (enviando uma devolução):

Conclusão principal


Os webhooks não são opcionais nas operações de Pix Indireto. Eles são o canal autoritativo para o estado da transação, devoluções e tratamento de disputas. Uma implementação correta de webhooks oferece a você:
  • Conciliação precisa
  • Conformidade regulatória
  • Resiliência operacional
  • Experiência previsível para o cliente
Para ambientes de produção, projete sempre os consumidores de webhook como sistemas idempotentes, assíncronos e observáveis.

Próximos passos


Agora que você entende como os webhooks funcionam no Pix Indireto, explore estes tópicos relacionados: