¿Cómo funcionan?
1
Registra una URL
Crea un webhook con la URL de tu servidor y los eventos que quieres escuchar.
2
OnePay envía el evento
Cada vez que ocurra un evento seleccionado, OnePay enviará un
POST a tu URL con el payload del evento en formato JSON.3
Responde con 200
Tu servidor debe responder con un código HTTP
2xx o 3xx en menos de 10 segundos. Si no, OnePay reintenta la entrega hasta completar 6 intentos (ver Entrega y reintentos).4
Verifica la firma
Valida siempre el token estático de
x-webhook-token. Si configuraste un secret, valida además el header Signature con ese secreto para asegurarte de que la petición proviene de OnePay.Autenticación de los eventos
Cada entrega llega con estos headers:string
El token estático que definiste al crear el webhook (campo
header). Se envía siempre.string
El tipo de evento, por ejemplo
charge.paid. Se envía siempre.string
HMAC-SHA256 en hexadecimal del cuerpo JSON, calculado con tu
secret. Solo se envía si el
webhook tiene un secret configurado; si lo creaste sin secret, las entregas no van firmadas.JavaScript
Python
PHP
cURL
Eventos disponibles
Pagos
Cargos
Dispersiones
Suscripciones
Cuentas bancarias
Facturas
Facturación electrónica (DIAN)
El timbrado es asíncrono: estos eventos son la forma de enterarte del resultado. Ver Facturas electrónicas.Empresas
Resultado de la verificación de empresas creadas por API. Se entregan a la empresa que hizo el alta.Otros
Entrega y reintentos
Una entrega se considera exitosa si tu servidor responde con un código2xx o 3xx dentro de
los 10 segundos de timeout. Cualquier otra cosa —4xx, 5xx, timeout, error de conexión o
certificado TLS inválido— cuenta como fallida y dispara un reintento.
Calendario de reintentos
Cada evento se entrega en 6 intentos como máximo —la entrega inicial y 5 reintentos— con esperas fijas entre ellos:
Tras el sexto intento fallido el evento deja de reintentarse por esta vía. Todos los intentos —con
su código de respuesta y el cuerpo devuelto por tu servidor— quedan registrados en
Desarrolladores > Eventos del panel de OnePay.
Reenvío automático
Además de los seis intentos inmediatos, dos procesos recuperan lo que quedó sin entregar:- Reconciliación (cada 10 minutos): re-emite eventos terminales de cobros y pagos que nunca
llegaron a entregarse, incluidos los que se perdieron antes del primer intento. Acá una respuesta
4xxcuenta como rechazo definitivo de tu parte y no se re-emite: solo se recuperan los fallos transitorios (5xx, timeout, error de conexión). - Reenvío masivo (cada 6 horas): reenvía los eventos cuyos intentos fallaron todos dentro de las
últimas 7 horas, en ambiente
live. Un evento que se entregó en alguno de sus intentos queda excluido. A diferencia de la reconciliación, este barrido no distingue el motivo del fallo: un evento que solo recibió4xxtambién se reenvía.
Estos reenvíos hacen que tu endpoint pueda recibir el mismo evento más de una vez. Procesa los
eventos de forma idempotente usando
event.type + el id del recurso.La excepción es connect_link.completed: un link con single_use: false se completa muchas veces
y todas las capturas comparten el mismo connect_link.id, así que ahí la clave lleva además
connect_link.completed (ver Link de captura).Desactivación automática del endpoint
Si un webhook acumula 300 eventos consecutivos que agotaron sus 6 intentos sin una sola entrega exitosa, OnePay lo desactiva para dejar de enviarle tráfico y te notifica por correo. Una sola entrega exitosa reinicia el contador. Un webhook desactivado no recibe eventos nuevos, y los eventos ocurridos mientras estuvo apagado no se acumulan para entregarlos después. En Desarrolladores > Webhooks aparece como Deshabilitado, con la fecha y la hora en que se desactivó. Cuando tu endpoint vuelva a responder2xx, reactívalo de una de estas dos formas:
- Desde el panel: en Desarrolladores > Webhooks, abre el menú de acciones del webhook y elige Reactivar.
- Por API: cambia su
urlcon Actualizar webhook. Enviar la misma URL que ya tiene no lo reactiva.
Endpoints
Listar webhooks
Consulta todos los webhooks registrados en tu cuenta.
Ver webhook
Obtén el detalle de un webhook específico.
Crear webhook
Registra una nueva URL y selecciona los eventos a escuchar.
Actualizar webhook
Modifica la URL, nombre o eventos de un webhook existente.
Eliminar webhook
Elimina un webhook de tu cuenta.
Ejemplos de payloads
Revisa la estructura de cada evento que recibirás.