---
title: "Android SDK migration guide | Veriff.com"
slug: "android-sdk-migration-guide"
description: "Migrate your Veriff Android SDK seamlessly from 5.x.x to 6.0.0 with updated APIs, new attributes, and streamlined branding for enhanced integration."
status: "update"
updated: 2026-05-28T08:16:27Z
published: 2026-05-28T08:16:27Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.veriff.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Android SDK migration guide

## Migrating Veriff Android SDK from 6.x.x to 9.0.0

### SDK integration

#### The Branding API has been updated

- New colors added for on camera overlay content, and feedback and error elements:
  - `Branding.onCameraOverlaySecondary`
  - `Branding.feedbackSuccess`
  - `Branding.onFeedbackSuccess`
  - `Branding.feedbackError`
  - `Branding.onFeedbackError`
- Deprecated colors (will stop being used in future updates):
  - `Branding.success`
  - `Branding.error`

#### Permissions updated

Starting from Android SDK v9.0.0, the Veriff SDK no longer declares the following permissions in its AndroidManifest:

```xml
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
```

The SDK previously used a foreground service for data upload operations. This has been replaced with an alternative approach that does not require foreground service permissions.

**Action required**: If your app was declaring these permissions ONLY because the **Veriff SDK** required them, you can safely remove them from your app's AndroidManifest.xml.

*→ See*[*Add permissions*](/v1/docs/android-sdk-guide#add-permissions)*section in Android SDK guide for full list of required permissions*

## Migrating Veriff Android SDK from 5.x.x to 6.0.0

### SDK integration

The following APIs were removed:

- `Branding.Builder.themeColor(color)` - split into two different attributes: `Branding.Builder.primary(color)` & `Branding.Builder.secondary(color)`
- `Branding.Builder.logomark(drawable)`
- `Branding.Builder.primaryButtonBackgroundColor(color)` - the button background will be set based on the new `Branding.Builder.onPrimary(color)` attribute
- `Branding.Builder.bulletPoint(color)` - bullet point color can be controlled by the new `Branding.Builder.secondary(color)` & `Branding.Builder.onSecondary(color)` attributes
- `Branding.Builder.notificationIcon(color)`

The following APIs were renamed:

- `Branding.Builder.toolbarIcon(drawable)` renamed to `Branding.Builder.logo(drawable)`
- `Branding.Builder.backgroundColor(color)` renamed to `Branding.Builder.background(color)`
- `Branding.Builder.primaryTextColor(color)`renamed to `Branding.Builder.onBackground(color)`
- `Branding.Builder.secondaryTextColor(color)` renamed to `Branding.Builder.onBackgroundSecondary(color)`
- `Branding.Builder.buttonCornerRadius(cornerRadius)` renamed to `Branding.Builder.buttonRadius(cornerRadius)`

The following APIs were added:

- `Branding.Builder.onBackgroundTertiary(color)`
- `Branding.Builder.primary(color)`
- `Branding.Builder.onPrimary(color)`
- `Branding.Builder.secondary(color)`
- `Branding.Builder.onSecondary(color)`
- `Branding.Builder.outline(color)`
- `Branding.Builder.error(color)`
- `Branding.Builder.success(color)`

## Migrating Veriff Android SDK from 4.x.x to 5.0.0

### SDK integration

The following APIs were removed:

- `Branding.Builder.buttonHeight(height)` - buttons are now always with a `60dp` height
- `Branding.Builder.statusBarColor(color)` - the status bar is now using the `backgroundColor` attribute instead
- `Branding.Builder.externalResources(externalResources)` - resources can be customized via `toolbarIconProvider()`, `toolbarIcon()` and the new `logomark()` method
- `Font.Builder.setNormalAndBold(normal, bold)` - this was split into separate setters for font weights

The following APIs were added:

- `Branding.Builder.logomark(drawable)` - sets a drawable to use in UI elements where a square logo is needed. (Defaults to the Veriff logomark when this attribute is not set)
- `Font.Builder.setRegular(regularFont)` - sets regular weight font
- `Font.Builder.setMedium(mediumFont)` - sets medium weight font
- `Font.Builder.setBold(boldFont)` - sets bold weight font

## Migrating Veriff Android SDK from 3.x.x to 4.0.0

Follow these steps to migrate from SDK `3.x.x` to `4.0.0`

### Android Gradle Plugin

Open the root `build.gradle` file and change the `classpath` dependency in the `buldscript` section if that is needed.

`groovy buildscript { repositories { ... } dependencies { classpath 'com.android.tools.build:gradle:3.4.1' // and above ... } }` *- SHOW THIS AS CODE, GPT version below*

```groovy
buildscript {
    repositories { // Add your repositories here
        ...
    }
    dependencies {
        ...
        classpath 'com.android.tools.build:gradle:3.4.1' // and above
        ...
    }
}
```

### Kotlin

Open the root `build.gradle` file and change the `classpath` dependency in the `buldscript` section if that needed.

```kotlin
buildscript {
    ext.kotlinVersion = '1.4.0' // and above
    repositories {
      ...
    }
    dependencies {
        ...
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
        ...
    }
}
```

### Proguard

Open the root `build.gradle` file and add the `force update` to the `buildscript` section if that needed.

`groovy buildscript { ... configurations.all { resolutionStrategy { force 'net.sf.proguard:proguard-gradle:6.2.2' } } }` *- SHOW THIS AS CODE, GPT version below*

```gradle
buildscript {
    configurations.all {
        resolutionStrategy {
            force 'net.sf.proguard:proguard-gradle:6.2.2'
        }
    }
}
```

### SDK integration

Nothing changed in SDK except the public API types.

Update the imports to:

- `java import com.veriff.Branding;`
- `import com.veriff.Configuration;`
- `import com.veriff.Font;`
- `import com.veriff.Result;`
- `import com.veriff.Sdk;`

Change types:

- from `VeriffBranding` to `Branding`
- `VeriffConfiguration` to `Configuration`
- `VeriffFont` to `Font`
- `VeriffResult` to `Result`

## Migrating Veriff Android SDK from 2.x.x to 3.0.0

Follow these steps to migrate from SDK 2.x.x to 3.0.0

### Switch to AndroidX

Veriff SDK 3.0.0 requires AndroidX 1.0.0 or later. If you haven't switched to AndroidX in your app yet then follow [this guide](https://developer.android.com/jetpack/androidx/migrate) by Android.

### Enable Java 8

Veriff SDK 3.0.0 requires Java 8 language features to be enabled in your project. If you do not have this enabled already, add this to your `app/build.gradle` file under the `android {}` section:

```java
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
```

See more in an Android guide [here](https://developer.android.com/studio/write/java8-support#supported_features).

### Switch from `baseUrl` and `sessionToken` to `sessionUrl`

The new 3.0.0 SDK requires a single `sessionUrl` parameter instead of `baseUrl` and `sessionToken`. See the documentation [here](https://developers.veriff.com/#post-sessions). As a backwards compatibility measure, if a `sessionToken` value is passed into the `sessionUrl` parameter then it will still work with an assumed `baseUrl` of `magic.veriff.com`.

### Use `com.veriff.*` classes instead of `mobi.lab.veriff.data.*` ones

The name and location of the main SDK entry class has changed from `mobi.lab.veriff.data.Veriff` to `com.veriff.VeriffSdk`. The API is largely similar - instead of `Veriff.Builder` there's a `VeriffSdk.createLaunchIntent` method that returns an `Intent` which you can then use to launch veriff. See example [here](https://developers.veriff.com/#starting-the-verification-flow).

If you are using `Branding` to customize the look and feel of the SDK then it has a new name - `VeriffBranding`. The builder interface has been streamlined by removing the `set*` prefixes from all the methods. Read more about customization [here](https://developers.veriff.com/#customize-user-interface-optional).

### Use `com.veriff.VeriffResult` instead of reading return `Intent` directly

Starting with 3.0.0 there's a new way to handle the result of the verification flow. Instead of reading `INTENT_EXTRA_STATUS` directly from the returned `data` intent, use `VeriffResult.fromResultIntent(data)` to get a result object with a `status` field and an optional `error` field. We've reduced `status` to just three - `CANCELED, ERROR, DONE`. In case of `ERROR` the `error` field contains more information. See the example [here](https://developers.veriff.com/#getting-the-verification-status).

### Remove usage of deprecated types

While the old SDK entry points are still present for backwards compatibility, they will be removed in the future. Please remove usage of any SDK type marked with `@Deprecated`. The easiest way to discover these is to look at your Gradle build log with Java/Kotlin compilation warnings turned on.

Here is a list of old deprecated classes due to be removed in a future release:

```gradle
mobi.lab.veriff.data.Veriff
mobi.lab.veriff.data.Veriff.Builder
mobi.lab.veriff.data.VeriffConstants
mobi.lab.veriff.data.Branding
mobi.lab.veriff.data.Branding.Builder
mobi.lab.veriff.data.DrawableProvider
mobi.lab.veriff.util.LogAccess
mobi.lab.veriff.util.LogAccess.LogLevel
mobi.lab.veriff.util.LogcatLogAccess
mobi.lab.veriff.service.VeriffStatusUpdatesService
```

## Related

- [Android SDK guide](/android-sdk-guide.md)
- [Android SDK changelog](/android-sdk-changelog.md)
- [Intro to the API](/quick-guide-of-idv-using-the-api.md)
- [Backwards compatible changes](/backwards-compatible-changes.md)
