Obtener resultados de verificación con webhooks

Didit no te envía un correo cuando una verificación cambia de estado - configura un webhook para que tu backend se entere en el momento en que ocurre, y verifica la firma antes de confiar en él.

Short answer

Un webhook es una solicitud HTTP que Didit envía a tu URL cuando algo cambia. Añade un destino en API & Webhooks, suscríbete a los eventos que quieras (no hay comodín, lista todos), guarda el secreto de firma, y verifica la firma antes de procesar nada.

Didit no te envía un correo cuando una sesión pasa a En revisión o Rechazada. Para enterarte en el momento en que un estado cambia, sin recargar la consola, configura un webhook: una URL en tu servidor a la que Didit envía la actualización automáticamente.

Los webhooks son el patrón de integración recomendado. Sondear el endpoint de decisión funciona como respaldo, pero es más lento, consume más solicitudes, y se pierde eventos que solo se entregan por webhook: ediciones de datos hechas por un revisor, cambios de estado de transacciones y cambios a nivel de entidad.

#Configurar uno

  1. Ve a API & Webhooks

    En la Consola de Negocio, abre la aplicación para la que quieres recibir eventos, y luego ve a API & Webhooks.

  2. Añade un destino

    Dale una etiqueta, la URL HTTPS pública de tu endpoint, y elige los eventos que quieras recibir: como mínimo, cambios de estado de sesión.

  3. Guarda el secreto de firma

    El destino te muestra un secreto una sola vez. Guárdalo: tu servidor lo usa para confirmar que una solicitud viene realmente de Didit y no de un impostor. Pasos completos de verificación: Signature verification.

  4. Pruébalo

    Usa Try Webhook en la misma página para enviar un evento de prueba completamente formado (escenarios de aprobado, rechazado, en revisión, KYB, entidad y transacción) a tu endpoint. Puedes validar tu integración así sin ejecutar una verificación real.

Destinos de webhook en la consola de Didit con eventos suscritos e historial de entregas
  1. Add destination registra la URL a la que Didit publica los resultados.
  2. Verifica cada entrega contra este secreto de firma antes de confiar en ella.
  3. Elige qué eventos recibe un destino.
  4. Test Webhook envía un payload de muestra para que puedas confirmar que tu endpoint lo acepta.
Cada destino tiene sus propios eventos suscritos, secreto de firma y registro de entregas.

#Los eventos a los que puedes suscribirte

No hay comodín: lista cada familia de eventos que quieras. Repartirlos entre varios destinos está bien y a menudo es más limpio.

EventoSe dispara cuando
status.updatedEl estado de una sesión de KYC o KYB cambia. El que casi con toda seguridad quieres
data.updatedSe edita un dato de verificación después de crearse: un revisor corrigiendo un campo
user.status.updatedUn usuario consolidado pasa entre ACTIVE, FLAGGED y BLOCKED
user.data.updatedCambian el perfil, los contadores o los identificadores de un usuario consolidado
business.status.updatedCambia el estado de una empresa consolidada
business.data.updatedCambian los datos de una empresa consolidada
transaction.createdSe crea una transacción y su veredicto inicial está listo
transaction.status.updatedEl estado de una transacción cambia después
travel_rule.status.updatedCambia el estado de un intercambio de Travel Rule
Note

No existe session.status.updated ni kyc.completed. Si te suscribiste a un nombre que no está en esta lista, no recibirás nada, y parecerá exactamente un fallo de entrega. Comprueba primero el nombre.

#Qué debe hacer tu endpoint

  • Verificar la firma antes que nada. Aplica HMAC al cuerpo en bruto de la solicitud, nunca a una versión re-serializada del JSON analizado, porque volver a convertirlo a cadena cambia los bytes y la firma no coincidirá. Usa una comparación en tiempo constante.
  • Devolver un 2xx rápido. Haz el trabajo pesado de forma asíncrona, después de responder.
  • Ser idempotente. Usa como clave el id del evento, o el id de sesión más el estado más el tipo de webhook. Los reintentos y los duplicados ocurren.
  • Gestionar cada estado que te importe, incluidos los que llegan mucho después del alta: una sesión aprobada puede pasar más tarde a En revisión a través de la monitorización AML continua.
  • Solo HTTPS. Los endpoints HTTP simples no son compatibles.

#Reintentos

Ante un 5xx, un 404, un timeout, o un fallo de conexión, Didit reintenta dos veces:

  • Primer reintento aproximadamente 1 minuto después del fallo inicial
  • Segundo reintento aproximadamente 4 minutos después de ese

Después de eso, la entrega se descarta. Cada intento se registra por separado en la pestaña Deliveries del destino, así que puedes ver exactamente qué pasó en lugar de adivinar.

Important

Dos reintentos en cinco minutos no son una cola duradera. Si tu endpoint estuvo caído una hora, esos eventos han desaparecido. Reconcilia al arrancar sondeando el endpoint de decisión para las sesiones de las que no tengas un estado final: los webhooks son la vía rápida, no la única vía.

#Detrás de un firewall o un WAF

Didit entrega desde la IP estática 18.203.201.92 con un user agent DiditWebhook/2.0. Si tu borde bloquea clientes desconocidos (la postura por defecto de Cloudflare, por ejemplo), permite esa IP para el hostname receptor, o las entregas fallarán antes de llegar a tu código.

#¿Todavía no tienes un backend?

Puedes seguir vigilando los resultados manualmente en la sección Verifications de la consola mientras construyes uno, o usar un enlace de verificación sin código mientras tanto.

#Próximos pasos