# Incode Cordova SDK

The Incode Onboarding Cordova Plugin adds end-to-end identity verification to your Cordova, Capacitor, or Ionic 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 plugin is distributed via the CordovaPluginReleases GitHub repository. Cordova apps install with the Cordova CLI; Capacitor and Ionic apps install via npm from the same repository, then sync native projects. Standard and NFC variants are available.&#x20;

## Start here

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

## Platform support

| Platform                      | Requirement                         |
| ----------------------------- | ----------------------------------- |
| Cordova                       | Node.js 18+, Cordova CLI 11+        |
| Ionic + Cordova               | Node.js 18+, Ionic CLI, Cordova CLI |
| Ionic + Capacitor / Capacitor | Node.js 18+, @capacitor/cli 7+      |
| Android                       | API 21+, `compileSdk` 35, Java 11+  |
| iOS                           | iOS 13+                             |

## Quick install

Standard variant:

```bash Cordova
cordova plugin add "https://github.com/Incode-Technologies-Example-Repos/CordovaPluginReleases.git#release/[VERSION]"
cordova plugin add cordova-plugin-camera        # required (ID and face capture)
cordova plugin add cordova-plugin-geolocation   # only if using the geolocation module
```
```text Capacitor + Ionic
npm install github:Incode-Technologies-Example-Repos/CordovaPluginReleases#release/[VERSION]
npm install @capacitor/camera                   # required (ID and face capture)
npm install @capacitor/geolocation              # only if using the geolocation module
npx cap sync
```
```text Ionic + Cordova
ionic cordova plugin add "https://github.com/Incode-Technologies-Example-Repos/CordovaPluginReleases.git#release/[VERSION]"
ionic cordova plugin add cordova-plugin-camera        # required (ID and face capture)
ionic cordova plugin add cordova-plugin-geolocation   # only if using the geolocation module
```

NFC variant (NFC-capable hardware required):

```bash Cordova
cordova plugin add "https://github.com/Incode-Technologies-Example-Repos/CordovaPluginReleases.git#release/[VERSION]-nfc"
cordova plugin add cordova-plugin-camera        # required (ID and face capture)
cordova plugin add cordova-plugin-geolocation   # only if using the geolocation module
```
```text Capacitor + Ionic
npm install github:Incode-Technologies-Example-Repos/CordovaPluginReleases#release/[VERSION]-nfc
npm install @capacitor/camera                   # required (ID and face capture)
npm install @capacitor/geolocation              # only if using the geolocation module
npx cap sync
```
```text Ionic + Cordova
ionic cordova plugin add "https://github.com/Incode-Technologies-Example-Repos/CordovaPluginReleases.git#release/[VERSION]-nfc"
ionic cordova plugin add cordova-plugin-camera  # required (ID and face capture)
ionic cordova plugin add cordova-plugin-geolocation   # only if using the geolocation module
```

Android and iOS require additional per-platform setup.&#x20;

<Callout icon="📘" theme="info">
  ### Capacitor note

  Cordova install hooks do not run. You must manually configure the Android Maven repository and iOS Podfile sources. See [Installation](installation) for details.
</Callout>

## How the SDK fits together

The plugin supports three integration patterns. They differ in where the flow is defined and how much control your app keeps while the flow runs.

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

You build a `flowConfig` in app code describing the modules you want (ID scan, selfie, face match, and so on) and pass it to `startOnboarding()`. The SDK owns the UI from the first screen to the last and returns the aggregated result in the success callback. Use this pattern when you want the simplicity of a single SDK call and your app doesn't need to intervene between modules.

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

### Pattern 2: 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](configure-flows-locally-and-run-step-by-step) for the details.

### Pattern 3: Run Flows configured online

You build a Flow or Workflow on the Incode Dashboard and pass its `configurationId` to `startFlow()` or `startWorkflow()`. The SDK owns the UI from the first screen to the last and returns the result in the success callback. Use this pattern when you want to update flow behavior from the Dashboard without redeploying your app.

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

## Variants

The plugin has two variants, so you only ship what you use.

| Variant  | Description                                                                   |
| -------- | ----------------------------------------------------------------------------- |
| Standard | Default variant. Covers all modules except NFC.                               |
| `-nfc`   | Adds NFC chip reading for ePassports and eIDs. Requires NFC-capable hardware. |

See [Installation](installation) for how to install each variant.

## What the plugin 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 and e-passport:** reads the chip in passports and supported ID documents (`-nfc` variant only).
- **Authentication:** standalone Face Login for returning users. See [Face Login](face-login).
- **Customization:** theming, localization, and custom assets so the experience matches your brand. See [Customization](customization).

## Need help?

- Hit a build or runtime error? See [Known Issues](known-issues).
- Looking for a specific method or parameter? See [API Reference](api-reference).
- Still stuck? Contact your Incode representative or email [help@incode.com](mailto:help@incode.com).

<br />
