Skip to main content
Los webhooks son el mecanismo principal que el Plugin de Pix Indirecto (BTG) usa para notificarte en tiempo real sobre eventos relacionados con Pix. No dependes de respuestas síncronas. En su lugar, recibes callbacks asíncronos basados en eventos cuando ocurren cambios relevantes en las operaciones de Pix: transferencias, reembolsos, reclamos de claves o eventos MED. Este modelo te da:
  • Actualizaciones casi en tiempo real
  • Integraciones desacopladas
  • Conciliación confiable y trazabilidad operativa
Estos webhooks aplican solo al modelo de Pix Indirecto a través de BTG.Los webhooks de Pix Directo pueden diferir según el modelo de conectividad. Una página aparte los documenta.

Requisitos previos


Antes de configurar los webhooks, asegúrate de tener:
  • El Plugin de Pix Indirecto configurado y en funcionamiento (consulta Cómo funciona la participación indirecta)
  • Un endpoint HTTPS listo para recibir solicitudes de webhook
  • Conocimiento básico del ciclo de vida de los eventos de Pix y de los flujos de transacciones

Por qué los webhooks son importantes en Pix


Pix es un sistema asíncrono y multiparte. Una solicitud de API puede tener éxito antes de que la transacción alcance su estado final. El sistema confirma ese estado más tarde, después de la liquidación y del reconocimiento de la contraparte. Los webhooks permiten que tu sistema:
  • Dé seguimiento al estado autoritativo de la transacción
  • Reaccione a reembolsos, reversiones y eventos MED
  • Mantenga la consistencia del libro mayor y operativa
  • Reduzca el polling y la carga operativa

Tipos de eventos


Recibes eventos agrupados por flujo y entidad, alineados con los dominios de BACEN (Banco Central do Brasil). Cada evento refleja una transición de estado en el ecosistema de Pix. Trata cada evento como la fuente de verdad.
Las dos entidades de MED 2.0 se comportan de forma diferente. El plugin emite FUNDS_RECOVERY después de actualizar su registro local. FUNDS_RECOVERY_EVENT es un pass-through de los eventos del ciclo de vida de BTG sin actualización en base de datos. Consulta MED 2.0 — Funds Recovery para ver el flujo completo.
DICT (Diretório de Identificadores de Contas Transacionais) es el directorio de BACEN que gestiona las claves Pix y operaciones relacionadas como reclamos, infracciones y reembolsos.

Configuración de webhooks


Para habilitar los webhooks, configura las URLs de destino y selecciona qué tipos de eventos recibe tu sistema.

Variables de entorno


Puedes configurar los endpoints de webhook a nivel de entidad, flujo o global. Cada flujo también tiene una URL a nivel de flujo para todas sus entidades. El plugin la usa cuando no existe una URL a nivel de entidad: WEBHOOK_DICT_URL, WEBHOOK_TRANSFER_URL y WEBHOOK_REFUND_URL.

Prioridad de resolución de URL


Cuando configuras múltiples URLs, el plugin las resuelve en este orden:
  1. URL a nivel de entidad Ejemplo: WEBHOOK_DICT_CLAIM_URL
  2. URL a nivel de flujo Ejemplo: WEBHOOK_DICT_URL
  3. URL por defecto WEBHOOK_DEFAULT_URL
Esto te da un control de enrutamiento granular y sin infraestructura duplicada.

Formato de la solicitud


Encabezados


Cada solicitud de webhook incluye encabezados estandarizados para trazabilidad y seguridad.

Estructura del cuerpo


El esquema del payload varía según el tipo de evento, pero siempre representa un cambio de estado.

Respuestas y comportamiento de reintentos


Respuesta esperada


Tu endpoint debe devolver un estado HTTP 2xx para confirmar la entrega exitosa.

Estrategia de reintentos


El plugin reintenta las entregas fallidas automáticamente con backoff exponencial: Valores por defecto
  • Máximo de reintentos: 3
  • Tiempo de espera por solicitud: 30 segundos
Después de que todos los reintentos fallan, el plugin mueve el evento a una cola de mensajes fallidos para seguimiento operativo.

Configuración personalizada de reintentos

Puedes personalizar los reintentos y los tiempos de espera por evento:

Protección con circuit breaker


Un circuit breaker protege la entrega de webhooks y previene fallos en cascada. Cuando el Plugin de Pix detecta fallos repetidos de entrega (normalmente respuestas 5xx consecutivas o tiempos de espera agotados), pausa temporalmente las llamadas de webhook al endpoint afectado. Después de un período de enfriamiento configurable, el sistema realiza intentos de reintento controlados para verificar si el endpoint se ha recuperado. Cuando el endpoint vuelve a devolver respuestas exitosas, el plugin reanuda la entrega normal automáticamente. Este mecanismo te da:
  • Protección contra endpoints sobrecargados o inestables
  • Recuperación elegante sin intervención manual
  • Mayor estabilidad general del sistema en entornos de producción
El circuit breaker funciona junto con los reintentos y el backoff exponencial. Agrega una capa de seguridad adicional para la entrega de webhooks.

Errores de transporte y eventos huérfanos


Cuando el plugin recibe un webhook de reembolso, busca la transferencia original a lo largo de la cadena cash-in → cash-out. Si ninguna fuente local coincide, el plugin persiste el reembolso como un registro huérfano para la auditabilidad de BACEN. No descarta el reembolso, de modo que el registro permanece visible para conciliación y seguimiento. Si una búsqueda de fuente falla en la capa de transporte, el plugin omite esa fuente y continúa. Cuando ninguna fuente coincide — por una ausencia limpia o un error de transporte descartado — el plugin registra el reembolso como huérfano. El plugin solo aborta cuando el puente de búsqueda de transferencias no está configurado. originalEndToEndId es la clave canónica para todas las búsquedas de reembolso. El plugin resuelve los reembolsos desde ambas direcciones, cash-in → refund y cash-out → refund, con este campo. Indexa siempre los reembolsos por originalEndToEndId (el ID de extremo a extremo de la transferencia original), no por una única ruta de búsqueda específica de dirección.

Reportes de transacciones internas (intra-PSP)


El plugin liquida las transferencias intra-PSP (P2P) internamente. Nunca llegan a BTG para su liquidación, pero el plugin aún las reporta a BACEN a través de la abstracción TRCK002. BTG confirma el estado del reporte mediante un webhook CAMT025 que lleva la entidad PixInternalTransactionsReport. El plugin actualiza el estado del reporte cuando el webhook de reporte CAMT025 confirma o falla. Los webhooks salientes se emiten antes, cuando la transferencia intra-PSP se liquida: cashin.completed para el lado de cash-in y cashout.completed o cashout.failed para el lado de cash-out. Para ver el flujo interno completo, consulta Transferencias intra-PSP.

Buenas prácticas


Ejemplos de eventos


A continuación se muestran ejemplos representativos de los payloads de webhook que recibes del Plugin de Pix Indirecto. Expande cada entrada para ver su payload.
Eventos del ciclo de vida de titularidad o portabilidad. Úsalos para hacer seguimiento de las disputas de clave Pix entre instituciones.
Eventos de señalización de disputas y fraude alineados con las reglas de MED de BACEN.
Solicitudes y decisiones de reembolso relacionadas con casos de MED.
Cambios de estado de la entidad Funds Recovery. El plugin actualiza su registro local antes de reenviar la entidad completa.
Los eventos del ciclo de vida llegan como entityType: FUNDS_RECOVERY_EVENT (pass-through, sin actualización en base de datos), con valores de event como FUNDS_RECOVERY_ANALYSED y FUNDS_RECOVERY_COMPLETED.
Eventos de transferencias Pix entrantes y salientes.Cash-in (transferencia entrante):
Cash-out (transferencia saliente):
Eventos de liquidación de reembolso para transacciones Pix.Cash-in de reembolso (recibir un reembolso):
Cash-out de reembolso (enviar un reembolso):

Conclusión clave


Los webhooks no son opcionales en las operaciones de Pix Indirecto. Son el canal autoritativo para el estado de las transacciones, los reembolsos y la gestión de disputas. Una implementación correcta de webhooks te da:
  • Conciliación precisa
  • Cumplimiento normativo
  • Resiliencia operativa
  • Experiencia del cliente predecible
Para entornos de producción, diseña siempre los consumidores de webhooks como sistemas idempotentes, asíncronos y observables.

Próximos pasos


Ahora que entiendes cómo funcionan los webhooks en Pix Indirecto, explora estos temas relacionados: