This page consolidates all SDK exit codes, journey result statuses, and error codes across all three platforms in one place.
Journey Result Statuses
All SDKs return a journey result status when a journey ends. The statuses are consistent across platforms:
| Status | Web | Android | iOS | Description |
|---|
| Success | 5 | Success | success (0) | Journey completed successfully |
| Document Verification Failed | 1 | DocumentVerificationFailed | documentVerificationFailed (1) | Document verification was unsuccessful (incorrect or poor-quality documents) |
| ICP Verification Failed | 2 | ICPVerificationFailed | icpVerificationFailed (2) | ICP could not verify the individual’s data |
| Cancelled | 0 | Cancelled | cancelled (3) | User cancelled the journey |
| Session Expired | 3 | SessionExpired | sessionExpired (4) | Journey token or session timed out |
| Error | 4 | Error | error (5) | An internal error occurred (see error codes below) |
| Unknown | 6 | — | — | Unknown status (Web SDK only) |
| Blocked | 7 | — | blocked (6) | Journey blocked due to multiple failed attempts — see Journey Blocking |
On Android, the Blocked status is returned as a StartResult.Blocked when starting a journey, rather than as a JourneyResult.
Android SDK
Start Result Codes
Returned when calling SDK.startJourney():
| Result | Description |
|---|
StartResult.Success | Journey started successfully |
StartResult.Blocked | Journey blocked due to multiple failed attempts — see Journey Blocking |
StartResult.PreConditionFailure | A precondition was not met before starting (access reason via reason property) |
StartResult.Error | Internal error (access code via errorCode property) |
StartResult.SessionExpired | The provided journey token has expired |
Error Codes
Returned in StartResult.Error.errorCode or JourneyResult.Error.errorCode:
| Code | Description |
|---|
| 103 | Journey handshake failed |
| 104 | Journey initialization failed |
| 105 | Consent grant failed |
| 106 | Document selection failed |
| 108 | Journey update with document failed |
| 112 | Face image verification failed |
| 113 | Journey finish failed |
| 114 | Document check failed |
| 115 | Activity result unknown |
| 116 | Activity result data not found |
| 117 | Verification answer failed |
| 118 | Emirates ID submission failed |
| 119 | Journey blocked — see Journey Blocking |
iOS SDK
SDK Error Types
Returned in the SDKError.type property:
| Type | Value | Description |
|---|
notInitialized | 0 | SDK was not initialized before calling startJourney |
tokenExpired | 1 | The provided journey token has expired |
configError | 2 | Journey configuration is invalid (check reason property) |
internalError | 3 | Internal SDK error (check code property for specific error below) |
journeyBlocked | 4 | Journey blocked due to multiple failed attempts (check timeRemaining property) — see Journey Blocking |
Internal Error Codes
Returned in SDKError.code when type is internalError:
| Code | Description |
|---|
| 1 | Journey API initialization failed |
| 2 | Journey API UUID conversion failed |
| 3 | Journey handshake failed |
| 4 | Journey initialization failed |
| 5 | Journey set consent failed |
| 6 | Journey document info set failed |
| 7 | UI image to raw conversion failed |
| 8 | Journey front document upload failed |
| 9 | Journey back document upload failed |
| 10 | Journey document check failed |
| 11 | Journey face upload failed |
| 12 | Journey complete call failed |
| 13 | Journey one-to-many config failed |
| 14 | Journey one-to-many upload face failed |
| 15 | Journey one-to-many verification failed |
| 16 | Journey one-to-many Emirates ID failed |
Web SDK
Status Codes
Returned in the onCompleteCallback result:
| Status | Value | Description |
|---|
Cancelled | 0 | User cancelled the journey |
DocumentVerificationFailed | 1 | Document verification failed |
FaceVerificationFailed | 2 | Face verification failed |
Expired | 3 | Journey token or session expired |
Error | 4 | An error occurred (see error codes below) |
Success | 5 | Journey completed successfully |
Unknown | 6 | Unknown status |
Blocked | 7 | Journey blocked due to multiple failed attempts — see Journey Blocking |
Error Codes
Returned alongside Error status:
| Error Code | Value | Description |
|---|
LoggerInit | 1 | Logger initialization failed |
Init | 2 | SDK initialization error |
Consent | 3 | Error during consent step |
DocumentSelection | 4 | Error during document selection |
EidFrontSideUpload | 5 | Emirates ID front upload failed |
EidBackSideUpload | 6 | Emirates ID back upload failed |
GccIdFrontSideUpload | 7 | GCC ID front upload failed |
GccIdBackSideUpload | 8 | GCC ID back upload failed |
PassportUpload | 9 | Passport upload failed |
DocumentVerification | 10 | Document verification error |
FaceUpload | 11 | Face image upload failed |
Finalize | 12 | Journey finalization error |
Unknown | 13 | Unknown error |
Internal | 14 | Internal SDK error |
FormSubmission | 15 | Form submission error |
EmiratesIdSubmission | 16 | Emirates ID submission error |
Panic | 17 | SDK internal error — message contains panic details |
LivenessInit | 18 | Face capture / liveness service initialization failed — message contains error details |