SDK reference · Android SDK / Android Common Implementation Patterns

Integration Approaches

After you've installed and initialized the Incode Android SDK, choose an integration approach. This involves choosing:

  • An integration path: How much UI and orchestration the SDK owns.
  • An integration pattern: Where the identity verification (IDV) flow is defined and how it runs.

Choose the path first, then the pattern that fits your product.


Integration Paths

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

Path 1: Full Onboarding Flow

The SDK owns the UI from start to finish. You define the modules you want and pass them to the SDK. The SDK then runs those modules in sequence and returns results through a listener.

This is the simplest path and the recommended starting point for most integrations.

Path 2: Split Flow

The SDK owns each module screen: the camera UI, the capture experience, and the on-device guidance. You own the order of modules and the screens between them. Use this when you need to insert your own screens between Incode steps or run only part of an identity verification journey.

Path 3: Capture-Only

The SDK owns only the capture UI. You own everything before and after capture. This path is not recommended unless your platform has strict security or orchestration requirements.

See Capture-Only Mode.


Integration Patterns

The SDK supports three integration patterns. Each pattern determines where the flow is defined and how it runs.

Pattern 1: Configure Flows Locally and Run End to End

Define the flow in code using FlowConfig. Pass it to startOnboarding(). The SDK runs every module in sequence and returns control to your app when the flow finishes.

Use this pattern with Integration Path 1: Full Onboarding Flow.

See Configure Flows Locally and Run End to End​.

Pattern 2: Configure Flows Locally and Run Step by Step

Define the flow in code as one or more sections. Run each section with startOnboardingSection(). Control returns to your app between sections, so you can insert your own screens or logic, branch based on intermediate results, or split a long flow into discrete steps.

Use this pattern with Integration Path 2: Split Flow.

See Configure Flows Locally and Run Step by Step​.

Pattern 3: Run Flows Configured in Dashboard

Define the flow in Dashboard, then start it with startFlow() or startWorkflow(). Reference the flow by ID. The SDK pulls the modules and configuration from Dashboard; you don't need to define a FlowConfig locally. Activate the flow in Dashboard before starting the session. Use this when you want to update the flow without releasing a new app version.

Dashboard supports two flow types: Flows and Workflows. They behave differently depending on the integration path:

  • Flows support Integration Path 1: Full Onboarding Flow only.
  • Workflows support Integration Path 1: Full Onboarding Flow and Integration Path 2: Split Flow.

See Run Flows Configured in Dashboard​.


Choose Your Integration Approach

Goal Path Pattern Entry Point
Run a full IDV flow with the least code possible Path 1: Full Onboarding Flow Pattern 1: Configure Flows Locally and Run End to End startOnboarding()
Insert your own screens or logic between SDK steps ​Path 2: Split Flow Pattern 2: Configure Flows Locally and Run Step by Step startOnboardingSection()
Update the flow from Dashboard without an app release (Flows) Path 1: Full Onboarding Flow Pattern 3: Run Flows Configured in Dashboard startFlow()
Update the flow from Dashboard without an app release (Workflows) Path 1: Full Onboarding Flow or Path 2: Split Flow Pattern 3: Run Flows Configured in Dashboard startWorkflow()
Build a fully custom capture experience Path 3: Capture-Only N/A See Capture-Only Mode

What's Next

Use the table below to find the page you need.

Task Page
View a complete, buildable reference integration Example Implementation
View the module catalog for building a flowConfig Individual Modules
View the result and error objects returned when a flow finishes. Results
View the full specification of startOnboarding(), startOnboardingSection(), startWorkflow(), FlowConfig, and SessionConfig API Reference

Was this page helpful?