# Incode Flutter SDK Reference

The Incode Flutter SDK adds end-to-end identity verification to your app: document and ID capture with OCR, selfie and video-selfie liveness, face match, and NFC e-passport reading. The UI is fully themeable, so onboarding looks and feels like your product. The SDK ships through GitHub and supports Android and iOS. Multiple variants are available for different feature sets.

This page orients you to what the SDK does and routes you to the page you need next. If you are starting fresh, begin with [Getting Started](./flutter-getting-started) and [Common Implementation Patterns](./flutter-common-implementation-patterns).

## Start here

| If you want to...                      | Go to                                                                      |
| -------------------------------------- |----------------------------------------------------------------------------|
| Add the SDK to your project            | [Installation](./flutter-installation)                                     |
| Get an onboarding flow running         | [Common Implementation Patterns](./flutter-common-implementation-patterns) |
| Authenticate a returning user          | [Face Login](./flutter-face-login)                                         |
| Browse available modules               | [Modules](./flutter-modules)                                               |
| See the result payloads modules return | [Results](./flutter-results)                                               |
| Customize colors, fonts, and text      | [Customization](./flutter-customization)                                   |
| Browse the full public API             | [API Reference](./flutter-api-reference)                                   |
| Solve a build problem                  | [Known Issues](./flutter-known-issues)                                     |
| Migrate to a newer version             | [Migration Guide](./flutter-migration-guide)                               |

## How the SDK fits together

The SDK supports three integration patterns. They differ in how much of the UI and orchestration the SDK owns. The recommended starting point for most integrations is the online-configured flow.

### Pattern 1: Run Flows configured online (recommended)

You build a Flow or Workflow in Dashboard and pass its ID/URL (`configurationId`) to `startFlow()` or `startWorkflow()`. The SDK owns the UI from the first screen to the last and returns results through listener callbacks. Use this pattern when you want to update flow behavior from Dashboard without redeploying your app.

See [Run Flows Configured Online](./flutter-run-flows-configured-online) for the details.

### Pattern 2: Configure flows locally and run end to end

You build an `OnboardingFlowConfiguration` in app code describing the modules you want (ID scan, selfie, NFC, and so on) and pass it to `startOnboarding()`. The SDK owns the UI from the first screen to the last and returns results through listener callbacks. Use this pattern when you want the simplicity of a single SDK call but prefer defining your flow in code rather than in Dashboard.

See [Configure Flows Locally and Run End to End](./flutter-configure-flows-locally-and-run-end-to-end) for the details.

### Pattern 3: Configure flows locally and run step by step

You run modules in named sections and return control to your app between sections. The SDK still owns each module screen (camera UI, capture experience, on-device guidance), but your app owns the shell around them: navigation, your own intro and transition screens, and when each section launches. Use this pattern when you need to interleave Incode steps with your own screens or run only part of a flow.

See [Configure Flows Locally and Run Step by Step](./flutter-configure-flows-locally-and-run-step-by-step) for the details.

## Variants

The SDK has multiple variants, so you only ship what you use.

| Variant  | Description                                                                              |
| -------- | ---------------------------------------------------------------------------------------- |
| Standard | Default variant. No modifier.                                                            |
| `-vc`    | Streams the camera feed during Selfie and ID scan.                                       |
| `-nfc`   | Reads data from a passport or ID chip via NFC.                                           |
| `-l`     | Manipulates locally stored identities. Required for 1:N `FaceAuthMode.local` Face Login. |

See [SDK variants](./flutter-installation#sdk-variants) on the Installation page for details.

## What the SDK can do

- **Identity capture:** ID scan, document capture, and OCR data extraction.
- **Liveness and biometrics:** selfie capture, video selfie, liveness detection, and face match.
- **NFC / e-passport:** reads the chip in passports and supported ID documents.
- **Authentication:** standalone Face Login for returning users (1:1 or 1:N database lookup). See [Face Login](./flutter-face-login).
- **Customization:** theming, localization, and custom assets so the experience matches your brand. See [Customization](./flutter-customization).

## Need help?

- Hit a build or runtime error? See [Known Issues](./flutter-known-issues).
- Looking for a specific class, method, or parameter? See [API Reference](./flutter-api-reference).
- Still stuck? Contact your enterprise Customer Success Manager or email [help@incode.com](mailto:help@incode.com).

<br />
