Requisitos previos
Antes de configurar los webhooks, confirma que tienes:
- El Plugin Pix Indirecto configurado y en ejecución (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 Pix y de los flujos de transacciones
Qué te dan los webhooks
Los webhooks no son opcionales en las operaciones de Pix Indirecto. Pix es un sistema asíncrono y multipartito. Una solicitud de API puede tener éxito antes de que la transacción llegue a su estado final. El sistema confirma ese estado después, tras la liquidación y la confirmación de la contraparte. Los webhooks permiten que tu sistema:
- Siga el estado autoritativo de las transacciones
- Reaccione a devoluciones, reversiones y eventos de MED
- Mantenga la consistencia del ledger y la 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 Pix. Trata cada evento como la fuente de verdad.
Las dos entidades de MED 2.0 se comportan de forma distinta. El plugin emite
FUNDS_RECOVERY después de actualizar su registro local. FUNDS_RECOVERY_EVENT es de paso: lleva los eventos de ciclo de vida de BTG sin actualización en la base de datos. Consulta MED 2.0 — Recuperación de fondos para el flujo completo.DICT (Diretório de Identificadores de Contas Transacionais) es el directorio de BACEN que gestiona las claves Pix y las operaciones relacionadas, como reclamaciones, infracciones y devoluciones.
Configuración de webhooks
Para habilitar los webhooks, configura las URLs de destino y selecciona qué tipos de evento recibe tu sistema.
Variables de entorno
Puedes configurar los endpoints de webhook en el nivel de entidad, de flujo o global.
Cada flujo también tiene una URL en el nivel de flujo para todas sus entidades. El plugin la usa cuando no existe una URL en el nivel de entidad:
WEBHOOK_DICT_URL, WEBHOOK_TRANSFER_URL y WEBHOOK_REFUND_URL.
Prioridad de resolución de URL
Cuando configuras varias URLs, el plugin las resuelve en este orden:
-
URL en el nivel de entidad
Ejemplo:
WEBHOOK_DICT_CLAIM_URL -
URL en el nivel de flujo
Ejemplo:
WEBHOOK_DICT_URL -
URL predeterminada
WEBHOOK_DEFAULT_URL
Formato de la solicitud
Headers
Cada solicitud de webhook incluye headers estandarizados para la trazabilidad y la 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 reintento
Respuesta esperada
Tu endpoint debe devolver un estado HTTP 2xx para confirmar la entrega exitosa.
Estrategia de reintentos
El plugin reintenta automáticamente las entregas fallidas con backoff exponencial:
Valores predeterminados
- Máximo de reintentos: 3
- Timeout por solicitud: 30 segundos
Configuración de reintentos personalizada
Puedes personalizar los reintentos y los timeouts por evento:Protección con circuit breaker
Un circuit breaker protege la entrega de webhooks y evita fallas en cascada. Cuando el Plugin Pix detecta fallas repetidas de entrega (por lo general respuestas
5xx consecutivas o timeouts), pausa temporalmente las llamadas de webhook al endpoint afectado.
Después de un período de espera configurable, el sistema reintenta el endpoint para verificar si se recuperó.
Cuando el endpoint devuelve respuestas exitosas, el plugin reanuda la entrega normal automáticamente.
El circuit breaker funciona junto con los reintentos y el backoff exponencial.
Errores de transporte y eventos huérfanos
Cuando el plugin recibe un webhook de devolución, busca la transferencia original a lo largo de la cadena cash-in → cash-out. Si ninguna fuente local coincide, el plugin persiste la devolución como un registro huérfano para la auditabilidad ante BACEN. No descarta la devolución, por lo que el registro queda visible para la conciliación y el seguimiento. Si una consulta de fuente falla en la capa de transporte, el plugin omite esa fuente y continúa. Cuando ninguna fuente se resuelve (por una ausencia limpia o por un error de transporte silenciado), el plugin registra la devolución como huérfana. El plugin aborta solo si no configuras el puente de consulta de transferencias.
originalEndToEndId es la clave canónica para todas las consultas de devoluciones. El plugin resuelve las devoluciones con este campo en ambos sentidos, cash-in → devolución y cash-out → devolución. Indexa siempre las devoluciones por originalEndToEndId (el ID end-to-end de la transferencia original), no por una única ruta de consulta específica de un sentido.
Informes de transacciones internas (intra-PSP)
El plugin liquida internamente las transferencias intra-PSP (P2P). Nunca llegan a BTG para su liquidación, pero el plugin igual las informa a BACEN mediante la abstracción TRCK002. BTG confirma el estado del informe mediante un webhook CAMT025 que lleva la entidad
PixInternalTransactionsReport.
El plugin actualiza el estado del informe cuando el webhook de informe CAMT025 confirma o falla. Los webhooks salientes se disparan antes, cuando la transferencia intra-PSP se liquida:
cashin.completed para el tramo de cash-in y cashout.completed o cashout.failed para el tramo de cash-out. Para el flujo interno completo, consulta Transferencias intra-PSP.
Mejores prácticas
Ejemplos de eventos
Expande cada entrada para ver un payload de ejemplo de ese tipo de evento.
Reclamación DICT
Reclamación DICT
Eventos de ciclo de vida de titularidad o portabilidad. Úsalos para seguir las disputas de claves Pix entre instituciones.
Informe de infracción DICT (MED)
Informe de infracción DICT (MED)
Eventos de señalización de disputas y de fraude alineados con las reglas de MED de BACEN.
Devolución DICT (MED)
Devolución DICT (MED)
Solicitudes de devolución y decisiones relacionadas con los casos de MED.
Recuperación de fondos DICT (MED 2.0)
Recuperación de fondos DICT (MED 2.0)
Cambios de estado de la entidad de recuperación de fondos. El plugin actualiza su registro local antes de reenviar la entidad completa.Los eventos de ciclo de vida llegan como
entityType: FUNDS_RECOVERY_EVENT (de paso, sin actualización en la BD), con valores de event como FUNDS_RECOVERY_ANALYSED y FUNDS_RECOVERY_COMPLETED.Cash-in y cash-out de transferencia
Cash-in y cash-out de transferencia
Eventos de transferencias Pix entrantes y salientes.Cash-in (transferencia entrante):Cash-out (transferencia saliente):
Cash-in y cash-out de devolución
Cash-in y cash-out de devolución
Eventos de liquidación de devoluciones de transacciones Pix.Cash-in de devolución (recibir una devolución):Cash-out de devolución (enviar una devolución):
Próximos pasos
- Dominios principales de Pix: transferencias: Las operaciones de transferencia en detalle
- Dominios principales de Pix: DICT: Entender las operaciones de DICT y la gestión de claves
- Dominios principales de Pix: MED: Manejo de disputas y devoluciones de MED
- MED 2.0 — Recuperación de fondos: Recuperación de fraude entre cuentas y sus webhooks
- Transferencias intra-PSP: Liquidación P2P interna e informes TRCK002
- Referencia de API: Documentación completa de la API para las operaciones de DICT, reclamaciones, transacciones, códigos QR y MED

