Validate an Emirates ID against UAE government records. Returns identity status, visa status, residence validity, and field-level match results.
Stage 1: Pre-Checks (not billed)
| Check | What it tests | Fail result |
|---|---|---|
| Rate limit | Request count for this org within the window | 429, no transaction saved |
| Usage limit | Org’s EID quota not exceeded | 403, transaction saved as error |
| Circuit breaker | ICP integration is healthy | 503, transaction saved as error |
| Emirates ID present | eidNumber field is not blank | 400, API: no transaction / Batch: transaction saved |
| Card number format | Valid 9-digit format (required if module config says so, else can be blank) | 400, API: no transaction / Batch: transaction saved as error |
| EID Luhn checksum | Digit checksum is mathematically valid | 400, API: no transaction / Batch: transaction saved as error |
Stage 2: Credit Reservation
| Check | What it tests | Fail result |
|---|---|---|
| Sufficient credits | Org has credits to cover 1 call | 402, transaction saved |
Stage 3: ICP Call & Post-Call Checks (billed)
| Check | What it tests | Fail result |
|---|---|---|
| ICP call — person exists | Government record found for this EID | 404, transaction saved, billed |
| ICP call — service up | ICP responds without infrastructure error | 503/504/500, transaction saved, refunded |
| DOB match | Provided date of birth matches government record (if given) | 200 with validation_status=failed, billed |
| Nationality match | Provided nationality matches government record (if given) | 200 with validation_status=failed, billed |
| Card number match | Provided card number matches government record (if given) | 200 with validation_status=failed, billed |
| EID expiry match | Provided EID expiry matches government record (if given) | 200 with validation_status=failed, billed |
| EID issue match | Provided EID issue date matches government record (if given) | 200 with validation_status=failed, billed |
| EID expiry | EID has not passed its expiry date in government records | 200 with validation_status=failed, billed |
| EID issue | EID has passed its issue date in government records | 200 with validation_status=failed, billed |
| Visa status by person class | For residents: active visa; for citizens: N/A; for visitors: visa validity | 200 with validation_status=failed, billed |
NOT_PROVIDED (not failed). If provided, they must match exactly.application/json784XXXXXXXXXXXX (15 digits, no hyphens).validations object in the response contains the following fields:
| Field | Type | Description |
|---|---|---|
validations.cardNumberStatus | enum | Whether the provided card number matches the government record |
validations.eidStatus | enum | Whether the EID is currently active per government records |
validations.visaStatus | enum | Whether the person has an active visa on record |
validations.dateOfBirthStatus | enum | Whether the provided date of birth matches the government record |
validations.nationalityStatus | enum | Whether the provided nationality matches the government record |
validations.eidIssueDateStatus | enum | Whether the provided EID issue date matches the government record |
validations.eidExpiryDateStatus | enum | Whether the provided EID expiry date matches the government record |
validations.insideUaeStatus | enum | Whether the person is currently inside the UAE per travel records |
validations.residenceValidity | enum | Residence permit validity based on inside/outside UAE status |
validations.cardNumberStatus| Value | When it occurs |
|---|---|
CORRECT | The provided card number matches the government record |
INCORRECT | The provided card number does not match the government record |
NOT_PROVIDED | No card number was included in the request |
validations.eidStatus| Value | When it occurs |
|---|---|
ACTIVE | The EID expiry date is in the future per government records |
INACTIVE | The EID has expired, the date cannot be parsed, or no expiry date exists |
validations.visaStatus| Value | When it occurs |
|---|---|
ACTIVE | The person has an active visa on record |
INACTIVE | The person’s visa is expired or not active |
NOT_APPLICABLE | The person is a UAE or GCC citizen — visa check is skipped entirely |
validations.dateOfBirthStatus| Value | When it occurs |
|---|---|
CORRECT | The provided date of birth matches the government record (multi-format date normalization) |
INCORRECT | The provided date of birth does not match the government record |
NOT_PROVIDED | No date of birth was included in the request |
validations.nationalityStatus| Value | When it occurs |
|---|---|
CORRECT | The provided nationality matches the government record (case-insensitive) |
INCORRECT | The provided nationality does not match the government record |
NOT_PROVIDED | No nationality was included in the request |
validations.eidIssueDateStatus| Value | When it occurs |
|---|---|
CORRECT | The provided EID issue date matches the government record |
INCORRECT | The provided EID issue date does not match the government record |
NOT_PROVIDED | No EID issue date was included in the request |
validations.eidExpiryDateStatus| Value | When it occurs |
|---|---|
CORRECT | The provided EID expiry date matches the government record (exact match, no normalization) |
INCORRECT | The provided EID expiry date does not match the government record |
NOT_PROVIDED | No EID expiry date was included in the request |
validations.insideUaeStatus| Value | When it occurs |
|---|---|
INSIDE | Travel records indicate the person is currently inside the UAE |
OUTSIDE | Person is outside the UAE — covers both temporary travel and extended absence of 6+ months. Use residenceValidity to distinguish severity |
validations.residenceValidity| Value | When it occurs |
|---|---|
VALID | Resident is inside UAE, or is outside UAE but within the 6-month allowed absence window |
INVALID | Resident has been outside UAE for 6+ months — residence permit likely revoked |
NOT_APPLICABLE | Person is inside UAE, or is a visitor/citizen class for whom residence validity does not apply |