SDK reference · Android SDK / Android Individual Modules

Modules

The Incode Android SDK is composed of single-purpose modules. You assemble an onboarding flow by adding modules to a FlowConfig.Builder, passing it to startOnboarding(), and receiving each module's output through your OnboardingListener. This page lists each module by category.

Info

Terminology

"Module" here refers to an onboarding step, such as ID Scan or Video Selfie. You add them at runtime with FlowConfig.Builder.add*().

This is different from the Gradle packaging modules, like welcome, nfc, and video-streaming, that you declare as dependencies during installation. The Dependency column below tells you which packaging module each Incode SDK module needs. Anything marked welcome is included with the core SDK.

Each module is configured through its Builder and returns a result object through a dedicated callback on the listener. The linked guides cover detailed configuration for the most common modules. See API Reference for the full option set and result fields.

Danger

Warning

Most flows require the ID Scan and Selfie Scan modules. Omitting either one fails FlowConfig.Builder.build() with a ModuleConfigurationException.

Some modules require other modules to come before them. Omitting these fails FlowConfig.Builder.build() with an InvalidModuleOrderException.

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. No pass/fail determination is made; these modules receive and record.

Module Description Dependency
Document Scan 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. welcome
Dynamic Forms Presents one or more custom form screens to collect information from a user. In Dashboard, this is the Forms and Data Entry module. welcome
Email 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. welcome
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. Also available as a non-UI method, so you can call it without showing Incode's UI. In Dashboard, this is the Geolocation module. welcome
ID Info 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 Scan. In Dashboard, this is Review OCR Data module. welcome
ID Scan Captures the front and back of a government-issued ID, with auto-capture and quality checks, and produces clean images for processing. Supports a non-UI builder, so you can capture without showing Incode's UI. Most flows must include this module. Add it before Process ID. In Dashboard, this is the ID Capture module. welcome;
video-streaming for frame streaming;
Name Collects the user's name and sends it to the server. welcome
NFC Scan Reads the secure NFC chip embedded in ICAO 9303-compliant travel documents, such as e-passports. It then returns the document holder's data, including the chip's portrait image. Add it after the ID Scan and Process ID modules. When a flow captures multiple IDs, NFC Scan applies only to the first ID. In Dashboard, this is the NFC Scan module. nfc
Phone Collects a user's phone number and can confirm phone ownership by sending a one-time password (OTP) via SMS. In Dashboard, this is the Phone Number Input module. welcome
QR Scan Captures the QR code on the back of an ID, decodes its identity data, and sends it to the server. welcome
Selfie Scan Captures the user's face with their device's 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. It can also log in returning users using 1:1 or 1:N face authentication. Most flows must include this module. In Dashboard, this is the Face Capture module. welcome;
video-streaming for frame and audio streaming;
module-liveness-detection, model-age-estimation, and model-face-occlusion for on-device results
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 Scan. In Dashboard, this is the Video Selfie module. welcome;
model-face-recognition when voice consent is enabled

Verify and Authenticate

These modules run checks against collected data to produce a pass/fail or match/no-match determination.

Module Description Dependency
Antifraud Compares the current Session against prior Sessions and known identities to detect signs of fraud. In Dashboard, this is the Antifraud Check module. welcome
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. It accepts a CURP extracted via OCR, entered manually, or generated from personal data when the user doesn't know it. In Dashboard, this is the CURP Validation module. welcome
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. It runs as a background process and isn't visible to the end user. In Dashboard, this is the Custom Watchlist module. welcome
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. welcome
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. welcome
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. welcome;
module-liveness-detection;
model-face-recognition for on-device results
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 confidence score. Add it after Selfie Scan and at least one of the following: ID Scan, NFC Scan, or QR Scan. Also available as a non-UI method, so you can call it without showing Incode's UI. In Dashboard, this is the Face Match module. welcome
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. welcome
Government Validation Validates identity data extracted from a user's ID against an authoritative government registry. The process runs in the background and isn't visible to the user. It can also match the user's photo in the government database against their captured selfie. Add it after Selfie Scan and at least one of the following: ID Scan, NFC Scan, or QR Scan. In Dashboard, this is the Government Data Verification and Government Record Verification modules. welcome
Process ID Determines whether a submitted identity document is authentic. It analyzes the images captured by the ID Scan module against known parameters for the document type, runs a set of authenticity checks, and produces a validation result. Add it before ID Info and after ID Scan. Also available as a non-UI method, so you can call it without showing Incode's UI. In Dashboard, this is the ID Validation module. welcome
Tax ID Validation Collects a user's tax identification number and validates its format and structure. welcome

These modules capture legally binding signatures and record user consent.

Module Description Dependency
AES (Advanced Electronic Signature) Shows the user 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. welcome
Combined Consent Shows the user one or more preconfigured consents 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. This module supports offline mode for delayed consent. In Dashboard, this is the Data Sharing Consent module. welcome
Machine Learning Consent Captures the user's consent to process their biometric data for machine-learning purposes. It records their response on the server. You choose the consent text variant (US or GDPR style) that matches your compliance needs. welcome
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. welcome
Signature Captures a signature the user hand-draws on screen. It is typically placed at the end of a verification journey to capture explicit consent. In Dashboard, this is the Electronic Signature module. welcome
User Consent Shows a custom consent agreement for the user to review and accept. welcome

Add Human-Assisted Verification

These modules introduce a live agent into the IDV process.

Module Description Dependency
Conference (Assisted Video) Connects the user with 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. video-streaming

Configure the User Experience

These modules shape the user experience of a Workflow or Flow, including routing decisions. They do not collect or verify data.

Module Description Dependency
Custom Module 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. welcome

View Results

Module Description Dependency
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 Scan and Selfie Scan. Also available as a non-UI method, so you can call it without showing Incode's UI. In Dashboard, this is the Show Results module. welcome

Configure Android-Specific Experiences

These modules have no Dashboard equivalent. They exist only in the Android SDK.

Module Description Dependency
Accept Video Selfie Presents a consent screen that asks the user to agree to having a video selfie recorded later in the flow. It signals once the user accepts. This module is in beta. Add it before Video Selfie. welcome
Approval Finalizes an onboarding flow by deciding whether to approve the user, then registers approved users in the Incode database. By default, it runs with no UI and approves silently, but you can toggle the UI, silent face match, and forced approval. Add it after the modules that add or process the data it summarizes, such as ID Scan and Selfie Scan. welcome
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. welcome
Intro Displays an introduction screen. It lists the documents and checks the user will need to complete. welcome

Helpers Used by Every Integration

These aren't modules, but every integration uses them to configure a session and receive results. See Configure Flows Locally and Run End to End for end-to-end usage and API Reference for the full surface.

Helper Purpose
SessionConfig Configures the onboarding session: Flow or Workflow ID, validation modules, external token or ID, and custom fields.
FlowConfig Declares which modules run and in what order. Build it with FlowConfig.Builder and the add*() methods shown on each individual module's page.
CommonConfig Cross-cutting UI options that apply to the whole flow, such as the close button and exit confirmation.
OnboardingListener The callback interface that delivers each module's result object and flow-level events.
startOnboarding() / startWorkflow() Entry points on IncodeWelcome that launch a flow from a FlowConfig or a Dashboard-defined Workflow.
deleteUserLocalData() Clears the captured session data from the device. Call it after you're done with a session.

Non-UI APIs

You can use a specific set of modules without showing Incode's UI. These modules deliver results through specific callbacks. You don't need to add them to the flow or section configuration.

IncodeWelcome.getInstance().faceMatch(interviewId: String?, idCategory: IdCategory?, faceMatchListener: FaceMatchListener)
IncodeWelcome.getInstance().faceMatch(interviewId: String?, matchType: FaceMatch.MatchType?, idCategory: IdCategory?, faceMatchListener: FaceMatchListener)
IncodeWelcome.getInstance().geolocation(context: Context, interviewId: String?, geolocationListener: GeolocationListener)
IncodeWelcome.getInstance().processId(interviewId: String?, idCategory: IdCategory?, idProcessListener: IdProcessListener)
IncodeWelcome.getInstance().processLaborHistory(interviewId: String?, curp: String, laborHistoryListener: ProcessLaborHistoryListener)
IncodeWelcome.getInstance().processPaymentProof(interviewId: String?, processPaymentProofListener: ProcessPaymentProofListener)
IncodeWelcome.getInstance().getPaymentProofInfo(interviewId: String?, getPaymentProofInfoListener: PaymentProofInfoListener)
IncodeWelcome.getInstance().getUserScore(idResultsFetchMode: IDResultsFetchMode, interviewId: String?, getUserScoreListener: GetUserScoreListener)
IncodeWelcome.getInstance().faceMatch(@Nullable String interviewId, @Nullable IdCategory idCategory, @NonNull FaceMatchListener faceMatchListener)
IncodeWelcome.getInstance().faceMatch(@Nullable String interviewId, @Nullable FaceMatch.MatchType matchType, @Nullable IdCategory idCategory, @NonNull FaceMatchListener faceMatchListener)
IncodeWelcome.getInstance().geolocation(@NonNull Context context, @Nullable String interviewId, @NonNull GeolocationListener geolocationListener)
IncodeWelcome.getInstance().processId(@Nullable String interviewId, @Nullable IdCategory idCategory, @NonNull IdProcessListener idProcessListener)
IncodeWelcome.getInstance().processLaborHistory(@Nullable String interviewId, @NonNull String curp, @NonNull ProcessLaborHistoryListener laborHistoryListener)
IncodeWelcome.getInstance().processPaymentProof(@Nullable String interviewId, @NonNull ProcessPaymentProofListener processPaymentProofListener)
IncodeWelcome.getInstance().getPaymentProofInfo(@Nullable String interviewId, @NonNull PaymentProofInfoListener getPaymentProofInfoListener)
IncodeWelcome.getInstance().getUserScore(@NonNull IDResultsFetchMode idResultsFetchMode, @Nullable String interviewId, @NonNull GetUserScoreListener getUserScoreListener)

Info

Non-UP APIs vs. Capture-Only Mode

Non-UI APIs skip the UI but still send data to Incode for processing, while Capture-Only mode keeps the UI but skips sending data to Incode.

For full method signatures, see API Reference. For result and error objects, see Results.

Was this page helpful?