KYC

JAAK mejora el proceso KYC integrando herramientas especializadas tales como Liveness, One to One, Document y Blacklist una sola sesión, así como haciendo la disponible la verificación en tiempo real.


Empezando


Siga estos pasos para comenzar:

  • Obtén un Api Key: Ingresa a la plataforma y obtén un Api Key.
  • Genera un API Key: Utiliza el ApiKey para acceder a los productos JAAK
  • Genere un flujo KYC: Utilice el endpoint de sesiones KYC para generar un código de KYC.
  • Realiza tu flujo en el dashboard de KYC: Utiliza el link de redirección o tu código para empezar tu proceso KYC.
  • Verifique su sesión: Compruebe el resultado de la sesión después de ejecutar todos sus pasos.
  • Apruebe o rechace un flujo: En caso de ser necesario, el administrador podrá aceptar o rechazar un flujo

Inicia tú KYC


Construir su proceso KYC con JAAK es sencillo y efectivo:

1. Inicia sesión

Para proceder, es indispensable generar una clave API con un tiempo de expiración definido.

Este proceso puede completarse fácilmente mediante el panel de administrado. Esto garantiza un acceso seguro y gestionado a los recursos necesarios durante el tiempo estipulado.

Para más detalles, consulta la documentación específica de cada método disponible a través de los siguientes enlaces:


2. Crea un código para acceder a un flujo KYC

Lanza una petición http POST a [basePath]/api/v1/kyc/flowdonde debes incluir las cabeceras Authorization Bearer con tu Api Key generada con anterioridad1. Crea un Api Key, asi como la cabecera Origin, la cual acorde al ambiente que utilices se debe colocar dicha url.

Los posibles valores para la cabecera Origin encuentran dependiendo del ambiente.

Si la propiedad redirectUrl dentro del cuerpo de tu peticion NO es nula o vacia, se tomara esta con mayor jerarquia.

Para pruebas y ambientes de sandbox se recomienda utilizar la cabecera Origin con el valor del ambiente sandbox.

curl -X POST "https://sandbox.api.jaak.ai/api/v1/kyc/flow" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer <accessToken>" \
     -d '{
           "name": "<nombre_sesion>",
           "flow": "<detalle_flujo>",
           "redirectUrl": "<url_redireccion>",
           "verificationType": "<tipo_verificacion>",
           "flowType": "KYC",
           "countryDocument": "<pais_documento>",
           "verification": {
              "SMS": "<verificacion_sms>",
              "EMAIL": "<verificacion_email>",
              "WHATSAPP": "<verificacion_whatsapp>"
           }
         }'
CampoDescripciónTipo de Datos
nameEspecifique un nombre para su sesión KYC.String
flowProporcione detalles sobre el flujo KYC.String
redirectUrlEstablezca la URL a la que serán redirigidos los usuarios después de completar el KYC.String
verificationTypeIndique el tipo de verificación a realizar. Opciones válidas: "sms", "email" o "whatsapp".String
flowTypeIndique el tipo de flujo a ejecutar. Para crear una sesión KYC el valor debe ser "KYC".String
countryDocumentEspecifique el país del documento para la verificación. Siendo elegibles México, Peru, Colombia y ParaguayString
verificationIncluya detalles de verificación para SMS, correo electrónico y WhatsApp.Objeto

📝 El código de los paises soportados para cada país es el siguiente

  • México: MEX
  • Colombia: COL

Para mas información visita https://www.iban.com/country-codes o revisa la información referente sobre el tema ISO 3166-1 alpha-3

Como respuesta obtendrás el siguiente JSON:

{
  "redirectUrl":"https://sandbox.kyc.jaak.ai/session/FTJyslH"
}

El objeto recibido, con un único parámetro redirectUrl, indica un link de redirección para dirigirte al panel de onboarding del proceso de KYC. De esta liga de redirección debes extraer y guardar el valor shortKey el cual es el valor que se encuentra despues de.../session/. Este nos ayudara a generar un ApiKey el cual unirá los productos en un solo flujo de KYC.

📝 Detalles de contexto ShortKey

  • Tiene una expiración de 3 días.
  • Esta propiedad te permitirá iniciar tu flujo de KYC incluso aunque no lo hayas terminando, generando un accessToken nuevo cada vez que esto ocurra.
  • El shortkey o codigo generara un token de acceso KYC el cual expira en 15 minutos, este es unico para este codigo.
  • Una vez terminado un flujo el codigo (shortkey) expira, por lo que la informacion referente a este podra ser consultada siguiendo los pasos Observa tus resultado


3. Intercambia el código por un token de acceso de kyc

Realiza una peticion http POST al endpoint [basePath]/api/v1/kyc/session colocando como cabecera Short-Key con el valor del código (shortKey) del paso anterior:

curl -X POST "\<https\://sandbox.api.jaak.ai/api/v1/kyc/session>" \ 
	-H "Content-Type: application/json" \\
	-H "Short-Key: \<shortKey>"

Como resultado obtendremos este JSON:

{  
    "accessToken": "<accessToken>",
    "step": 0,
    "sessionId": "soy_un_id",
    "assets": {
        "document": null,
        "liveness": null
    },
    "document": "MEX"
}
ParámetroDescripción
accessTokenToken de acceso de KYC.
assetsObjeto que contiene los activos.
documentObjeto que contiene los datos del documento.
eventIdIdentificador del evento.
messageMensaje de error.
processingTimeTiempo de procesamiento en milisegundos.
requestIdIdentificador de la solicitud.
statusEstado de la respuesta.
livenessObjeto que contiene datos de prueba de vida.
sessionIdIdentificador del flujo.
stepPaso actual del proceso.

Cómo continuar

Para poder continuar con el flujo de KYC e integrar productos a un flujo KYC es necesario el valor del campo accessToken o token de acceso KYC, el cual logra su objetivo mediante agregar dicho valor a la cabecera Authentication Bearer. Este token tiene como propiedad el rol de api-key por lo que nos permitira usarlo unicamente para enlazar los productos de JAAK.


4. Agrega Ubicacion al iniciar un flujo KYC (Opcional)

Este paso es opcional, si no deseas agregar ubicación dentro de tu flujo puedes omitir este paso e ir al paso 5.

ℹ️ JAAK recomienda implementar ubicacion dentro de tus flujos.

Realiza una peticion http POST a [basePath]/api/v1/kyc/session/location incluyendo en el cuerpo de la peticion los valores de longitud y latitud, asi como el valor de tu accessToken con rol api-key como cabecera de autorizacion:

curl -X POST "https://sandbox.api.jaak.ai/api/v1/kyc/session/location" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer <accessToken>" \
     -d '{
           "latitude": <float>,
           "longitude:" <float>
         }'

Como respuesta debes obtener un cuerpo vacio {} y un estado de respuesta OK 200, indicando que la ubicacion se actualizo correctamente en el flujo.



5. Realiza llamadas al flujo con el token de acceso de kyc

Utilizando el token de acceso KYC (accessToken obtenido con anterioridad), podremos enlazar los productos de una manera simple.

Para esto, realizamos una peticion a la url de la funcionalidad del producto que deseemos agregar e incluyendo la cabecera Authorization Bearer podremos obtener los resultados de cada producto dentro de nuestro flujo KYC.

Ejemplos
Los ejemplos muestran como ligar nuestros productos con un token de acceso KYC. Estos ejemplos no reflejan el uso real de nuestros productos, solo muestran como hacer el link entre un flujo de KYC, para esto, se recomienda visualizar la documentacion de cada producto en especifico.

curl -X POST "<https://sandbox.api.jaak.ai/api/v2/oto/verify>" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer <accessToken>" \
     -d '{
           "image1": "imageBase64",
           "image2": "imageBase64",
           "eventId": "example_event_id" //Opcional
         }'


curl -X POST "<https://sandbox.api.jaak.ai/api/v1/liveness/verify-and-bestframe>"
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer <accessToken>" \
     -d '{
           "video": "videoBase64",
         }'

6. Finaliza la Session de KYC

Una ves que hayas terminado de ligar los productos que desees, podras finalizar la flujo de onboarding KYC realizando una peticion HTTP al endpoint [basePath]/api/v1/kyc/session/finish con la cabecera Authorization Bearer agregando como valor el token de acceso KYC que hemos estado utilizando en los pasos anteriores:

curl -X POST "<https://sandbox.api.jaak.ai/api/v1/kyc/session/finish>"
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer <accessToken>"

Como resultado obtendremos un objeto JSON el cual nos da los detalles completos del flujo (dicha respuesta es bastamte extensa por lo que se indican las principales propiedades que puedes encontrar:

{
  "session": {...},
  "summary": {...},
  "flow": {...}
}

CampoDescripción
sessionInformación de sesión.
summaryResumen de datos.
flowFlujo de información.

7. WebHook

Al terminar el flujo, si haz configurado un WebHook para el producto KYC Tradicional dentro de tu Empresa o Compañia, sera ejecutado permitiendo obtener datos relevantes de la session para su posterior revision.

Para mas detalles ve a la sección WebHook KYC Webhooks


8. Revision de sesion

Una ves terminado tu flujo podras realizar una **revision manual **de este, en casos donde el puntaje total no es ni muy bajo ni muy alto. Este endpoint permite realizar actualizaciones manuales para determinar si la verificación finalizó con éxito o fue rechazada.

  • Momento de Uso: El endpoint debe utilizarse solo después de que el estado de la verificación esté en need_review. Aunque es posible llamar a este endpoint en cualquier momento, no realizará ninguna acción hasta que el estado sea need_review.
  • Funcionalidad: Cuando el estado es need_review, el uso de este endpoint actualizará el estado de la verificación de manera efectiva.

Ejemplo de la peticion el cual incluye la cabecera incluyendo la cabecera Authorization Bearer que tiene como valor elaccessToken el cual obtenemos al iniciar sesion Paso 1 :

curl -X PUT "<https://sandbox.api.jaak.ai/api/v1/kyc/session/<sessionId>>/manual-review" \
     -H "accept: application/json" \
     -H "Authorization: Bearer <accessToken>" \
     -d '{"status":"PASS"}'

Recuerda que el ID de la sesion sessionId se puede obtener al generar el ApiKey para empezar tu flujo KYC.

El resultado es el siguiente

{
  "contactName": "<contactName>",
  "endDate": "<endDate>",
  "flowName": "<flowName>",
  "flowType": "<flowType>",
  "location": {
    "city": "<city>",
    "country": "<country>",
    "latitude": 0.0,
    "longitude": 0.0,
    "state": "<state>",
    "origin": "<origin>"
  },
  "rigelUrl": "<rigelUrl>",
  "score": 0.0,
  "sessionID": "<sessionID>",
  "shortKey": "<shortKey>",
  "startDate": "<startDate>",
  "status": "<status>",
  "updateDate": "<updateDate>",
  "validation": "<validation>",
  "verification": {
    "EMAIL": "<EMAIL>",
    "SMS": "<SMS>",
    "WHATSAPP": "<WHATSAPP>",
    "smsDetail": {
      "message": "<message>",
      "status": "<status>",
      "verificationType": "<verificationType>"
    }
  }
}

CampoDescripción
contactNameNombre del contacto
endDateFecha de finalización
flowNameNombre del flujo
flowTypeTipo de flujo
locationObjeto que contiene información de ubicación
rigelUrlURL de RIGEL
scorePuntuación
sessionIDID de sesión
shortKeyClave corta
startDateFecha de inicio
statusEstado (puede ser PASS, FAIL, NEED_REVIEW, ERROR)
updateDateFecha de actualización
validationMétodo de validación (puede ser AUTOMATIC, MANUAL, NEED_REVIEW)
verificationObjeto que contiene información de verificación