Skip to main content

Overview

The ID Verification, Face Match, and Liveness APIs return a warnings field when the verification service signals non-blocking issues or risk flags. Session-based KYC (POST /api/kyc/validations, GET /api/kyc/validations/:id) stores a top-level warnings array on the validation record by merging risk codes from document verification, liveness, face match, and AML screening, and may add Gu1-internal codes (e.g. blocklist or sandbox). Clients can use these codes for:
  • Display: Map each code to a human-readable message (e.g. your own i18n, or the descriptions below — the gu1 dashboard resolves labels in the same order as keys under warningRisks and rejectionReasonCodes in the product locale files).
  • Logic: Branch on specific codes (e.g. DOCUMENT_EXPIRED vs POSSIBLE_DUPLICATED_USER), or pass allowed codes in omitWarnings when creating a validation.
The codes are per service for standalone APIs; the session validation record uses the union of services plus internal codes. Below are the documented values.
If the service returns a code not listed here, you may still receive it in warnings. Treat unknown codes as generic warnings and display the code or a fallback message.

Session-Based KYC Validation

For GET /api/kyc/validations/:id (and list endpoints), the validation’s top-level warnings array contains risk code strings collected from:
  • Document (ID) verification step
  • Liveness step
  • Face match step
  • AML screening objects in the session decision
  • Device & IP analysis objects in the session decision (ip_analyses[] / ip_analysis)
Additional codes may be appended by Gu1 rules (e.g. organization blocklist enforcement). Optional omitWarnings on POST /api/kyc/validations references the same code strings documented in the tables below.

ID Verification

Returned in POST /api/kyc/id-verification and GET /api/kyc/id-verification/verifications/:id in the warnings array. The same codes can appear on session validations from the document step.
CodeDescription
ID_DOCUMENT_IN_BLOCKLISTThe document has been identified as matching an entry in your document blocklist (e.g. previously marked as fraudulent, stolen, or otherwise problematic).
BARCODE_NOT_DETECTEDThe system could not find or read the barcode on the document; may be due to poor image quality or unsupported document type.
BARCODE_VALIDATION_FAILEDThe barcode could not be validated against other data on the document.
QR_NOT_DETECTEDThe system could not find or read the QR code on the document.
QR_VALIDATION_FAILEDThe QR code could not be validated against other data on the document.
MRZ_NOT_DETECTEDThe Machine Readable Zone (MRZ) could not be found or read.
MINIMUM_AGE_NOT_METThe user’s age is below the minimum required for the application.
DATA_INCONSISTENTOCR data and NFC chip data do not match; possible document tampering or data inconsistency.
COULD_NOT_RECOGNIZE_DOCUMENTThe system could not confirm the authenticity or validity of the document.
PORTRAIT_IMAGE_NOT_DETECTEDThe portrait image on the document could not be identified or processed.
IMAGE_TOO_BLURRYThe document image is too blurry; recapture with better focus.
IMAGE_TOO_DARKThe document image is too dark; improve lighting when capturing.
IMAGE_TOO_BRIGHTThe document image is too bright or overexposed; avoid direct light when capturing.
DOCUMENT_NUMBER_NOT_DETECTEDThe document number could not be located or read.
DATE_OF_BIRTH_NOT_DETECTEDThe date of birth on the document could not be identified or processed.
EXPIRATION_DATE_NOT_DETECTEDThe expiration date on the document could not be identified or processed.
NAME_NOT_DETECTEDThe first name and/or last name on the document could not be identified or processed.
MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAMEDifferences between MRZ and OCR-extracted data; possible document alteration.
MRZ_VALIDATION_FAILEDThe MRZ does not meet the expected format or contains invalid data.
INVALID_DATEOne or more dates on the document are not valid or do not match expected formats.
DOCUMENT_EXPIREDThe document’s expiration date has passed.
DOCUMENT_NOT_SUPPORTED_FOR_APPLICATIONThe type of document provided is not accepted for the current verification process.
DOCUMENT_SIDES_MISMATCHThe sides of the document do not match the expected format or contain invalid data.
COULD_NOT_DETECT_DOCUMENT_TYPEThe system could not determine the type of document submitted.
DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTSThe name on this document does not match the name on other documents previously verified for this user.
POSSIBLE_DUPLICATED_USERThe system identified a potential duplicate user with previously approved documents from another session.
LOW_FRONT_CAMERA_FACE_MATCH_SIMILARITYThe face captured during document scanning does not sufficiently match the portrait on the document.
FULL_NAME_MISMATCH_WITH_PROVIDEDThe provided full name does not match the data extracted from the document.
DOB_MISMATCH_WITH_PROVIDEDThe provided date of birth does not match the date extracted from the document.
GENDER_MISMATCH_WITH_PROVIDEDThe provided gender does not match the gender extracted from the document.
COUNTRY_MISMATCH_WITH_PROVIDEDThe provided country does not match the country extracted from the document.
NATIONALITY_MISMATCH_WITH_PROVIDEDThe provided nationality does not match the nationality extracted from the document.
IDENTIFICATION_NUMBER_MISMATCH_WITH_PROVIDEDThe provided identification number does not match the document number, personal number, or tax number extracted from the document.
SCREEN_CAPTURE_DETECTEDThe submitted document appears to be a screen capture or photo of a document on a screen rather than a physical document.
PRINTED_COPY_DETECTEDThe submitted document appears to be a printed copy rather than an original official document.
PORTRAIT_MANIPULATION_DETECTEDPotential manipulation of the portrait area of the document was detected.
UNPARSED_ADDRESSThe address on the document could not be parsed or geolocated.
DOCUMENT_NUMBER_FORMAT_MISMATCHThe document number does not match the expected format for this type of document.
PERSONAL_NUMBER_FORMAT_MISMATCHThe personal number does not match the expected format for this type of document.
ID_VERIFICATION_DATA_MISMATCH_BETWEEN_DOCUMENTSData extracted from multiple ID verification documents in this session do not match (e.g. name or date of birth).
GUENO_KYC_ORG_BLOCKLIST_HITAutomatic rejection path: a value from this validation matched an organization KYC blocklist (aggregate signal).
GUENO_KYC_ORG_BLOCKLIST_IPOrganization KYC blocklist: the session IP address matched an enforcement list.
GUENO_KYC_ORG_BLOCKLIST_DOCUMENTOrganization KYC blocklist: the document number matched an enforcement list.
GUENO_KYC_ORG_BLOCKLIST_PERSONALOrganization KYC blocklist: the personal / transaction number matched an enforcement list.
GUENO_KYC_ORG_MINIMUM_AGE_NOT_METOrganization minimum-age policy (KYC organization settings): the extracted date of birth implies fewer full years than the configured threshold; the validation is set to rejected even if OCR validated identity. If no parsable date of birth is present, this rule does not apply.

Face Match

Returned in POST /api/kyc/face-match and GET /api/kyc/face-match/verifications/:id in the warnings array.
CodeDescription
LOW_FACE_MATCH_SIMILARITYThe facial features of the provided image do not closely match the reference image; potential identity mismatch.
NO_REFERENCE_IMAGEA reference image or face image for facial comparison is missing; the face matching process could not be completed.

Liveness (Session-Based KYC)

Returned in session-based KYC validation responses (e.g. current validation, list validations) when liveness checks are performed. The warnings array in the validation payload may contain these codes.
CodeDescription
FACE_IN_BLOCKLISTThe face matches an entry in your face blocklist (e.g. previously blocklisted individual).
POSSIBLE_FACE_IN_BLOCKLISTThe system identified a possible face in the blocklist; the face is not allowed to be verified.
LOW_LIVENESS_SCOREThe liveness check resulted in a low score; possible non-live facial representation or poor-quality biometric data.
NO_FACE_DETECTEDThe system could not identify a face during the liveness check.
LIVENESS_FACE_ATTACKThe system detected a potential attempt to bypass the liveness check.
DUPLICATED_FACEThe system identified a duplicated face from another approved session.
POSSIBLE_DUPLICATED_FACEThis face may match another user already approved in the system.
MULTIPLE_FACES_DETECTEDMultiple faces were detected; the system uses the largest face for verification. (Passive Liveness only)
LOW_FACE_QUALITYThe facial image quality is below the acceptable threshold. (Passive Liveness only)
LOW_FACE_LUMINANCEThe facial image is too dark. (Passive Liveness only)
HIGH_FACE_LUMINANCEThe facial image is too bright or overexposed. (Passive Liveness only)

AML (Session-Based KYC)

When AML screening runs inside a session, risk codes from screening warnings are merged into the validation’s top-level warnings array.
CodeDescription
POSSIBLE_MATCH_FOUNDAML screening identified potential matches with watchlists or high-risk databases; may require review.
COULD_NOT_PERFORM_AML_SCREENINGAML screening could not be completed with the data available (e.g. missing fields required for screening).

Device & IP Analysis (Session-Based KYC)

When device and IP analysis runs inside a session, risk codes from ip_analyses[].warnings[] (or legacy ip_analysis.warnings) are merged into the validation’s top-level warnings array. These codes follow the provider’s Device & IP analysis warning taxonomy.
CodeDescription
PRIVATE_NETWORK_DETECTEDThe session was opened via VPN, proxy, or Tor exit node.
COUNTRY_FROM_DOCUMENT_DOES_NOT_MATCH_COUNTRY_FROM_IPThe country on the identity document differs from the country derived from the IP address.
EXPECTED_IP_ADDRESS_MISMATCHThe live IP address differs from the expected IP provided at session creation.
IP_ADDRESS_IN_BLOCKLISTThe session IP address matches an entry in the provider IP blocklist (forces decline at the provider).
DEVICE_FINGERPRINT_IN_BLOCKLISTThe device fingerprint matches an entry in the provider device blocklist (forces decline at the provider).
DUPLICATED_IP_ADDRESSThe same IP address was used in another session with a different user identifier (vendor_data).
DUPLICATED_DEVICE_FINGERPRINTThe same persistent device fingerprint was reused across sessions with different user identifiers.
DEVICE_RECOVERED_HIGH_CONFIDENCEHigh-confidence device recovery matched this session to a previously seen device after the persistent ID changed (e.g. incognito, storage reset, or app reinstall).

Internal (Gu1)

These codes may be added by Gu1 logic (entity vs OCR checks, name policy, sandbox mocks, etc.) and appear in the session validation warnings array where applicable.
CodeDescription
GUENO_DOCUMENT_NUMBER_MISMATCHThe document number from verification does not match the entity document at check time.
GUENO_PERSONAL_NUMBER_MISMATCHDocument/personal number checks against the entity did not align as required.
GUENO_KYC_NAME_SIMILARITY_BELOW_MINEntity name similarity to the document-derived name is below the organization minimum.
SANDBOX_KYC_REJECTED_DEFAULTSandbox test outcome: validation rejected when the tax ID matched the sandbox test list.

Registry Cross-Check (Argentina / RENAPER)

When RENAPER double-check is enabled and a registry-related issue is surfaced as a warning code, the same strings may appear in warnings. Product locales map them under rejectionReasonCodes (in addition to warningRisks fallbacks where configured).
CodeDescription
RENAPER_DNI_MISSINGCross-check could not run: document number (DNI) was not available from verification.
RENAPER_GENDER_MISSINGCross-check could not run: gender (M/F) is required for the registry.
RENAPER_VERIFICATION_UNAVAILABLEThe registry could not be reached or completed; retry later.
RENAPER_DNI_NOT_MATCHDocument number does not match the official registry.
RENAPER_TRAMITE_DATA_MISSINGTransaction number could not be compared: required data missing.
RENAPER_TRAMITE_ID_NOT_MATCHTransaction number does not match the registry (e.g. outdated ID copy).
RENAPER_CREDENTIALS_REQUIREDRENAPER credentials are not configured for the organization.
RENAPER_NOT_VALID_CREDENTIALSRENAPER credentials failed validation.

Example Response (ID Verification)

{
  "status": "approved",
  "verificationId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
  "requestId": "req_abc",
  "extractedData": { "fullName": "Jane Doe", "documentNumber": "12345678" },
  "warnings": ["POSSIBLE_DUPLICATED_USER"]
}

Example Response (Face Match)

{
  "match": true,
  "score": 85,
  "status": "approved",
  "verificationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "warnings": []
}

ID Verification

Verify document front/back and extract data

Face Match

Compare document portrait and selfie