The SDK runs in one of three modes. The mode controls how and when captured data is sent to Incode. Choose the mode that matches your integration's network, privacy, and timing requirements.
| Mode | What It Does | When To Use It |
|---|---|---|
| Standard | Captures data and sends it to Incode in real time as the flow runs. | The default. Use when the device has connectivity and you want server-side validation as each step completes. |
| Capture-Only | Captures media on-device without sending it to Incode. You retain the captured data and submit it later from your own back end. | Use when capture and submission must be decoupled, or capture happens in an environment without a direct path to Incode. See Capture-Only Mode. |
| Delayed | Captures onboardings offline and syncs them to Incode when a connection is available. | Use when capture happens offline and validation can wait for connectivity. |
Standard Mode
Standard mode is the default. The SDK captures each module's data and sends it to Incode as the flow progresses. Server-side validation results are available in real time through the result callbacks. No additional configuration is required.
See Getting Started for the standard integration.
Capture-Only Mode
Capture-Only mode captures media on the device without sending it to Incode during the flow. Your back end submits the captured data separately. This mode uses a dedicated integration path.
See Capture-Only Mode for the full guide.
Delayed Mode
Delayed mode captures onboardings offline and syncs them to Incode when a connection is available. It currently supports the following modules: Combined Consent, Document Scan, Face Match, ID Scan, Process ID, and Selfie Scan.
Enable Delayed Mode
- Set Delayed mode using
setSdkMode(DELAYED):IncodeWelcome.getInstance().setSdkMode(SdkMode.DELAYED)IncodeWelcome.getInstance().setSdkMode(SdkMode.DELAYED); - Create a
SessionConfigandFlowConfigwith the supported modules for Delayed mode. Follow the steps for your integration pattern. - Call
startOnboarding(...):IncodeWelcome.getInstance().startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener)IncodeWelcome.getInstance().startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener);
Sync Delayed Onboardings
An active internet connection is required. Call the following to sync offline onboardings:
IncodeWelcome.getInstance().syncDelayedOnboardings(object : SyncDelayedOnboardingListener {
override fun onDelayedOnboardingSyncCompleted(delayedOnboardingSyncResult: DelayedOnboardingSyncResult) {
...
}
override fun onError(delayedOnboardingSyncError: DelayedOnboardingSyncError) {
...
}
override fun onCancelled() {
...
}
})
IncodeWelcome.getInstance().syncDelayedOnboardings(new SyncDelayedOnboardingListener() {
@Override
public void onDelayedOnboardingSyncCompleted(@NonNull DelayedOnboardingSyncResult delayedOnboardingSyncResult) {
...
}
@Override
public void onError(@NonNull DelayedOnboardingSyncError delayedOnboardingSyncError) {
...
}
@Override
public void onCancelled() {
...
}
});