Para habilitar webhooks, contacta al equipo de Palomma y proporcionanos la URL
donde deseas recibir los eventos.
Cuando notificamos
Solo enviamos webhooks en estado final. Cada factura y liquidacion genera una unica notificacion. No recibiras multiples webhooks mientras un recurso pasa por estados intermedios.Requisitos de respuesta
Tu endpoint debe devolver HTTP 200 en menos de 5 segundos. Si no recibimos respuesta a tiempo, la entrega se considera fallida y se reintentara. Recomendamos confirmar la recepcion inmediatamente y procesar el payload de forma asincrona.Estructura de la solicitud
Cada webhook es una solicitudPOST con un cuerpo JSON que contiene estos campos de nivel superior:
Identificador unico de esta notificacion. El mismo
webhookId se reutiliza en
los reintentos para que puedas deduplicar.Timestamp ISO 8601 del momento en que se realizo este intento de entrega (se actualiza en cada reintento).
Tipo de evento:
invoice o settlement.Payload del evento. La estructura depende de
type (ver abajo).Payloads de eventos
- Factura
- Liquidacion
Se envia cuando una factura alcanza su estado final (
type: "invoice").Identificador unico de la factura.
Referencia de la factura proporcionada por el comercio.
Uno de
ready, paid, cancelled o chargeback.Monto de la factura en COP.
Descripcion de la factura.
Identificador del contrato.
Fecha y hora de expiracion del link de pago (ISO 8601).
Numero de documento del cliente.
Nombre del cliente.
Fecha y hora de creacion de la factura (ISO 8601).
Cuando se pago la factura. Presente en facturas pagadas y con contracargo.
Metodo de pago utilizado. Presente en facturas pagadas y con contracargo.
Uno de
whatsapp, portal o link. Presente en facturas pagadas y con contracargo.Monto realmente pagado en COP. Presente en facturas pagadas y con contracargo.
Fecha esperada de liquidacion. Presente en facturas pagadas y con contracargo.
Ciclo esperado de liquidacion. Presente en facturas pagadas y con contracargo.
Identificador del pago. Presente en facturas pagadas y con contracargo.
URL de la pagina de pago de Palomma para esta factura.
Verificacion de firmas
Cada webhook incluye un headerX-Signature para que puedas confirmar que la solicitud proviene de Palomma. La firma es un HMAC-SHA256 del cuerpo crudo de la solicitud, usando la integrityKey asignada a tu cuenta.
Para verificar:
- Lee el cuerpo crudo de la solicitud como string.
- Calcula un HMAC-SHA256 de ese string usando tu
integrityKey. - Compara el resultado con el header
X-Signature. Si coinciden, la solicitud es autentica.
Ejemplo (Node.js)
Reintentos
Si una entrega falla, Palomma reintentara hasta 4 veces. El tiempo de espera entre reintentos aumenta con cada intento:| Intento | Espera aproximada |
|---|---|
| 1er reintento | ~1 minuto |
| 2do reintento | ~5 minutos |
| 3er reintento | ~25 minutos |
| 4to reintento | ~2 horas |
Manejo de duplicados
En los reintentos, elwebhookId se mantiene igual pero el timestamp se actualiza. Almacena el webhookId despues de procesar un evento exitosamente. Si recibes el mismo webhookId de nuevo, ignoralo.
