¿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 el header
x-onepay-signature con tu secret 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. Procesá los
eventos de forma idempotente usando
event.type + el id del recurso.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. Para reactivarlo, actualizá su URL desde el panel o con Actualizar webhook — guardar la URL limpia el contador y lo vuelve a habilitar.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.