All the modules supported by the SDK are listed here, with their configuration parameters.

Every entry in `flowConfig` includes:

- `module` (required): string. The module name.
- `enabled` (optional, defaults to `true`): boolean. Explicitly include or skip the module in the flow.

For completion payloads, update events, and module error examples, see [Results](https://developer.incode.com/docs/react-native-results).

### Phone

Ask the user to enter a phone number.

- `otpVerification` (optional, defaults to `false`): boolean. Ask for OTP verification.

### DocumentScan

Ask the user to capture a document.

- `showTutorial` (optional, defaults to `false`): boolean. Show the document scan tutorial. Only on iOS.
- `showDocumentProviderScreen` (optional, defaults to `true`): boolean. Specify `true` to show the document provider screen, or `false` to go directly to capture.
- `type` (optional, defaults to `addressStatement`): `addressStatement`, `paymentProof`, `medicalDoc`, `otherDocument1`, `otherDocument2`, or `otherDocument3`.

### Geolocation

Get information about the user's current location.

- `isSkippable` (optional, defaults to `false`): boolean. Allows the geolocation step to be skipped. When set to `true`, skipping or denying location permission advances the flow instead of ending the session with a permission error.

### UserConsent

Ask the user for consent.

- `title` (required): string. Title shown on the consent screen.
- `content` (required): string. Content shown on the consent screen.

### CombinedConsent

Ask the user for data-sharing consent.

- `consentId` (required): string. ID for the combined consent configured in the dashboard.

### Signature

Ask the user to draw a signature.

- `title` (optional): string. Optional title shown at the top of the screen.
- `description` (optional): string. Optional description shown below the title.
- `descriptionMaxLines` (optional): number. Maximum number of description text lines.

This module enables user to add a digital signature by signing on a canvas.

Besides specifying `title` and `description` keys, it is needed to provide texts for Android and iOS in their `res/values/strings.xml` and `Localizable.strings` files.

```javascript
{
  module: 'Signature',
  title: 'onboard_sdk_signature_title',
  description: 'onboard_sdk_signature_description',
  descriptionMaxLines: 2
}
```

For Android:

```undefined
<string name="onboard_sdk_signature_title">Example title</string>
<string name="onboard_sdk_signature_description">Description example</string>
```

For iOS:

```undefined
"onboard_sdk_signature_title" = "Example title";
"onboard_sdk_signature_description" = "Description example";
```

### VideoSelfie

Record a video selfie flow. Available only for Android API level 21+.

- `showTutorial` (optional, defaults to `true`): boolean. Show the video selfie tutorial.
- `selfieScanMode` (optional, defaults to `selfieMatch`): `selfieMatch` or `faceMatch`. Specify whether to compare the selfie directly or compare with the photo from the ID.
- `selfieLivenessCheck` (optional, defaults to `false`): boolean. Check user liveness during video selfie.
- `showIdScan` (optional, defaults to `true`): boolean. Ask for ID scan during video selfie.
- `showVoiceConsent` (optional, defaults to `true`): boolean. Ask for voice consent during video selfie.
- `cameraFacingConfig` (optional): `CameraFacingConfig`. Set the camera for each step using `selfieCameraFacing`, `idFrontCameraFacing`, `idBackCameraFacing`, `documentScanCameraFacing`, `randomQuestionsCameraFacing`, and `voiceConsentCameraFacing`; each value is `front` or `back`.
- `questions` (optional): `VideoSelfieQuestion[]`. List of `{ question: string; answer: string }` entries to show in capture-only/random-question mode.

### IdScan

Ask the user to capture ID or passport.

- `showTutorial` (optional, defaults to `true`): boolean. Show the ID scan tutorial.
- `idType` (optional): `id` or `passport`. If omitted, the SDK can show a chooser to the user.
- `showIdTypeChooser` (optional, defaults to `true`): boolean. Specify `false` to skip the document chooser screen.
- `idCategory` (optional, defaults to `primary`): `primary` or `secondary`.

### IdScanFront

Ask the user to capture only the front side of an ID.

- `showTutorial` (optional, defaults to `true`): boolean. Show the ID scan tutorial.
- `idType` (optional): `id` or `passport`.

### IdScanBack

Ask the user to capture only the back side of an ID.

- `showTutorial` (optional, defaults to `true`): boolean. Show the ID scan tutorial.
- `idCategory` (optional, defaults to `primary`): `primary` or `secondary`.

### ProcessId

Process the ID after separated front and back captures.

- `idCategory` (optional, defaults to `primary`): `primary` or `secondary`. Applied on Android.

### Conference

Start a video conference call.

- `disableMicOnStart`: boolean. Disable the microphone when the call starts.

### SelfieScan

Ask the user to capture a selfie.

- `showTutorial` (optional, defaults to `true`): boolean. Show the selfie scan tutorial.
- `cameraFacing` (optional, defaults to `front`): `front` or `back`. Camera used during selfie capture.

### FaceMatch

Perform a face match between the captured ID/passport and Selfie or NFC data.

- `idCategory` (optional, defaults to `primary`): `primary` or `secondary`.

### QrScan

Ask the user to scan a QR code.

- No additional parameters

### Captcha

Ask the user to enter the OTP generated for the current session.

- No additional parameters

### Email

Ask the user to enter an email.

- `otpVerification` (optional, defaults to `false`): boolean. Ask for OTP verification.

### Approve

Approve the current onboarding session and add the user to the Omni database.

- `forceApproval` (optional, defaults to `false`): boolean. Force approval when set to `true`.

### UserScore

Show the info and scoring for all performed steps.

- `mode` (optional, defaults to `accurate`): `accurate` or `fast`. `accurate` fetches server-side results and can take longer; `fast` shows results based on on-device processing.

### MLConsent

Ask the user for Machine Learning consent.

- `type` (required): `gdpr` or `us`.

### GovernmentValidation

Perform government validation of the ID.

- `isBackgroundExecuted` (optional, defaults to `false`): boolean. Run the module without showing its UI.

### Antifraud

Compare the current interview with existing interviews and customers to detect possible fraud.

- No additional parameters

### GlobalWatchlist

Check customer identities against sanctions, PEP, and watchlist sources.

- No additional parameters

### CustomWatchlist

Check whether the user is present in an Incode Dashboard custom watchlist.

- No additional parameters

### Aes

Enable advanced electronic signature document handling.

- `uploadDocument` (optional, defaults to `false`): boolean. Upload the signed document.
- `downloadDocument` (optional, defaults to `false`): boolean. Download the signed document.

### Name

Ask the user to enter a name.

- No additional parameters

### CURP

Validate the user's CURP from the ID.

- `validationEnabled` (optional, defaults to `true`): boolean. Validate the CURP on the server.

### OCREdit

Review OCR data.

- `isEditable` (optional, defaults to `false`): boolean. Allow the user to edit OCR data.

### eKYB

Run KYB validation with business information.

- `checkBusinessName` (optional, defaults to `false`): boolean. Validate business name.
- `checkAddress` (optional, defaults to `false`): boolean. Validate address.
- `checkTaxId` (optional, defaults to `false`): boolean. Validate tax ID.

### eKYC

Run KYC validation with user information.

- `checkName` (optional, defaults to `false`): boolean. Validate name.
- `checkEmail` (optional, defaults to `false`): boolean. Validate email.
- `checkAddress` (optional, defaults to `false`): boolean. Validate address.
- `checkPhone` (optional, defaults to `false`): boolean. Validate phone.
- `checkSsn` (optional, defaults to `false`): boolean. Validate SSN.
- `checkDob` (optional, defaults to `false`): boolean. Validate date of birth.
- `checkNationality` (optional, defaults to `false`): boolean. Validate nationality.

### NFCScan

Ask the user to scan the NFC chip on their document.

- `idType` (optional): `id` or `passport`. ID type used for NFC scanning. If omitted, the SDK reuses the ID type from ID scan when available; otherwise, it can show a chooser.
- `processNFCData` (optional, defaults to `true`): boolean. Use data read from the NFC chip to validate identity.

### FaceAuthentication

Authenticate an existing user with face recognition.

- `showTutorials` (optional, defaults to `true`): boolean. Show the tutorial before face authentication.
- `autoCaptureTimeout` (optional, defaults to `16`): number. Timeout in seconds for automatic face capture.
- `captureAttempts` (optional, defaults to `3`): number. Number of allowed face capture attempts before failing the step.
