Skip to main content

Government Validation

An in-depth explanation of the different countries supported by the /omni/process/government-validation endpoint.

Mexico - INE Validation​

POST /omni/process/government-validation

Country Code - MEX

When government face validation is enabled this method compares the user's selfie against the image in the INE database. The method should be called after add-face is over and one of (process-id or document-id) is over.

Request parameters:

  • fallbackEnabled: Boolean, optional. If it is not sent, it will default to false.
  • scrapingMethod: Boolean, optional. If it is not sent, it will default to false.

If parameter fallbackEnabled is true and there's some connection or infrastructure error with the INE service, validation by scraping will start. If parameter scrapingMethod is true, then direct connection to INE service won't be attempted and the scraping approach will be used instead.

Request Body is optional - if not sent, data will be taken from the session:

  • ocr: String, mandatory for INE and IFE.
  • cic: String, mandatory for INE.
  • nombre: String, optional.
  • apellidoPaterno: String, optional.
  • apellidoMaterno: String, optional.
  • anioRegistro: String, optional.
  • anioEmision: String, optional.
  • numeroEmisionCredencial: String, mandatory for ife.
  • claveElector: String, mandatory for ife.
  • curp: String, optional.

Response:

  • statusCode: Integer. Possible values:

    • OK (0, "ok"),
    • VALIDATION_ERROR (1, "validationError"),
    • INE_CONNECTION_ERROR (2, "ineConnectionError"),
    • INE_INFRASTRUCTURE_ERROR (3, "ineInfrastructureError"),
    • MODULE_NOT_SUPPORTED (4, "moduleNotSupported"),
    • MISSING_DOCUMENT_ID (5, "missingDocumentId"),
    • MISSING_SELFIE (6, "missingSelfie"),
    • USER_NOT_FOUND (7, "userNotFound");
    • USER_NOT_FOUND_IN_INE_DB (8, "userNotFoundInIneDb"),
    • NOT_ENOUGH_DATA (9, "notEnoughData"),
    • LIVENESS_FAIL (10, "livenessFail")
    • INE_NOT_CURRENT (11, "ineNotCurrent")
    • INE_REPORTED_LOST (12, "ineReportedLost")
    • INE_REPORTED_STOLEN (13, "livenessFail")
    • INE_SIGNATURE_ERROR (14, "ineSignaturError")
    • INE_NOT_VALID (15, "ineNotValid")
    • PROVIDER_UNAVAILABLE (98, "providerUnavailable")
    • COUNTRY_NOT_SUPPORTED (99, "countryNotSupported")
    • PROCESSING_INE (-1, "processingIne"). It only applies for Listas Nominales (INE Scraping).
  • valid: Boolean. Flag stating if request processed successfully.

  • registralSituation: Structure with following fields:

    • tipoSituacionRegistral: String. Possible values: [ VIGENTE, NO_VIGENTE, DATOS_NO_ENCONTRADOS ]
    • tipoReporteRoboExtravio: String, optional. Possible values: [ null, REPORTE_DE_EXTRAVIO, REPORTE_DE_ROBO, REPORTE_DE_ROBO_TEMPORAL, REPORTE_DE_EXTRAVIO_TEMPORAL ]
  • governmentValidation: Structure with following fields:

    • validationStatus: Structure with following fields:
      • value: Look statusCode
      • status: Look statusCode
      • key:
        • ok: when value OK
        • error: when value VALIDATION_ERROR, INE_INFRASTRUCTURE_ERROR, USER_NOT_FOUND_IN_INE_DB, INE_NOT_CURRENT, INE_REPORTED_LOST, INE_REPORTED_STOLEN, USER_NOT_FOUND
        • unknown: otherwise
    • ocrValidation: Array of structure with following fields:
      • value: Possible values - true false empty
      • status: Possible values - OK FAIL UNKNOWN
      • key: Possible values - issueDate firstName maternalLastName paternalLastName ocr personalId electorsKey emissionNumber registrationDate
    • ocrValidationOverall: Structure with following fields:
      • value: Calculated value based on Ocr Validation between 0 and 100
      • status: OK or FAIL based on calculation
    • overall: Same as ocrValidationOverall
  • ocrData: Look at fetch-OCR

  • deviceInfo: Look at fetch-deviceInfo

  • ineTransactionId: String

Colombia - Registraduría Provider​

POST /omni/process/government-validation?countryCode=COL

Country Code - COL

Validation performed by Registraduría (source of truth) through a local biometric operator.

Enabling it requires an additional service agreement and use case evaluation by registraduría, you can ask your Incode account manager about it. Once obtained Incode Team can help you configure your credentials and onboarding flows to start using the service.

Validation performed is id data + face match response of "HIT" or "NO HIT" which translates in either a 100 or 0 recognition score. All of the fields are mandatory for the validation per registraduría instructions.

Request Body is optional - any fields that are not sent will be taken from the session obtained from Device Fingerprint, ID capture and Face capture modules:

  • idNumber: String.
  • latitude: String.
  • longitude: String.
  • deviceHash: String.
  • ip: String.
  • osVersion: String.
  • base64Image: String, user's selfie.

Response:

  • statusCode: 0 - OK, other not OK*

  • governmentValidation - consists of the following fieds:

    • validationStatus - following values:
      • OK (0, "ok"),
      • VALIDATION_ERROR (1, "validationError"),
      • USER_NOT_FOUND (7, "userNotFound"),
      • NOT_ENOUGH_DATA (9, "notEnoughData"),
      • PROVIDER_UNAVAILABLE (98, "providerUnavailable"),
    • ocrValidation: Array of structure with following fields:
      • value: Possible values - true false empty
      • status: Possible values - OK FAIL UNKNOWN
      • key: Possible values - firstName maternalLastName paternalLastName ocr birthDate gender
  • governmentValidationResponse: Response received from registraduria

  • ocrValidationOverall:

    • ocrValidationOverall: 100 - 15 each fail or unknown ocrValidation
    • status: OK status if ocrValidationOverall > 55, else FAIL
  • overall: same as ocrValidationOverall

Colombia - TusDatos Provider​

**Note: Government Validations for Colombia acquired via TusDatos

POST /omni/process/government-validation?countryCode=COL

Country Code - COL

Provider does not support face validation.

Can validate registraduría or extranjería (foreign citizens living in colombia).

Request Body is optional - if not sent data will be taken from the session:

  • idNumber: String, mandatory.
  • fechaEmision: String, mandatory when Nationality is not Columbia. Format dd/mm/yyyy
  • nombre: String, optional.
  • apellidoPaterno: String, optional.
  • apellidoMaterno: String, optional.

Response:

  • statusCode: 0 - OK, other not OK*

  • governmentValidation - consists of the following fieds:

    • validationStatus - following values:
      • OK (0, "ok"),
      • VALIDATION_ERROR (1, "validationError"),
      • INE_CONNECTION_ERROR (2, "ineConnectionError"),
      • USER_NOT_FOUND (7, "userNotFound"),
      • NOT_ENOUGH_DATA (9, "notEnoughData")
    • ocrValidation: Array of structure with following fields:
      • value: Possible values - true false empty
      • status: Possible values - OK FAIL UNKNOWN
      • key: Possible values - firstName maternalLastName paternalLastName ocr birthDate gender
  • governmentValidationResponse: Response received from * external source (see example)

  • ocrValidationOverall:

    • ocrValidationOverall: 100 - 15 each fail or unknown ocrValidation
    • status: ocrValidationOverall > 55 => OK, else FAIL
  • overall: same as ocrValidationOverall

Argentina - Renaper Validation​

POST /omni/process/government-validation?countryCode=ARG

Country Code - ARG

Request Body:

  • idNumber: String, mandatory.

Response:

  • statusCode: Integer. Value 0 means verification Ok.

Peru - Reniec Validation​

**Note: Government Validations for Peru obtained by checking against TOC, a risk database. ID must include DNI in order to validate.

POST /omni/process/government-validation?countryCode=PER

Country Code - PER

Currently there's no option for face validation.

Can validate Reniec.

Request Body is optional - if not sent data will be taken from the session.

  • idNumber: String, mandatory (corresponds to DNI number)

  • nombre: String, optional - if not provided ocrValidation for FistName will be UNKNOWN

  • apellidoPaterno: String, optional - if not provided ocrValidation for PaternalLastName will be UNKNOWN

  • apellidoMaterno: String, optional - if not provided ocrValidation for MaternalLastName will be UNKNOWN

  • birthDate: String, optional - if not provided ocrValidation for BirthDate will be UNKNOWN

  • gender: String, optional - if not provided ocrValidation for Gender will be UNKNOWN

Response has the following structure:

  • statusCode: 0 - OK, other not OK

  • governmentValidation - consists of following fieds:

    • validationStatus - following values:
      • OK (0, "ok"),
      • VALIDATION_ERROR (1, "validationError"),
      • INE_CONNECTION_ERROR (2, "ineConnectionError"),
      • USER_NOT_FOUND (7, "userNotFound"),
      • NOT_ENOUGH_DATA (9, "notEnoughData")
  • ocrValidation: Array of structure with following fields:

    • value: Possible values - true false empty
    • status: Possible values - OK FAIL UNKNOWN
    • key: Possible values - documentNumber firstName maternalLastName paternalLastName ocr birthDate gender
  • governmentValidationResponse: Response received from external source (see example)

  • ocrValidationOverall:

    • ocrValidationOverall: 100 - 15*each fail or unknown ocrValidation
    • status: ocrValidationOverall > 55 => OK, else FAIL
  • overall: same as ocrValidationOverall

Chile - Sinacofi Validation​

**Note: Government Validations for Chile obtained by checking against TOC, a risk database. ID must include DNI in order to validate.

POST /omni/process/government-validation?countryCode=CHL

Country Code - CHL

Currently there's no option for face validation.

Can validate Sinacofi.

Request Body is optional - if not sent data will be taken from the session:

  • idNumber: String, mandatory (corresponds Serie)
  • personalNumber: String, mandatory (corresponds RUT/RUN)

Response have following structure:

  • statusCode: 0 - OK, other not OK

  • governmentValidation - consists of following fieds:

    • validationStatus - following values:
      • OK (0, "ok"),
      • VALIDATION_ERROR (1, "validationError"),
      • INE_CONNECTION_ERROR (2, "ineConnectionError"),
      • USER_NOT_FOUND (7, "userNotFound"),
      • NOT_ENOUGH_DATA (9, "notEnoughData")
    • ocrValidation: Array of structure with following fields:
      • value: Possible values - true false empty
      • status: Possible values - OK FAIL UNKNOWN
      • key: Possible values - documentNumber firstName maternalLastName paternalLastName ocr birthDate gender
    • governmentValidationResponse: Response received from external source (see example)
    • ocrValidationOverall:
      • ocrValidationOverall: 100 - 15*each fail or unknown ocrValidation
      • status: ocrValidationOverall > 55 => OK, else FAIL
    • overall: same as ocrValidationOverall