Teydex Android Document
This document contains all the necessary steps, usage examples, and platform-specific technical details for securely and smoothly integrating the Teydex library into the Android platform.
Version Requirements
To use the Teydex Android library smoothly, you need to check your versions.
| Platform | Min version |
|---|---|
| Android | minSdkVersion: 24 |
| compileSdkVersion: 34 | |
| targetSdkVersion: 34 | |
| kotlinVersion: 1.8.0 |
Android Gradle Configuration
You need to add the following configuration along with the GitLab token in the repository definitions under Settings.gradle. Ensure that you enter the necessary credentials for repository access correctly.
{
maven {
isAllowInsecureProtocol = true
name = "GitLab"
url = uri("<REPO_URL>")
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = "GITLAB_TOKEN"
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
- REPO_URL should be replaced with the URL provided to you.
- Replace the PRIVATE_TOKEN field with the personal access token provided by your organization.
- The
allowInsecureProtocol = truesetting should only be used in secure networks or on internal private servers.
Gradle Configuration
Add the following lines to your android/app/build.gradle file:
implementation("com.innovance:kyc:1.6.11")
The following dependencies must be defined at the minimum specified versions in your project's android/build.gradle file. Using lower versions may result in compilation or runtime errors related to the library.
buildscript {
dependencies {
classpath("com.android.tools.build:gradle:7.4.2") // Minimum supported version: 7.4.2
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0" // Minimum supported version: 1.8.0
}
}
Info Screen
The Info screen in your KYC application refers to the informational pages displayed before the steps. Optionally, the following parameters can be added for each step.
Info Screen Features
| Parameter | Type | Description |
|---|---|---|
| toolbarTitle | String | Specifies the text for the toolbar. |
| titleText | String | Specifies the text for the title. |
| descriptionText | String | Specifies the text for the description. |
| buttonText | String | Specifies the text for the button that starts the step. |
| imageResId | @RawRes Int | Specifies the image to be used. |
| lottieResId | @RawRes Int | Specifies the Lottie animation. |
| bullets | List<String> | Information about the next step can be presented in bullet points. |
| bulletIcon | @RawRes Int | Specifies the icon for the bullet points. |
Info Screen Usage
Below is an example of how to use the Info screen.
val frontInfo = buildInfo {
toolbarTitle("Kimlik Ön Yüz")
descriptionText("Lütfen aşağıdaki adımları dikkatlice takip ediniz:")
buttonText("Devam")
lottieResId(R.raw.front)
bullets(
listOf(
"Kimliğinizi Yerleştirin\n" +
"Kimliğinizin arka yüzünü, telefon ekranına paralel bir şekilde
tutun. Kimlik, ekranda görünen şablonun içine tam olarak yerleşecek
şekilde konumlandırılmalıdır.",
"Kimlik Bilgilerinin Görünürlüğü\n Kimlik üzerindeki tüm
bilgilerin net bir şekilde göründüğünden emin olun. Kimlik bilgileri
bulanık olmamalı ve kolayca okunabilir olmalıdır")
)
}
Step
The features to be used in all steps are specified in this section. These features are available in every step (Front, Back, Hologram, NFC, Liveness, Passport, VideoCall, Selfie, VideoRecord).
Step Features
| Parameter | Type | Description |
|---|---|---|
| addInfo | Info | Used to add an Info screen to the corresponding step. It is optional. |
| toolbarTitle | String | Represents the text for the Toolbar to be displayed in the corresponding step. |
| toolbarRightCloseIcon | String | Represents the exit icon to terminate the corresponding step. |
| toolbarLeftCloseIcon | String | Represents the exit icon to terminate the corresponding step. |
| identifyTimeout | Long | Specifies the timeout duration for the corresponding step (ms). e.g., 10_000 |
| stepInformationTextToSpeech | String | Specifies the voice guidance message. |
Glare Detection
Starting with v1.1.0, Front, Back, Liveness, and Passport steps support glare detection to help users capture the document under suitable lighting conditions. When the environment is too bright, too dark, or when a glare is detected on the document, a warning message is displayed to the user on the related screen.
The following parameters are available on Front, Back, and Passport steps:
| Parameter | Type | Description |
|---|---|---|
| isGlareDetectionEnable | Boolean | Enables glare detection for the corresponding step. Default is true for Front and Back, and false for Passport. |
| glareDetectedText | String | Warning text shown when a glare is detected on the document. |
| tooBrightText | String | Warning text shown when the environment is too bright. |
| tooDarkText | String | Warning text shown when the environment is too dark. |
| multipleDocumentsDetectedText | String | Warning text shown when multiple documents are detected in the camera frame. |
For the Liveness step, only ambient-light-related parameters are available:
| Parameter | Type | Description |
|---|---|---|
| isGlareDetectionEnable | Boolean | Enables ambient light monitoring in the Liveness step. Default is true. |
| tooBrightText | String | Warning text shown when the environment is too bright. |
| tooDarkText | String | Warning text shown when the environment is too dark. |
If any of these parameters is not provided, the SDK falls back to the built-in default warning texts (Turkish).
Front Step Usage
val front = buildFront {
identifyTimeout(30_000L)
addInfo(frontInfo)
toolbarTitle("Kimlik Ön Yüz")
toolbarRightCloseIcon(R.drawable.ic_close)
isGlareDetectionEnable(true)
glareDetectedText("Glare detected. Please hold the document at a different angle.")
tooBrightText("The environment is too bright. Please reduce the light.")
tooDarkText("The environment is too dark. Please move to a brighter area.")
multipleDocumentsDetectedText("Please show only one document.")
}
Back Step Usage
val back = buildBack {
identifyTimeout(30_000L)
addInfo(backInfo)
toolbarTitle("Kimlik Arka Yüz")
toolbarRightCloseIcon(R.drawable.ic_close)
isGlareDetectionEnable(true)
glareDetectedText("Glare detected. Please hold the document at a different angle.")
tooBrightText("The environment is too bright. Please reduce the light.")
tooDarkText("The environment is too dark. Please move to a brighter area.")
multipleDocumentsDetectedText("Please show only one document.")
}
NFC Step Usage
val nfc = buildNFC {
addInfo(nfcInfo)
toolbarRightCloseIcon(R.drawable.ic_close)
toolbarTitle("NFC")
}
Hologram Step Usage
val hologram = buildHologram {
addInfo(hologramInfo)
toolbarTitle("Hologram")
}
Passport Step Usage
val passport = buildPassport {
identifyTimeout(60_000L)
addInfo(passportInfo)
toolbarTitle("Passport")
toolbarRightCloseIcon(R.drawable.ic_close)
}
VideoCall Step Features
| Parameter | Type | Description |
|---|---|---|
| splashScreenResourceId | @DrawableRes Int | Used to define the splash screen displayed before VideoCall starts. |
Starting with v1.1.0, it is recommended to configure the VideoCall splash screen and external logo image via UIConfig. See the UIConfig section below.
VideoCall Step Usage
val videoCall = buildVideoCall {
addInfo(videoCallInfo)
splashScreenResourceId(R.drawable.bg_splash)
}
Liveness Step Features
| Parameter | Type | Description |
|---|---|---|
| rightText | String | The command telling the user to look right for the liveness photo. |
| leftText | String | The command telling the user to look left for the liveness photo. |
| upText | String | The command telling the user to look up for the liveness photo. |
| downText | String | The command telling the user to look down for the liveness photo. |
| centerYourFaceText | String | The command telling the user to look directly (straight) at the camera for the liveness photo. |
| multipleFaceText | String | The message informing the user when multiple faces are detected during the liveness step. |
| dotColor | @ColorInt Int | The color of the dots indicating a completed command during the liveness step. |
| dotRadius | Int | The size (radius) of the dots indicating a completed command during the liveness step. |
| rightTextToSpeech | String | The voice command telling the user to look right for the liveness photo. |
| leftTextToSpeech | String | The voice command telling the user to look left for the liveness photo. |
| upTextToSpeech | String | The voice command telling the user to look up for the liveness photo. |
| downTextToSpeech | String | The voice command telling the user to look down for the liveness photo. |
| centerTextToSpeech | String | The voice command telling the user to look directly (straight) at the camera for the liveness photo. |
Liveness Step Usage
val liveness = buildLiveness {
dotColor(Color.Green.toArgb())
rightText("yüzünüzü sağa çeviriniz")
leftText("sola çeviriniz")
upText("yüzünüzü yukarı kaldırınız")
downText("aşağı yöne bakınız")
multipleFaceText("birden fazla yüz algılandı")
identifyTimeout(60_000)
addInfo(livenessInfo)
toolbarTitle("Liveness")
isGlareDetectionEnable(true)
tooBrightText("The environment is too bright. Please reduce the light.")
tooDarkText("The environment is too dark. Please move to a brighter area.")
}
Selfie Step Features
Added in v1.6.0. A step where the user verifies themselves by taking a selfie photo.
| Parameter | Type | Description |
|---|---|---|
| identifyTimeout | Long | Timeout for the step (ms). (Default: 30_000) |
| centerYourFaceText | String | Text telling the user to center their face in the frame. |
| tooCloseText | String | Warning text shown when the face is too close to the camera. |
| tooFarText | String | Warning text shown when the face is too far from the camera. |
| captureButtonText | String | Label of the capture button. |
| retakeButtonText | String | Label of the retake button. |
| confirmButtonText | String | Label of the button confirming the captured photo. |
Selfie Step Usage
val selfie = buildSelfie {
identifyTimeout(15_000L)
centerYourFaceText("Center your face in the frame")
tooCloseText("Move your face away")
tooFarText("Move your face closer")
captureButtonText("Take Photo")
retakeButtonText("Retake")
confirmButtonText("Confirm")
addInfo(selfieInfo)
toolbarTitle("Selfie")
toolbarRightCloseIcon(R.drawable.ic_close)
stepInformationTextToSpeech("Center your face in the frame and press the capture button.")
}
VideoRecord Step Features
Added in v1.6.0. A spoken video verification step where the user creates a video recording by reading the text shown on the screen aloud.
The text the user must read aloud during the VideoRecord step (prompt_text) is provided to the SDK by the backend. The text is sent to the backend in the transaction init request inside the options object via the video_record_prompt_text and video_record_prompt_mandatory_texts fields; the backend returns it to the SDK during the video step and scores the reading accuracy against these texts.
| Parameter | Type | Description |
|---|---|---|
| identifyTimeout | Long | Timeout for the step (ms). (Default: 60_000) |
| faceCenterTimeoutMs | Long | Timeout for centering the face before recording (ms). (Default: 15_000) |
| readyCountdownMs | Long | Countdown shown before the recording starts (ms). (Default: 3_000) |
| recordingDurationMs | Long | Maximum video recording duration (ms). (Default: 20_000) |
| videoQuality | VideoRecordQuality | Recording quality: LOW, MEDIUM, HIGH. (Default: MEDIUM) |
| centerYourFaceText | String | Text telling the user to center their face in the frame. |
| tooCloseText | String | Warning text shown when the face is too close to the camera. |
| tooFarText | String | Warning text shown when the face is too far from the camera. |
| moveLeftText | String | Text telling the user to move their face to the left. |
| moveRightText | String | Text telling the user to move their face to the right. |
| moveUpText | String | Text telling the user to move their face up. |
| moveDownText | String | Text telling the user to move their face down. |
| lookStraightText | String | Text telling the user to look straight at the camera. |
| headTiltedText | String | Warning text shown when the user's head is tilted. |
| startButtonText | String | Label of the start-recording button. |
| stopButtonText | String | Label of the stop-recording button. |
| retakeButtonText | String | Label of the re-record button. |
| confirmButtonText | String | Label of the button confirming and submitting the recording. |
| readingInstructionText | String | Instruction text stating that the prompt must be read aloud during the recording. |
VideoRecord Step Usage
val videoRecord = buildVideoRecord {
identifyTimeout(60_000L)
faceCenterTimeoutMs(15_000L)
readyCountdownMs(3_000L)
recordingDurationMs(20_000L)
videoQuality(VideoRecordQuality.MEDIUM)
centerYourFaceText("Center your face in the frame")
tooCloseText("Move your face away")
tooFarText("Move your face closer")
moveLeftText("Move your face to the left")
moveRightText("Move your face to the right")
moveUpText("Move your face up")
moveDownText("Move your face down")
lookStraightText("Look straight at the camera")
headTiltedText("Straighten your head")
startButtonText("Start Recording")
stopButtonText("Stop Recording")
retakeButtonText("Record Again")
confirmButtonText("Confirm and Submit")
readingInstructionText("Read the text shown on the screen aloud")
addInfo(videoRecordInfo)
toolbarTitle("Spoken Video Verification")
toolbarRightCloseIcon(R.drawable.ic_close)
stepInformationTextToSpeech("Create a video recording by reading the text shown on the screen aloud.")
}
KPS Step Features
Added in v1.6.11. The step where the user's identity information is automatically verified through KPS (Identity Sharing System). It has no properties of its own — it only uses the Step Features common to all steps (addInfo, toolbarTitle, toolbarRightCloseIcon, toolbarLeftCloseIcon, identifyTimeout, stepInformationTextToSpeech).
KPS Step Usage
val kps = buildKps {
addInfo(kpsInfo)
toolbarTitle("Identity Verification")
toolbarRightCloseIcon(R.drawable.ic_close)
stepInformationTextToSpeech("Your identity information is being verified through KPS.")
}
UIConfig
Used to define the general design features to be used in the application. As of v1.4.5, UIConfig has a modular structure that configures color, typography, and shape settings under separate sub-blocks (colors, typography, shapes). Any setter that is omitted falls back to the SDK's default, so the configuration is purely additive. As of v1.6.0, the full color and shape setter surface is exposed. As of v1.6.11, isDarkTheme and darkColors support was added, letting the SDK switch to a dark theme based on the state reported by the host app.
colors
| Parameter | Type | Description |
|---|---|---|
| primaryColor | @ColorInt Int | Primary brand color (MaterialTheme.colorScheme.primary, outline button border). |
| onPrimaryColor | @ColorInt Int | Content color rendered on top of primaryColor. |
| surfaceColor | @ColorInt Int | Surface color (bottom sheets, cards). |
| onSurfaceColor | @ColorInt Int | Content color rendered on top of surfaceColor. |
| backgroundColor | @ColorInt Int | Window background color. |
| errorColor | @ColorInt Int | Error accent color. |
| successColor | @ColorInt Int | Success accent color. |
| textPrimaryColor | @ColorInt Int | Primary text color. |
| textSecondaryColor | @ColorInt Int | Secondary text color. |
| overlayColor | @ColorInt Int | Camera overlay color — the semi-transparent area outside the document/face frame. |
| buttonColor | @ColorInt Int | Background fill color of buttons. (Default: 0xFF1643E4) |
| buttonTextColor | @ColorInt Int | Text/content color of buttons. (Default: white) |
| lineButtonTextColor | @ColorInt Int | Text color of outlined (line) buttons. (Default: black) |
| bulletTextColor | @ColorInt Int | Text color of bullet points on info screens. (Default: 0xFF808080) |
| titleColor | @ColorInt Int | Title text color on info screens. |
| descriptionColor | @ColorInt Int | Description text color on info screens. |
buttonColor/buttonTextColor/bulletTextColor are kept independent from primaryColor/onPrimaryColor/textSecondaryColor for backwards compatibility. To apply a single brand color, set both members of each pair.
Dark Mode (isDarkTheme and darkColors)
Added in v1.6.11. The SDK can switch to a dark theme based on the state reported by the host app. This decision is never inferred by the SDK from the system setting or the device's night mode — the host app must explicitly report its own dark-mode state (e.g. the result of isSystemInDarkTheme(), or the user's in-app theme preference) via isDarkTheme.
| Parameter | Type | Description |
|---|---|---|
| isDarkTheme | Boolean | Whether the SDK should use the darkColors palette. Default: false (light). |
| darkColors | DSL block | An optional dark-theme color palette carrying the same 16 fields as colors. Only takes effect when isDarkTheme(true). |
If the darkColors { } block is never called, or a field is left unset, the SDK falls back to its own built-in dark palette when isDarkTheme(true) — no extra color definitions are required from the host.
Dark Mode Usage
// Falling back to the SDK's built-in dark palette:
val uiConfig = buildUIConfig {
isDarkTheme(true)
}
// Supplying the host's own brand colors for dark mode:
val uiConfig = buildUIConfig {
isDarkTheme(true)
darkColors {
primaryColor(0xFF4C6FFF.toInt())
surfaceColor(0xFF1E1E1E.toInt())
backgroundColor(0xFF121212.toInt())
}
}
typography
| Parameter | Type | Description |
|---|---|---|
| fontFamily | @FontRes Int | Font family used across the SDK (R.font.<file>). If unset, the system font is used. |
| titleFontSize | Int (sp) | Font size for titles. (Default: 28) |
| bodyFontSize | Int (sp) | Font size for body text. (Default: 16) |
| labelFontSize | Int (sp) | Font size for small labels (bullets, camera warnings). (Default: 14) |
| timerFontSize | Int (sp) | Font size for the countdown text on liveness/timer screens. (Default: 32) |
| buttonFontSize | Int (sp) | Font size for button labels. (Default: 16) |
| titleFontWeight | Int | Font weight for title text (100–900). (Default: 700) |
| bodyFontWeight | Int | Font weight for body/label text. (Default: 400) |
shapes
| Parameter | Type | Description |
|---|---|---|
| buttonCornerRadius | Int (dp) | Corner radius of buttons. (Default: 12) |
| cardCornerRadius | Int (dp) | Corner radius of warning cards / hint boxes. (Default: 8) |
| imageFrameCornerRadius | Int (dp) | Corner radius of image / animation frames. (Default: 18) |
| bottomSheetCornerRadius | Int (dp) | Corner radius of bottom sheet top edges. (Default: 28) |
| cameraOverlayCornerRadius | Int (dp) | Corner radius of the camera overlay cutout. (Default: 12) |
VideoCall images (root level)
| Parameter | Type | Description |
|---|---|---|
| setVideoCallExternalLogoImage | @DrawableRes Int | Added in v1.1.0. Specifies the external logo image to be displayed on the VideoCall screen. |
| setVideoCallSplashScreenImage | @DrawableRes Int | Added in v1.1.0. Specifies the splash screen image displayed before VideoCall starts. |
UIConfig Usage
val uiConfig = buildUIConfig {
colors {
primaryColor(0xFF1643E4.toInt())
buttonColor(0xFF1643E4.toInt())
buttonTextColor(0xFFFFFFFF.toInt())
bulletTextColor(0xFF808080.toInt())
lineButtonTextColor(0xFF000000.toInt())
surfaceColor(0xFFFFFFFF.toInt())
overlayColor(0x80141414.toInt())
}
typography {
fontFamily(R.font.brand_regular)
titleFontSize(28)
buttonFontSize(16)
}
shapes {
buttonCornerRadius(30)
bottomSheetCornerRadius(28)
}
setVideoCallExternalLogoImage(R.drawable.ic_logo_sample)
setVideoCallSplashScreenImage(R.drawable.ic_logo_sample)
}
KYC
This is the main function that will start the KYC process. All specified features are added here, and a KYC flow is initiated with the process function.
KYC Features
| Parameter | Type | Description |
|---|---|---|
| baseUrl | String | The baseUrl to be used globally in the application, the URL from the on-premise server. |
| videoCallBaseUrl | String | The URL to be used for the VideoCall flow, the URL from the on-premise video call server. |
| videoCallProvider | String | Added in v1.6.11. Selects the video call provider. If a provider other than the default is to be used, the value to pass is supplied to you; roomName must then also be set. |
| roomName | String | Added in v1.6.11. The video call room name. Must be set when a video call provider other than the default is used. |
| addUIConfig | UIConfig | Used to specify UI configuration features globally across the SDK. |
| showCompletedScreen | Boolean | Specifies whether to display the success screen when all steps are successfully completed. |
| completedScreenTexts | CompletedScreenTexts | Added in v1.6.0. Used to customize the title, description and button text of the success screen. |
| language | String | Added in v1.6.0. Sets the SDK language ("tr", "en", "ru"). Falls back to the device language when unset. |
| identifierSteps | MutableList<Step> | Ensures all steps are included in the system with the created features. |
| addClientToken | String | Used to pass the client token required to initialize the SDK. |
| addApplicationId | String | Used to pass the applicationId required to initialize the SDK. |
| addErrorMessages | HashMap<KYCError, String> | Used to display custom error messages in the SDK. KYCError is the common interface implemented by every error enum listed under Error Handling below. |
| securityCheckEnabled | Boolean | Added in v1.6.11. Enables device compromise checks (root/emulator/hook detection). Disabled by default; when enabled, detection always emits a SecurityWarning event, and additionally blocks the flow with a fail screen in non-debug builds. |
| onEvent | KYCEvent | Can be used to forward events from the SDK to third-party analytics tools like Firebase, Mixpanel, or Countly. |
| onError | KYCError | Can be used to log error messages generated by the SDK. |
| onCompletion | Boolean | Deprecated; use onProcessFinished instead. Will be removed entirely in the next major version; still called for backward compatibility for now. |
| onProcessFinished | KYCProcessResult | Notifies the host app when the KYC flow finishes as successful, failed, or cancelled. |
| shouldGetCustomerLocation | Boolean | Specifies whether the user's location information should be collected. |
| sslPins | List<String> | Used to add the necessary sha256 keys for SSL pinning. |
| process | Context | Used to initialize the SDK for a KYC flow with the specified features. |
| dismissKYC | Boolean | Used to stop and close the active KYC flow programmatically. |
KYC Usage
val kyc = buildKYC {
addUIConfig(uiConfig)
showCompletedScreen(true)
completedScreenTexts(CompletedScreenTexts.buildCompletedScreenTexts {
titleText("Your account is verified!")
descriptionText("You can now continue using the app.")
buttonText("Continue")
})
language("en")
videoCallProvider("<provider>")
roomName("room-12345")
securityCheckEnabled(true)
identifierSteps(mutableListOf(front,hologram,back,nfc,liveness,passport,videoCall,selfie,videoRecord,kps))
addClientToken(AppSharedPref.getClientToken(context))
addApplicationId(AppSharedPref.getAppId(context))
addErrorMessages(hashMapOf(
NFCError.NFC_NOT_ENABLED to "not enable",
CameraSourceError.FLASH_TOGGLE_FAILED to " flash mode"))
onEvent { Log.i("TEST_LOG", "KYC Event:${it.name}")}
onError { Log.i("TEST_LOG", "KYC Error:${it.type} - ${it.message}")}
onProcessFinished { result ->
when (result) {
KYCProcessResult.Successful -> Log.i("TEST_LOG", "KYC Successful")
is KYCProcessResult.Failed -> Log.i("TEST_LOG", "KYC Failed step:${result.stepName} reason:${result.reason}")
is KYCProcessResult.Cancelled -> Log.i("TEST_LOG", "KYC Cancelled step:${result.stepName} reason:${result.reason}")
}
}}
kyc.process(context)
kyc.dismissKYC()
KYCProcessResult.Failed and KYCProcessResult.Cancelled also carry a reason field alongside stepName (Failed.reason: String, Cancelled.reason: KYCCancelReason). This field holds the actual reason the flow failed or was cancelled; it's recommended to log result.reason as well for diagnostics and support.
Error Handling (KYCError)
All errors the SDK may raise are grouped into enums implementing a common KYCError interface. Error messages that need to be changed can be overridden via addErrorMessages in the form of KYCError, String. For example: CameraSourceError.FLASH_TOGGLE_FAILED to "flash mode".
Error types were renamed in v1.6.11. This is a breaking change with no backward-compatibility shim or deprecated alias — host code written against the old names will not compile until updated:
KYCError(enum) →SDKError—KYCErroris now the name of the common interface implemented by every error enum below.KYCCameraError→CameraSourceErrorKYCNFCError→NFCError
Some individual error cases were also renamed or merged — see the "(previously ...)" notes in the tables below.
SDKError (previously KYCError)
| Parameter | Description |
|---|---|
| UNKNOWN | Unknown error. |
| FIRST_STEP_UNDEFINED | The first step cannot be null! |
| APP_IDENTIFIER_STEPS_IS_NOT_SAME_API | The steps you define in the application and the steps you define in the API must be the same. |
| UNKNOWN_NETWORK_EXCEPTION | Added in v1.6.11. An unknown network error occurred. |
SecurityError
Added in v1.6.11. Related to securityCheckEnabled(true) — see KYC Features.
| Parameter | Description |
|---|---|
| DEVICE_COMPROMISED | A compromised device (root/emulator/hook) was detected. |
CameraSourceError (previously KYCCameraError)
| Parameter | Description |
|---|---|
| UNKNOWN | An unknown error occurred. Please try again. |
| APP_WENT_BACKGROUND | Added in v1.6.11. The app was moved to the background during liveness verification. Please try again. |
| CAMERA_PERMISSION_DENIED | Camera permissions were not granted. Please grant camera permission. (previously PERMISSION_NOT_GRANTED / CAMERA_PERMISSION_REQUIRED, merged into this single case) |
| CAMERA_PERMISSION_PERMANENTLY_DENIED | Camera permission was permanently denied. Please grant camera permission from settings. |
| RECORD_AUDIO_REQUIRED | Audio recording permission is required. Please grant audio recording permission. |
| RECORD_AUDIO_PERMANENTLY_DENIED | Audio recording permission was permanently denied. Please grant it from settings. |
| CAMERA_CONFIGURATION_FAILED | The camera preview could not be created. Please try again. (previously CAMERA_SOURCE_PREVIEW_NOT_FOUND) |
| CAMERA_NOT_FOUND | Camera not found. Please check your camera. (previously CAMERA_SOURCE_NOT_FOUND) |
| FLASH_TOGGLE_FAILED | An error occurred while toggling the flash. Please try again. (previously FLASH_MODE) |
| VIDEO_RECORDING_FAILED | An error occurred while recording the video. Please try again. (previously VIDEO_WRITE_FAILED) |
| VIDEO_READ_FAILED | Video not found. Please check that the file exists. |
| VIDEO_EXECUTE_COMMAND_CANCELLED_BY_USER | Video editing was cancelled by the user. |
| VIDEO_EXECUTE_COMMANDS_FAILED | Video editing failed. Please try again. |
| VIDEO_COMPRESS_FAILED | Video compression failed. Please try again. |
| CODEC_NOT_SUPPORTED | Video editing failed. Please try again. |
| BACK_CAMERA_NOT_WORKING | Added in v1.6.11. The back camera is not working. |
| FRONT_CAMERA_NOT_WORKING | Added in v1.6.11. The front camera is not working. |
| FRONT_CAMERA_NOT_FOUND | Added in v1.6.11. Front camera not found. |
| BACK_CAMERA_NOT_FOUND | Added in v1.6.11. Back camera not found. |
NFCError (previously KYCNFCError)
| Parameter | Description |
|---|---|
| UNKNOWN | An unknown error occurred. Please try again. |
| DEVICE_NOT_HAVE_NFC | The device has no NFC module. This feature only works on NFC-capable devices. |
| DISABLE_NFC_ADAPTER | An error occurred while disabling the NFC module. Please re-enable NFC. |
| NFC_NOT_ENABLED | The NFC module is not active. Please enable NFC. (previously NOT_ENABLE) |
| NOT_DISCOVERED | The identity document could not be scanned while NFC was on. Please bring the document close again. |
| TAG_NOT_SUPPORTED | The identity information is not supported. This identity card is not supported. |
| TAG_LOST | The identity information could not be read. Please bring the document close again. |
| ISO_DEP_NOT_SUPPORTED | The identity information could not be read. Please bring the document close again. (previously ISODEP_NOT_FOUND) |
| PASSIVE_AUTH_FAILED | The identity information could not be verified. Please use a valid identity document. |
| PHOTO_NOT_FOUND | The identity card has no photo information. Please use a valid identity document. |
| PERSON_DETAIL_NOT_FOUND | Personal information is required. Please place the identity document correctly. |
| CARD_AUTH_FAILED | The identity information could not be authenticated. |
| WRONG_MRZ_STRING | The MRZ information could not be read. Please bring the document close again. |
A separate, localized error message shown to the user when NFC verification fails for a generic reason (TR/EN/RU) was added in v1.6.11.
ScreenRecordingError
Added in v1.6.11. Errors from the Liveness step's screen-recording upload flow.
| Parameter | Description |
|---|---|
| MEDIA_PROJECTION_NOT_FOUND | Screen recording could not be started. The required media projection was not found. |
| MEDIA_PROJECTION_NOT_SUPPORTED | Your device does not support screen recording. |
| MEDIA_RECORDER_NOT_FOUND | The media recorder could not be started. |
| MEDIA_VIRTUAL_DISPLAY_NOT_FOUND | Screen recording could not be started. |
| VIDEO_READ_FAILED | The recorded video file could not be read. |
| RESULT_DATA_OR_CODE_NOT_FOUND | The permission data required for screen recording could not be obtained. |
| MEDIA_RECORDER_STOP_FAILED | The recorder could not be stopped properly. |
| FILE_PATH_NOT_CREATED | The recording file could not be created. |
NetworkError
Added in v1.6.11.
| Parameter | Description |
|---|---|
| UNKNOWN | An unknown network error occurred. Please try again. |
| REQUEST_FAILED | The request failed. Please check your internet connection and try again. |
| REQUEST_FAILED_WITH_STATUS_CODE | The request failed. Please check your internet connection and try again. |
| DECODING_FAILED | The incoming data could not be decoded. Please try again. |
ServerError
Added in v1.6.11.
| Parameter | Description |
|---|---|
| UNKNOWN | A server communication error occurred. Please try again. |
| UNEXPECTED | An unexpected error occurred. Please try again. |
TimeOutError
Added in v1.6.11.
| Parameter | Description |
|---|---|
| TIME_OUT | The operation timed out. Please try again. |
RejectedError
Added in v1.6.11.
| Parameter | Description |
|---|---|
| REJECTED | The operation was rejected. Please try again. |
| MAX_RETRY_COUNT_EXCEEDED | The maximum number of attempts was reached. |
IdentityReadFailedError
Added in v1.6.11.
| Parameter | Description |
|---|---|
| IDENTITY_READ_FAILED | The operation failed. Please try again. |
DocumentAutoDetectError
Added in v1.6.11. Document auto-detection errors (glare/brightness/multiple documents).
| Parameter | Description |
|---|---|
| UNKNOWN | The identity document could not be read. Please try again. |
| MULTIPLE_DOCUMENTS_DETECTED | Please show only one document. |
| GLARE_DETECTED | Glare detected. Please hold the document at a different angle. |
| GLARE_NOT_DETECTED | No glare detected on the identity document. Looks good. |
| TOO_BRIGHT | The environment is too bright. Please reduce the lighting. |
| TOO_DARK | The environment is too dark. Please move to a brighter location. |
VideoRecordError
Added in v1.6.11.
| Parameter | Description |
|---|---|
| TIME_OUT | The recording time expired. Please try again. |
| RECORDING_FAILED | An error occurred while recording. Please try again. |
| NO_DATA | No recording data was received. Please try again. |
PermissionError
Added in v1.6.11.
| Parameter | Description |
|---|---|
| LOCATION_PERMISSION_DENIED | Location permission was not granted. Please grant location permission. |
VideoCallError
Added in v1.6.11.
| Parameter | Description |
|---|---|
| CLOSED | We can't continue the process because you left the video call. Please restart to continue. |
| FAIL | The video call ended unsuccessfully. |