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

# Multi-IDV

> Select and configure Identity Document Verification (IDV) vendor at runtime in a unified flow

## Overview

Multi-IDV allows you to choose the IDV vendor at runtime when starting the flow.
Instead of predefining multiple vendors in a static recipe, you pass a single `provider` object to `oneSdk.flow("idv", ...)`. This enables:

* Runtime selection (user choice, geo routing, feature flag)
* Version migration (e.g. Onfido v12 → v14) without structural changes
* Consistent event surface regardless of vendor

<Callout icon="bell" color="#FFCA16" iconType="regular">
  You must confirm a vendor (and specific version) is enabled for your tenant
  before use. Contact your FrankieOne representative or Support Portal. Attempts
  to use a disabled vendor will fail.
</Callout>

<Callout icon="thumbtack" color="#1A6CFF" iconType="regular">
  Events (`ready`, `input_required`, `results`, `error`) behave uniformly across
  vendors. Persist vendor name + version in logs for observability.
</Callout>

## Implementations

<Tabs>
  <Tab title="General Pattern">
    Use this pattern for any enabled vendor.

    ```typescript title="Runtime Vendor Configuration" theme={null}
    const idv = oneSdk.flow("idv", {
      provider: {
        name: "<VENDOR_NAME>", // e.g. "onfido" | "incode" | "daon"
      },
    });
    ```
  </Tab>

  <Tab title="Onfido Specific">
    Onfido supports theming and UI customization.

    ```typescript title="Onfido Configuration With Theme & customUI" theme={null}
    const idv = oneSdk.flow("idv", {
      provider: {
        name: "onfido",
        sdkVersion: "14", // Default is "12" if omitted
        products: ["idv"], // Optional. defaults to ["idv"]
        theme: "dark", // "light" | "dark" (default: light)
        customUI: {} // Refer to Onfido customUI options,
      },
    });
    ```

    <Info>
      Refer to [Onfido's customUI styling options](/docs/v1/onesdk/oneSDK/implementation-guide/module/idv/vendor-customizations) for supported styling keys.
    </Info>
  </Tab>

  <Tab title="Daon Specific">
    Daon supports runtime products selection.

    ```typescript title="Daon Configuration" theme={null}
    const idv = oneSdk.flow("idv", {
      provider: {
        name: "daon",
        products: ["idv"], // Optional. defaults to ["idv"]
      },
    });
    ```
  </Tab>
</Tabs>

## Supported Vendors

| Vendor |
| ------ |
| Onfido |
| Incode |
| Daon   |

<Callout icon="thumbtack" color="#1A6CFF" iconType="regular">
  Request enablement for each vendor/version you want to use with your FrankieOne representative or Support Portal.
</Callout>

<Callout icon="star" color="#3DD892" iconType="regular">
  1. Validate vendor enablement server-side before exposing UI choice.
  2. Log vendor, version, and result status for analytics.
  3. Limit retries to transient errors; avoid infinite failover loops.
  4. Keep UI consistent across vendors to reduce cognitive friction.
</Callout>
