Verificación de datos en listas oficiales

Integración del Servicio Verificación de datos en listas oficiales en JAAK KYC para API

Una vez extraídos los datos del documento en el paso anterior, se procede a verificar esta información contra diversas listas oficiales que permiten validar la identidad del cliente y detectar posibles riesgos. Este paso es fundamental para garantizar que la persona no esté vinculada a actividades ilícitas o se encuentre dentro de registros de alto riesgo, al mismo tiempo que confirma su existencia en bases legítimas del gobierno.

No todas las listas tienen un enfoque restrictivo o de riesgo; algunas están diseñadas para confirmar información oficial. Por ello, en lugar de “listas negras”, nos referimos a esta etapa como verificación contra listas oficiales. Algunos ejemplos:

Listas de riesgo internacional: como Interpol o OFAC, utilizadas para detectar vínculos con actividades ilícitas o sanciones.

Listas de validación nacional: como INE, RENAPO o SAT, empleadas para confirmar la identidad y existencia legal del individuo.

Los servicios disponibles en esta etapa son: INE, Interpol, OFAC, RENAPO y SAT.


⚠️

Nota: Solo puedes consultar una lista por solicitud. Aunque la firma para consumir el servicio es la misma, cada lista requiere parámetros específicos según la naturaleza de los datos que valida.


A continuación, se detalla la estructura general de la URL para estas consultas, junto con los parámetros requeridos. Posteriormente, encontrarás una serie de tablas que indican qué campos debes enviar para cada servicio y cómo relacionarlos con los datos extraídos del documento.


URL

POST https://sandbox.api.jaak.ai/api/v2/blacklist/investigate

Header

Authorization: Bearer token-session-kyc
CampoTipoRequeridoDescripción
AuthorizationstringEn esta cabecera se debe enviar el Token de Sesión KYC que se ha obtenido del intercambiado con de Short Key

Request

{
    "services": {
        "ine": Boolean,
        "interpol": Boolean,
        "ofac": Boolean,
        "renapo": {
            "curp": Boolean
        },
        "sat": {
            "sat69b": Boolean
        },
        "cdc": {
            "rccFico": Boolean
        }
    },
    "payload": {
        "person": {
            "name": String,
            "secondName": String,
            "lastName": String,
            "secondLastName": String,
            "birthDate": String,
            "nationality": String,
            "additionalLastName": String
        },
        "address": {
            "address": String,
            "neighborhood": String,
            "municipality": String,
            "city": String,
            "state": String,
            "postalCode": String
        },
        "identifications": {
            "curp": String,
            "rfc": String,
            "socialSecurityNumber": String,
            "electorKey": String,
            "ine": {
                "cic": String,
                "ocr": String
            }
        },
        "extras": {
            "commonId": String,
            "wantedIn": String
        }
    }
}
CampoTipoDescripción
servicesObjetoContiene los distintos servicios de listas negras en los que es posible realizar una verificación (ver sub-tablas)
payloadObjetoContiene la información a buscar del servicio elegido (ver sub-tablas)

Objeto services

CampotipoDescripción
inebooleanRealiza verificación en Instituto Nacional Electoral (INE).
interpolbooleanRealiza verificación en Interpol.
ofacbooleanRealiza verificación en Oficina de Control de Activos Extranjeros (OFAC).
renapo.curpbooleanRealiza verificación en Registro Nacional de Población (RENAPO).
sat.sat69bbooleanRealiza verificación en Servicio de Administración Tributaria (SAT).
cdc.rccFicobooleanRealiza verificación en Centro de Datos de Crédito (CDC).

Objeto payload

CampoTipoDescripción
payload.personObjetoContiene la información de respuesta (ver sub-tablas)
payload.addressObjetoContiene la información de respuesta (ver sub-tablas)
payload.identificationsObjetoContiene la información de respuesta (ver sub-tablas)
payload.extrasObjetoContiene la información de respuesta (ver sub-tablas)

Objeto payload.person

CampotipoDescripción
namestringPrimer nombre de la persona a buscar.
secondNamestringSegundo nombre de la persona a buscar.
lastNamestringPrimer apellido de la persona a buscar.
secondLastNamestringSegundo apellido de la persona a buscar.
birthDatestringFecha de nacimiento de la persona a buscar (Formato: YYYY-MM-DD).
nationalitystringNacionalidad del la persona a buscar.
additionalLastNamestringApellido adicional de la persona a buscar.

Objeto payload.address

CampotipoDescripción
addressstringCalle y número de la dirección de la persona a buscar.
neighborhoodstringColonia o barrio del usuario de la persona a buscar.
municipalitystringMunicipio o delegación de la persona a buscar.
citystringCiudad de residencia de la persona a buscar.
statestringEstado de residencia de la persona a buscar.
postalCodestringCódigo postal de la dirección de la persona a buscar.

Objeto payload.identifications

CampotipoDescripción
curpstringClave Única de Registro de Población (CURP) de la persona a buscar.
rfcstringRegistro Federal de Contribuyentes (RFC) de la persona a buscar.
socialSecurityNumberstringNúmero de Seguridad Social (NSS) de la persona a buscar.
electorKeystringClave de Elector del INE de la persona a buscar.
ineObjectObjeto con datos de la credencial del INE de la persona a buscar. (ver sub-tablas)

Objeto payload.identifications.ine

CampoTipoDescripción
cicstringCódigo de Identificación de la Credencial INE del documento a buscar.
ocrstringNúmero Oficial de Identificación (OCR) del documento a buscar.

Objeto payload.extras

CampotipoDescripción
commonIdstringIdentificador común del usuario (puede ser ID interno del sistema) de la persona a buscar.
wantedInstringCódigo del país donde se busca al usuario ("MEX" para México) de la persona a buscar.

Response

{
    "eventId": String,
    "responseId": String,
    "processTime": Double,
    "organization": String,
    "service": String,
    "result": {},
    "state": {
        "foundInService": Bolean,
        "mustBeFound": Boolean,
        "message": String
    }
}
CampoTipoDescripción
eventIdstringID para trazabilidad de los detalles del evento.
responseIdstringID de la respuesta.
organizationstringLa entidad gubernamental en la cual se apoya la consulta
servicestringEs el servicio de la entidad en el cual se realiza la consulta
processTimedoubleTiempo de procesamiento de la consulta del servicio
resultobjectObjeto con los datos de la persona encontrada si fuera el caso
stateobjectSon estados en el que te puedes apoyar para saber si fue encontrado la persona

Objeto state

Campo

Tipo

Descripción

foundInService

boolean

Indica si la persona fue encontrada en el servicio o no.

mustBeFound

boolean

Define si se espera encontrar la persona en el servicio para que el proceso sea exitoso o no. Por ejemplo: para OFAC el no encontrar a una persona en el servicio es un caso exitoso, por el contrario en INE si se encuentra a una persona es considerado como un caso exitoso.

message

string

Mensaje referente a la búsqueda de la persona en servicio


A continuación, se exhibirán una serie de tablas organizadas por servicio de listas. En estas tablas, se detallarán los campos necesarios para cada lista y su correspondencia con los datos extraídos del paso anterior.


Para hacer la verificación mediante el servicio INE deberás enviar los siguientes datos:

Campo enviado en la llamada APIRequeridoDato extraído del documento en el paso anterior
payload.identifications.ine.cicSicontent.data.document.additionalNumber
payload.identifications.ine.ocrSicontent.data.personal.extra.ocr

Para hacer la verificación mediante el servicio INTERPOL deberás enviar los siguientes datos:

Campo enviado en la llamada APIRequeridoDato extraído del documento en el paso anterior
payload.person.nameSicontent.data.personal.name
payload.person.secondNameNocontent.data.personal.secondName
payload.person.lastNameSicontent.data.personal.sureName
payload.person.secondLastNameNocontent.data.personal.motherSurname

Para hacer la verificación mediante el servicio OFAC deberás enviar los siguientes datos:

Campo enviado en la llamada APIRequeridoDato extraído del documento en el paso anterior
payload.person.nameSicontent.data.personal.name
payload.person.secondNameNocontent.data.personal.secondName
payload.person.lastNameSicontent.data.personal.sureName
payload.person.secondLastNameNocontent.data.personal.motherSurname

Para hacer la verificación mediante el servicio RENAPO deberás enviar los siguientes datos:

Campo enviado en la llamada APIRequeridoDato extraído del documento en el paso anterior
payload.identifications.curpSicontent.data.document.personalIdNumber

Para hacer la verificación mediante el servicio SAT deberás enviar los siguientes datos:

Campo enviado en la llamada APIRequeridoDato extraído del documento en el paso anterior
payload.person.nameSicontent.data.personal.name
payload.person.secondNameNocontent.data.personal.secondName
payload.person.lastNameSicontent.data.personal.sureName
payload.person.secondLastNameNocontent.data.personal.motherSurname
payload.identifications.rfcSicontent.data.personal.extra.rfc

A continuación, te mostraremos un ejemplo de una consulta al servicio de RENAPO

Request

{
    "services": {
        "ine": false,
        "interpool": false,
        "ofac": false,
        "renapo": {
            "curp": true
        },
        "sat": {
            "sat69b": false
        },
        "cdc": {
            "rccFico": false
        }
    },
    "payload": {
        "identifications": {
            "curp": "aqui va la curp"
        }
    }
}

Response

{
    "eventId": "749f88b9-ecce-4f4c-920a-f8ece706501a",
    "responseId": "",
    "processTime": 0.23123526573181152,
    "organization": "curp",
    "service": "validaCurp",
    "result": null,
    "state": {
        "message": "Investigation completed successfully",
        "foundInService": false,
        "mustBeFound": true
    }
}

Como se muestra en el ejemplo anterior, se realizó una consulta al servicio de RENAPO. En la solicitud, podemos observar que solo se activó un servicio, services.renapo.curp, y que únicamente se enviaron los campos necesarios para llevar a cabo la búsqueda de dicho servicio.

El campo state dentro del Response debería haber indicado que se encontró a una persona para que la búsqueda se considere exitosa. Sin embargo, el campo foundInService muestra que no se encontró a la persona.

En resumen, al contrastar los datos extraídos del documento con diversas listas negras, garantizamos la protección tanto de la empresa como de los usuarios. Este proceso asegura la integridad y el cumplimiento del sistema, ayudando a prevenir fraudes.

Una vez verificado los datos del documento en las listas negras continuemos con los siguientes pasos.