Identity Verification Android SDK
Beta
Last updated: February 4, 2026
Version 0.1.0
You can use the Identity Verification Android SDK to redirect applicants to attempts in your Android mobile app.
Information
To enable the SDK for your Identity Verification configuration ID supports the SDK, contact your account manager or request support.
You must have integrated the Identity Verification solution.
The following minimum versions apply:
- Kotlin 2.1.0
- Android minSdkVersion 24
Follow these steps:
- Install the SDK.
- Initialize the SDK.
- Handle the verification result.
The Identity Verification Android SDK is distributed as a local Maven repository containing Android archive files (AARs).
Download and unzip the file provided by your account manager.
Copy the unzipped folder to your project root at
<project-root>/local-repo/, using the following structure:
1<project-root>/2├── local-repo/3│ └── com/4│ └── checkout/5│ └── idv/6│ ├── idv/7│ │ └── 0.1.0/8│ │ └── idv-0.1.0.aar9│ └── idv-ui/10│ └── 0.1.0/11│ └── idv-ui-0.1.0.aar12└── ...
- In
settings.gradle.kts, add the local Maven repository todependencyResolutionManagement:
1dependencyResolutionManagement {2repositories {3google()4mavenCentral()5maven(url = uri("${rootProject.projectDir}/local-repo"))6}7}
- In
gradle/libs.versions.toml, add the following dependencies to the version catalog:
1[versions]2idv = "0.1.0"34[libraries]5idv = { group = "com.checkout.idv", name = "idv", version.ref = "idv" }6idv-ui = { group = "com.checkout.idv", name = "idv-ui", version.ref = "idv" }
- In your app module
build.gradle.kts, add the dependencies:
1dependencies {2implementation(libs.idv)3implementation(libs.idv.ui)4}
Information
Checkout.com sends you a new .zip file when we release updates to the SDK.
In your app's assets library, add your business's logo in any image format supported by Android. For example GIF, JPG, PNG, WebP, Android Vector Drawable (AVD).
Information
For information on providing a logo for dark mode, see Medium – Use a Different Image When Dark Mode is Enabled on Android.
- Call the Create an attempt endpoint from your back end, which returns the following:
- The attempt URL, which is valid for 15 minutes, in the
verification_urlfield - The
client_secret, which is valid for 48 hours, to authorize the verification
- Initialize the SDK and pass the attempt URL and the client secret:
1override fun onCreate(savedInstanceState: Bundle?) {2super.onCreate(savedInstanceState)3enableEdgeToEdge()45setContent {6// 1. Create the configuration (optionally, add your company name and logo)7val configuration = IdentityVerificationConfiguration(8commercialName = "YOUR_BRAND",9logo = R.drawable.logo,10buttonCornerRadius = 80.dp,11typography =12IdentityVerificationConfiguration.Typography(13pageTitle = R.font.YOUR_BRAND_FONT14sectionTitle = R.font.YOUR_BRAND_FONT,15body = R.font.YOUR_BRAND_FONT,16caption = R.font.YOUR_BRAND_FONT,17button = R.font.YOUR_BRAND_FONT,18),19// For example, your app's primary color20lightColorScheme = ColorScheme(21primary = Color(0xFFEC1408),22onPrimary = Color.White23)24)2526// 2. Optionally, customize the colors, button corner radius, and fonts27public data class IdentityVerificationConfiguration(28val typography: Typography = Typography(),29val lightColorScheme: ColorScheme = ColorScheme.light,30val darkColorScheme: ColorScheme = ColorScheme.dark,31val buttonCornerRadius: Dp = 4.dp,32@DrawableRes val logo: Int,33val commercialName: String,34) : Parcelable {35@Parcelize36public data class Typography(37@FontRes val pageTitle: Int = R.font.roboto,38@FontRes val sectionTitle: Int = R.font.roboto,39@FontRes val body: Int = R.font.inter,40@FontRes val caption: Int = R.font.inter,41@FontRes val button: Int = R.font.inter,42) : Parcelable4344// 3. Initialize the launcher45val idv = CheckoutIdentityVerification.rememberCheckoutIdentityVerification(46configuration = configuration47) { result ->48// 3. Handle the result49when (result) {50is IDVResult.Completed -> {51println("Verification completed successfully!")52}53is IDVResult.Failed -> {54println("Verification failed or cancelled. Reason: ${result.reason}")55}56}57}5859val launchOptions = IDVLaunchOptions(60verificationUrl = "https://example.com/verify",61clientSecret = "Your_client_secret",62)6364Scaffold(modifier = Modifier.fillMaxSize()) { padding ->65Box(modifier = Modifier.padding(padding).fillMaxSize(), contentAlignment = Alignment.Center) {66Button(onClick = {67// 4. Launch the SDK68idv.launch(launchOptions = launchOptions)69}) {70Text("Start Verification")71}72}73}74}75}
You can use the IdentityVerificationConfiguration struct to customize the following elements of the verification UI:
- Button corner radius
- Colors
- Commercial name for your business
- Fonts
- Logo
The UI supports the following languages:
- Chinese (simplified)
- Dutch
- English (UK)
- English (US)
- Estonian
- Finnish
- French
- German
- Italian
- Japanese
- Korean
- Latvian
- Polish
- Portuguese
- Romanian
- Russian
- Slovak
- Spanish
- Swedish
When the verification is completed and the result is available, catch the ReturnReason enum.
| Enum | Description |
|---|---|
| The verification was completed successfully. |
| The applicant selected a button to refuse to perform the verification. This can have the value |
| The applicant needs to retry the verification. This can have the following values:
|
Information
Each ReturnReason returns a response code that provides more information about the reason.
See Identities response codes.