Didit no envía un correo cuando una verificación cambia de estado: configura un webhook, suscríbete a los eventos y verifica la firma antes de confiar en él.

Respuesta corta

Un webhook es una solicitud HTTP que Didit envía a tu URL cuando algo cambia. Añade un destino en Desarrolladores → 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 Desarrolladores → Webhooks

    Abre Desarrolladores → Webhooks en la aplicación y el entorno correctos.

  2. Añade un destino

    Pulsa Añadir endpoint, introduce una URL HTTPS pública, elige los eventos y la versión v3, y guarda. No hay comodín: suscribe cada evento.

  3. Guarda el secreto de firma

    Abre el endpoint y revela el secreto tras volver a autenticarte. Se oculta después de 60 segundos. Guárdalo en tu servidor y verifica la firma del cuerpo sin modificar antes de procesarlo.

  4. Pruébalo

    Pulsa Enviar evento de prueba y selecciona un escenario. El envío está firmado; comprueba la solicitud, la respuesta y su estado en el inspector o tu servidor.

Destinos de webhook en la consola de Didit con eventos suscritos e historial de entregas
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
Nota

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

Didit reintenta las respuestas 5xx y 404 dos veces: aproximadamente 1 minuto después del fallo inicial y 4 minutos después del primer reintento. El tiempo de espera es de 5 segundos. Los fallos de conexión y los timeouts no activan estos reintentos automáticos. Consulta cada intento en el endpoint y usa Reenviar cuando corresponda. Reconcilia los resultados mediante el endpoint de decisión si falta una entrega.

Importante

Los webhooks no garantizan la entrega durante una caída prolongada. Recupera los estados que falten con el endpoint de decisión y procesa los eventos de forma idempotente.

#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

¿Sigues atascado? Habla con una persona.

Incluye el ID de tu organización y el ID de la sesión sobre la que preguntas.

Contactar con soporte