Skip to main content

Qué son los Webhooks

Los webhooks permiten que NTX Pay envíe notificaciones HTTPS a tu servidor cada vez que ocurre un evento relevante — confirmación de cash-in, falla de cash-out, devolución — sin que tengas que hacer polling.

Tipos de Webhook

Al registrar un webhook vía POST /api/webhooks-config, eliges qué tipo de evento recibe esa URL:
Cada webhook se suscribe a exactamente un tipo. Para recibir varios tipos en URLs separadas, crea un webhook por tipo — o usa all para centralizar todo en una URL y enrutar por el campo event del payload.

Payload

Todo webhook entrega el mismo formato de payload:
string
Tipo del evento: transaction.cash_in.settled, transaction.cash_in.rejected, transaction.cash_in.returned, transaction.cash_out.settled, transaction.cash_out.rejected, transaction.cash_out.returned, o las variantes .pending. Usa este campo para enrutar el procesamiento.
string
Identificador de la transacción. Correlaciónalo con el id devuelto al crear el cobro/la transferencia.
integer
Monto en centavos MXN.
string
LIQUIDATED (liquidado), REJECTED (rechazado), RETURNED (devuelto), EXPIRED (expirado sin pago) o PENDING (en procesamiento).
string
CLABEs de destino y origen de la transferencia. Pueden venir null dependiendo del flujo.
string
Nombre de quien pagó (cash-in), cuando la red lo informa. Puede venir null.
string
Referencia numérica SPEI y comprobante, cuando estén disponibles.
string
Timestamp ISO 8601 del evento.

Headers

Valida siempre la firma antes de procesar — sin eso, cualquier persona puede falsificar notificaciones. Consulta Implementación.

Garantías de Entrega

  • At-least-once: puedes recibir el mismo evento más de una vez. Deduplica por x-event-id.
  • Retries: hasta 5 intentos con backoff exponencial (a partir de ~5s) si respondes con un status distinto de 2xx.
  • Timeout: 10 segundos. Responde rápido — procesa de forma asíncrona si es necesario.
  • Orden: los eventos pueden llegar fuera de orden en condiciones de error. Revisa occurredAt en el payload.

Prácticas Recomendadas

  1. Responde 200 inmediatamente después de validar la firma y encolar el evento.
  2. Deduplica por x-event-id.
  3. Enruta por el campo event — no asumas que una URL recibe un único tipo (especialmente con all).
  4. Maneja status explícitamente — implementa los cuatro estados (LIQUIDATED, REJECTED, RETURNED, PENDING).
  5. HTTPS obligatorio — los webhooks solo se envían a URLs con protocolo HTTPS.

Próximos Pasos

Configuración

Registra la URL en tu cuenta y dispara un webhook de prueba

Implementación

Ejemplos en Node.js, Python, Java y Go de validación HMAC