# Incode Android SDK Reference

The Incode Android SDK adds end-to-end identity verification (IDV) to your app. The UI supports custom themes, so IDV looks and feels like your product. The Android SDK ships as AAR artifacts through Gradle or Maven, organized into modules that are versioned together through the Incode Bill of Materials (BOM). You only manage one version number. This page explains what the SDK can do and how it works.

***

## Capabilities

The Incode Android SDK supports:

- **Identity capture**: ID scan, document capture, and [OCR](https://developer.incode.com/docs/glossary#ocr) data extraction.
- **Liveness and biometrics**: Selfie capture, video selfie, liveness detection, and face match.
- **NFC**: Data extraction from [NFC](https://developer.incode.com/docs/glossary#nfc-scan) chips in passports and supported ID documents.
- **Compliance and risk**: Government validation, watchlist screening, and antifraud analysis.
- **Data collection**: Consents, electronic signatures, phone and email, geolocation, and custom forms.
- **Wallets**: IDV with a Google Wallet Digital ID.
- **Customization**: Theming, localization, and custom assets so the IDV experience matches your brand.

***

## Integration Approaches

The SDK supports three integration paths, each offering a different level of UI control. Start with the simplest path that meets your requirements.

- **Full Onboarding Flow**: The SDK owns the full UI from start to finish.
- **Split Flow**: You own the order of modules and the screens between them.
- **Capture-Only**: You own the UI before and after capture; Incode owns only the capture UI. See [Capture-Only Mode](https://developer.incode.com/docs/android-capture-only-sdk).

For Paths 1 and 2, there is a further decision: how the flow is configured and executed. See [Common Integration Approaches](https://developer.incode.com/docs/android-common-implementation-patterns) for the full breakdown of paths and patterns.

***

## Runtime Modes

The mode controls when and whether captured data is sent to Incode for processing. Regardless of the integration path you choose, the SDK runs in one of three modes:

- **Standard**: Sends captured data to Incode for processing as IDV runs.
- **Capture-Only**: Captures on-device without sending anything to Incode. You submit from your back end.
- **Delayed**: Captures offline and syncs once connected.

See [SDK Modes](https://developer.incode.com/docs/android-sdk-modes) for how to select a mode.

***

## Dependencies

The SDK is modular. There are no build variants; it is a single distribution. Add only the dependencies your integration requires. Use the BOM to pin all dependencies to compatible versions from a single version number. See [BOM Version Mapping](https://developer.incode.com/docs/bom-version-mapping).

| Dependency                 | Type        | Description                                                                                                                                                                                                                                                                                                                             |
| :------------------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `welcome`                  | Required    | Core dependency; contains all core SDK functionality.                                                                                                                                                                                                                                                                                   |
| `core-light`               | Required    | Contains image-processing libraries used throughout the SDK.                                                                                                                                                                                                                                                                            |
| `bom`                      | Recommended | Bill of Materials that pins all Incode dependencies to compatible versions from a single version number.                                                                                                                                                                                                                                |
| `extensions`               | Optional    | Required for custom theme configuration, dynamic localization, and runtime localization.                                                                                                                                                                                                                                                |
| `nfc`                      | Optional    | Required for the [NFC Scan module](https://developer.incode.com/docs/android-nfc-scan-2).                                                                                                                                                                                                                                 |
| `video-streaming`          | Optional    | Required by the [Conference module](https://developer.incode.com/docs/android-conference-assisted-video) and the `streamFrames` feature in the [ID Scan](https://developer.incode.com/docs/android-id-scan) and [Selfie Scan](https://developer.incode.com/docs/android-selfie-scan) modules. |
| `model-face-recognition`   | Optional    | Required for on-device face recognition. Used by face login in the [Selfie Scan module](https://developer.incode.com/docs/android-selfie-scan)​ only.                                                                                                                                                                     |
| `model-id-face-detection`  | Optional    | Required for front and back ID side detection in the [ID Scan module](https://developer.incode.com/docs/android-id-scan).                                                                                                                                                                                                 |
| `model-liveness-detection` | Optional    | Required for on-device liveness detection in the [Selfie Scan module](https://developer.incode.com/docs/android-selfie-scan).                                                                                                                                                                                             |
| `model-face-occlusion`     | Optional    | Required for on-device face occlusion detection in the [Selfie Scan module](https://developer.incode.com/docs/android-selfie-scan).                                                                                                                                                                                       |
| `model-age-estimation`     | Optional    | Required for on-device age estimation in the [Selfie Scan module](https://developer.incode.com/docs/android-selfie-scan).                                                                                                                                                                                                 |
| `wallets`                  | Optional    | Required for wallet integrations, including Google Wallet ID.                                                                                                                                                                                                                                                                           |

***

## Device Requirements

The SDK runs on physical Android devices that meet the following minimum requirements:

- **RAM:** 3 GB

- **Back-facing camera:** 5 MP

- **Front-facing (selfie) camera:** 2 MP

- **NFC hardware:** Required for the [NFC Scan module](https://developer.incode.com/docs/android-nfc-scan-2)

- **Network:** An active HTTPS connection to the Incode Platform

***

## Data Handling and Privacy

The SDK runs the on-device half of identity verification. At a high level:

- **On-device capture and inference**: ID images, selfie and liveness video, and NFC chip data are captured on the device. On-device ML models extract their features locally. These models cover liveness detection, presentation-attack detection, face recognition, ID face detection, face occlusion, and age estimation.
- **Encrypted transmission**: Artifacts and verification requests are captured and sent to the Incode Platform over an encrypted channel. You can also enforce end-to-end encryption. See [End-to-End Encryption (E2EE)](https://developer.incode.com/docs/android-e2ee).
- **No sensitive logging**: The SDK does not log personally identifiable information (PII) or capture content. Its published AAR artifacts are obfuscated to prevent reverse engineering.
- **Server-authoritative result**: The Incode Platform holds the authoritative verification result for your back end to consume server-side. The SDK reports each module's outcome to your app through the listener.
- **Transient local state**: The SDK keeps only transient, encrypted session state data on the device. Call `deleteUserLocalData()` when you are finished with a session.

***

## What's Next

Use the table below to find the page you need.

| Task                                               | Page                                                                                                                    |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| Learn the correct order of steps to set up the SDK | [Getting Started](https://developer.incode.com/docs/android-getting-started)                              |
| Add the SDK to your project                        | [Installation](https://developer.incode.com/docs/android-installation)                                    |
| Choose your integration path and pattern           | [Common Integration Approaches](https://developer.incode.com/docs/android-common-implementation-patterns) |
| Capture data without sending it to Incode          | [Capture-Only Mode](https://developer.incode.com/docs/android-capture-only-sdk)                           |
| Integrate Google Wallet Digital ID verification    | [Google Wallet ID](https://developer.incode.com/docs/android-google-wallet-id)                            |
| Implement device and behavior risk analysis        | [Risk Analysis](https://developer.incode.com/docs/android-risk-analysis-1)                                |
| Browse modules and their configuration options     | [Modules](https://developer.incode.com/docs/android-individual-modules)                                   |
| Read documents via NFC                             | [NFC Scan](https://developer.incode.com/docs/android-nfc-scan-2)                                          |
| Customize colors, fonts, and text                  | [Customization](https://developer.incode.com/docs/android-customization)                                  |
| Look up result and error objects by module         | [Results](https://developer.incode.com/docs/android-results-reference)                                    |
| Browse the full public API                         | [API Reference](https://developer.incode.com/docs/android-api-reference)                                  |
| Solve a build problem                              | [Troubleshooting](https://developer.incode.com/docs/android-troubleshooting)                              |
| Upgrade an existing integration                    | [Migration Guide](https://developer.incode.com/docs/migration-guide)                                      |
| Check what changed in a release                    | [Android SDK Release Notes](https://developer.incode.com/docs/releases-android-sdk)                       |
| Map BOM versions to module versions                | [BOM Version Mapping](https://developer.incode.com/docs/bom-version-mapping)                              |

For help, contact your enterprise customer success manager or email [help@incode.com](mailto:help@incode.com).
