The Incode iOS SDK is composed of single-purpose modules. You assemble an onboarding flow by adding modules to an IncdOnboardingFlowConfiguration, passing it to startOnboarding(...), and receiving each module's output through your IncdOnboardingDelegate. This page lists each module by category.
Info
Terminology
"Module" here refers to an onboarding step, such as ID Capture or Video Selfie. You add them in code with flowConfig.addXxx(...).
This is different from the SDK build variants (-l, -nfc, -vc, -sna) that you select at installation to include optional capabilities such as Login, NFC, Video Conference, or Silent Network Authentication. The Variant column below tells you which variant each module needs. Anything marked "All" ships with the core SDK.
Each module is configured through its addXxx(...) builder and returns its result through a dedicated callback on the delegate. The only required callbacks are onSuccess() and onError(_:). The linked pages cover detailed configuration for each module. See Flow Configuration for the full builder catalog.
Most modules ship a legacy (v1) and a new (v2) UI; the active one is selected by the SDK. See Customization.
Danger
Ordering Matters
Some modules depend on others running earlier in the flow. For example, ID OCR and Process ID run after ID Capture; NFC runs after ID Capture and Process ID; and Face Match runs after Selfie and at least one document-capturing module. See each module's page for its exact ordering requirements.
The following tables can help you choose which modules to use. They are divided by category. Module descriptions are general; exact behavior depends on your Flow or Workflow configuration.
Collect Identity Data
These modules gather raw inputs from users. Most simply receive and record without a pass/fail outcome, though Phone and Email can optionally verify ownership with a one-time password (OTP).
| Module | Description | Variant |
|---|---|---|
| Document Capture | Captures a supplementary document, such as a proof of address document, medical document, or bank statement. Users can upload a file or take a photo of the document with their device's camera. In Dashboard, this is the Document Capture module. | All |
| Dynamic Forms | Presents one or more custom screens to collect information from a user. In Dashboard, this is the Forms and Data Entry module. | All |
| Collects a user's email address and can confirm email ownership by sending a one-time password (OTP) to that address. In Dashboard, this is the Email Input module. | All | |
| Full Name | Collects the user's name and sends it to the server. | All |
| Geolocation | Requests location permission, then captures the precise physical location of the user's device, using its GPS sensor to record coordinates and location fields such as country, state, and city. In Dashboard, this is the Geolocation module. | All |
| ID Capture | Captures the front and back of a government-issued ID, with auto-capture and quality checks, and produces clean images for processing. It is the entry point for most identity-capture flows. Add it before ID OCR and Process ID. In Dashboard, this is the ID Capture module. | All |
| ID OCR | Extracts text from a captured identity document using Optical Character Recognition (OCR). It then shows that text to the user to confirm it's correct before the session continues. When enabled, users can correct missing or misread fields. Add it after Process ID, which must run after ID Capture. In Dashboard, this is Review OCR Data module. | All |
| NFC | Reads the secure NFC chip embedded in ICAO 9303-compliant travel documents, such as e-passports. It then returns the holder's data, including the chip portrait image. Add it after ID Capture and Process ID. When a flow captures multiple IDs, NFC applies only to the first ID. In Dashboard, this is the NFC Scan module. | -nfc build, on NFC-capable devices |
| Phone | Collects a user's phone number and can confirm ownership by sending a one-time password (OTP) via SMS. In Dashboard, this is the Phone Number Input module. | All; -sna adds Silent Network Authentication |
| QR Scan | Captures the QR code on the back of an ID, decodes its identity data, and sends it to the server. | All |
| Selfie | Captures the user's face with the device camera and runs configurable liveness, face-recognition, and image-quality checks. It can enroll new users so their face can be matched against an ID photo or used for later authentication. Most flows include this module. In Dashboard, this is the Face Capture module. | All |
| Video Selfie | Records a short video of the user performing a guided series of actions, including capturing their ID and selfie, to confirm physical presence and run liveness and face match checks. It can also capture voice consent. Add it after a module that captures a selfie, such as Selfie. In Dashboard, this is the Video Selfie module. | All |
Verify and Authenticate
These modules run checks against collected data to produce a pass/fail or match/no-match determination.
| Module | Description | Variant |
|---|---|---|
| Antifraud | Compares the current Session against prior Sessions and known identities to detect signs of fraud. In Dashboard, this is the Antifraud Check module. | All |
| CURP Validation | Validates a person's CURP (Clave Única de Registro de Población), a personal identification number issued in Mexico, against Mexico's RENAPO registry. Accepts a CURP extracted via OCR, entered manually, or generated from personal data. In Dashboard, this is the CURP Validation module. | All (Mexico) |
| Custom Watchlist | Screens the user's collected data, including biometric face data when available, against your organization's private watchlist of blocked or trusted users, and influences the Session outcome accordingly. In Dashboard, this is the Custom Watchlist module. | All |
| eKYB (electronic Know Your Business) | Collects and verifies a business entity's identity data, such as business name, address, and tax ID. In Dashboard, this is the eKYB module. | All |
| eKYC (electronic Know Your Customer) | Collects and verifies a user's personal identity data against authoritative data sources. This data can include the user's name, email, address, phone, tax ID, date of birth, and nationality. This module can prefill fields from data captured earlier in the flow, such as a scanned document, and validate them against your Incode configuration. In Dashboard, this is the eKYC module. | All |
| Face Authentication | Captures a returning user's face with the device camera and matches it against the face already enrolled for that user. It then returns a pass or fail result. In Dashboard, this is the Face Authentication module. | All; local on-device matching requires the -l build |
| Face Match | Compares the user's selfie against their ID photo, their NFC chip photo, or both in a 3-way match. It then returns a match decision and confidence score. Add it after Selfie and at least one document-capturing module. In Dashboard, this is the Face Match module. | All |
| Global Watchlist | Screens the user's identity against sources of sanctions, Politically Exposed Persons (PEP) databases, and adverse media, returning any matches found across the configured sources. In Dashboard, this is the Watchlist module. | All |
| Government Validation | Validates identity data extracted from a user's ID against an authoritative government registry. It can also match the user's photo in the government database against their captured selfie. Add it after Selfie and one document-capturing module. In Dashboard, this is the Government Data Verification and Government Record Verification modules. | All (region-gated, Mexico) |
| Process ID | Determines whether a submitted identity document is authentic. It analyzes the images captured by the ID Capture module against known parameters for the document type, runs a set of authenticity checks, and produces a validation result and the OCR data used by later steps. Add it before ID OCR and after ID Capture. In Dashboard, this is the ID Validation module. | All |
Capture Signatures and Consent
These modules capture legally binding signatures and record user consent.
| Module | Description | Variant |
|---|---|---|
| AES (Advanced Electronic Signature) | The AES (Advanced Electronic Signature) module shows the user the documents to sign, collects their consent, and captures a certificate-backed electronic signature. That digital certificate verifies their identity, making the signed document legally binding and compliant. In Dashboard, this is the Advanced Electronic Signature module. | All |
| Combined Consent | Shows the user one preconfigured consent to review and accept, then records their agreement. Consents obtain the user's permission to collect and process their data. Most jurisdictions require this at the start of an identity verification journey. In Dashboard, this is the Data Sharing Consent module. | All |
| Machine Learning Consent | Captures the user's consent to process their biometric data for machine-learning purposes. You choose the consent text variant (US, GDPR, or worldwide) that matches your compliance needs. | All |
| QES (Qualified Electronic Signature) | Shows the user documents to sign, collects their consent, and captures a Qualified Electronic Signature (QES), the highest-assurance electronic signature under the EU eIDAS Regulation. A qualified certificate from a Qualified Trust Service Provider (QTSP) backs the signature, making it legally equivalent to a handwritten signature across EU member states. In Dashboard, this is the Qualified Electronic Signature module. | All |
| Signature | Captures a signature the user hand-draws on screen, optionally presenting documents to sign. It is typically placed at the end of a verification journey to capture explicit consent. In Dashboard, this is the Electronic Signature module. | All |
| User Consent | Shows a custom consent agreement for the user to review and accept. | All |
Add Human-Assisted Verification
These modules introduce a live agent into the verification process.
| Module | Description | Variant |
|---|---|---|
| Video Conference | Connects the user to a live agent over video and audio to conduct an identity verification interview. The agent can request that documents be shown on camera and complete any verifications needed to meet regulatory or business requirements. In Dashboard, this is the Video Conference module. | -vc build |
Configure the User Experience
| Module | Description | Variant |
|---|---|---|
| Custom Fields | Pauses a Workflow and hands control to your application, which runs custom logic and returns a result that determines how the Workflow continues. It does this by handing your app a callbackName, then resuming the Workflow at the next node once you report a result. In Dashboard, this is the Custom Module. |
All |
View Results
| Module | Description | Variant |
|---|---|---|
| Results | Shows a screen summarizing the data captured during onboarding, including OCR fields, captured images, and identity scores. It returns an overall user score. Add it after the modules that add or process the data it summarizes, such as ID Capture and Selfie. In Dashboard this is the Show Results module. | All |
Configure iOS-Specific Experiences
These modules have no Dashboard equivalent. They exist only in the iOS SDK.
| Module | Description | Variant |
|---|---|---|
| Approval | Finalizes an onboarding flow by deciding whether to approve the user, then registers approved users in the Incode database. Add it after the modules that add or process the data it summarizes, such as ID Capture and Selfie. | All |
| Captcha | Presents a CAPTCHA challenge during onboarding to verify human interaction and reduce automated abuse. It then returns the user's response to your app. In Dashboard, this feature can be enabled when adding the Email Input or Phone Number Input module. | All |
| Intro | Displays an introduction screen. It lists the documents and checks the user will need to complete. | All |
Additional Flow Steps
These public flow-builder steps exist for narrower use cases. They do not have a dedicated page yet; configure them with the matching flowConfig.addXxx(...) builder and read the result on the listed callback.
- Barcode:
addBarcodeScan(showTutorials:),onBarcodeScanCompleted(_:) - Credit card CCV:
addCreditCardCCV(),onCreditCardCCVCompleted(_:)
Helpers Used by Every Integration
These aren't modules, but every integration uses them to configure a session and receive results. See Integration Approaches for end-to-end usage and API Reference for the full surface.
| Helper | Purpose |
|---|---|
IncdOnboardingSessionConfiguration |
Configures the onboarding session: Flow or Workflow ID, validation modules, session token or external ID, and custom fields. |
IncdOnboardingFlowConfiguration |
Declares which modules run and in what order. Build it with the addXxx(...) methods shown on each individual module's page. |
IncdOnboardingDelegate |
The callback interface that delivers each module's result object and flow-level events. onSuccess() and onError(_:) are required. |
startOnboarding(...) / startFlow(...) / startWorkflow(...) |
Entry points on IncdOnboardingManager that launch a code-defined flow or a Dashboard-defined Flow or Workflow. |
Non-UI Capture
You can run selected capture steps without showing Incode's UI. For example, ID Capture exposes a public non-UI builder (addIdScanNonUI(...)) that captures and delivers results through the normal callbacks without presenting the standard screens.
For a broader integration that keeps your own UI while still capturing and processing through the SDK, see Capture-Only Mode.