Skip to main content
Los webhooks te permiten recibir notificaciones HTTP automáticas cuando ocurren eventos en tu cuenta (pagos aprobados, dispersiones procesadas, cargos fallidos, etc.), sin necesidad de consultar la API constantemente.

¿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.
Versiones anteriores de esta página decían que la firma viajaba en x-onepay-signature. Ese header no existe: la firma va en Signature y el token estático en x-webhook-token. Si implementaste la verificación contra x-onepay-signature, nunca encontró el header y es probable que tu endpoint esté procesando eventos sin autenticar.
Valida siempre con comparación en tiempo constante, y rechaza la petición si no coincide.
JavaScript
Python
PHP
cURL
Guarda tu secret de forma segura. Solo se muestra una vez al crear el webhook. Si lo pierdes, deberás eliminarlo y crear uno nuevo.

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ódigo 2xx 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.
El payload y la firma son idénticos en todos los intentos: el cuerpo se congela al generar el evento. Si tu verificación de firma falla en el primer intento, fallará en los seis. Un 4xx tuyo no cancela los reintentos.

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 4xx cuenta 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ó 4xx también se reenvía.
También podés reenviar un evento puntual desde el detalle del evento en el panel. El reenvío arranca un ciclo nuevo de hasta 6 intentos.
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.