Every module in an onboarding flow reports its outcome to your IncdOnboardingDelegate. Most modules deliver a result object through a dedicated callback. A few modules signal completion without a result object: for example, Video Conference reports a success Bool and an optional error.
This page lists every result and error object. The groups match the categories on Modules. For the full field list of a result type, see its module page.
The flow's terminal callbacks are onSuccess() when the flow finishes, userCancelledSession() when the user cancels, and onError(_:) when it fails.
Result Delivery
Results arrive on the module's success callback, such as onIdProcessed(_ result: IdProcessResult). IncdOnboardingDelegate declares all of these result callbacks. The SDK also defines narrower delegate protocols for specific scenarios:
IDCaptureControllerDelegate: Real-time callbacks while capturing an ID.IncdLoginDelegate: Face-login sync progress.IncdOnboardingVideoConferenceDelegate: Assisted-video-conference callbacks.
The iOS SDK has no single shared status type. Each result struct carries its own fields describing the module's outcome. For example, GovernmentValidationResult exposes success: Bool and error: IncdError?, while IdScanResult exposes scanStatus: IncdIdScanStatus (an enum with cases such as ok, errorGlare, and errorSharpness). See each individual module's page.
A few modules do not return a result object. They signal completion with a callback that carries only a status: for example, onVideoConferenceCompleted(_ success: Bool, _ error: VideoConferenceError?).
Error Delivery
Errors surface on the shared onError(_ error: IncdFlowError) path. IncdFlowError is a single enum with cases such as initError(_:), error(_:) (wrapping an IncdError), sessionCreationFailed(_:), permissionsDenied, declinedToSignDocument, captchaNotVerified(_:), videoSelfieNotCompleted(_:), sectionAlreadyRunning(_:), watchlistProcessFailed(_:), and interrupted.
Flow-level failures are reported through IncdFlowError on onError(_:). In addition, several modules define their own error enum, carried by the error field of that module's result object: for example, VideoSelfieResult.error (VideoSelfieError), IdScanResult.error (IncdIdScanError), and FaceAuthenticationResult.error (FaceAuthenticationError). When a result object has such an error field, it carries that module's specific failure cause for the step.
Collect Identity Data
| Module | Result Object | Delivered Via |
|---|---|---|
| Document Capture | DocumentScanResult |
onDocumentScanCompleted(_ result: DocumentScanResult) |
| Dynamic Forms | DynamicFormsResult |
onDynamicFormCompleted(_ result: DynamicFormsResult) |
EmailAddressResult |
onAddEmailAddressCompleted(_ result: EmailAddressResult) |
|
| Full Name | UserNameInfoResult |
onAddFullNameCompleted(_ result: UserNameInfoResult) |
| Geolocation | GeolocationResult |
onGeolocationCompleted(_ result: GeolocationResult) |
| ID Capture | IdScanResult |
onIdFrontCompleted(_ result: IdScanResult)onIdFrontAttemptCompleted(_ result: IdScanResult)onIdBackCompleted(_ result: IdScanResult)onIdBackAttemptCompleted(_ result: IdScanResult) |
| ID OCR | OcrResult |
onOcrCompleted() |
| NFC | NFCScanResult |
onNFCScanCompleted(_ result: NFCScanResult) |
| Phone | PhoneNumberResult |
onAddPhoneNumberCompleted(_ result: PhoneNumberResult) |
| QR Scan | QRScanResult |
onQRScanCompleted(_ result: QRScanResult) |
| Selfie | SelfieScanResult |
onSelfieScanCompleted(_ result: SelfieScanResult)onSelfieAttemptCompleted(_ result: SelfieScanResult) |
| Video Selfie | VideoSelfieResult |
onVideoSelfieCompleted(_ result: VideoSelfieResult) |
Module-Specific Errors
Unless noted below, a module's errors surface on the shared onError(_:) path.
- Video Selfie: Unlike most modules, a Video Selfie failure ends the flow.
VideoSelfieResult.error(VideoSelfieError) is delivered throughonVideoSelfieCompleted(_:)whenever captured video or audio data exists; iferroris non-nil, the SDK additionally callsonError(_:)withIncdFlowError.videoSelfieNotCompleted(_:), wrapping that sameVideoSelfieError. Cases includevideoSelfieNotAuthorized,screenRecordingPermissionsDenied,recordingMicrophonePermissionsDenied,voiceConsentMicrophonePermissionsDenied,internalError(_:), anderror(_:)(wrapping anIncdError).
Verify and Authenticate
| Module | Result Object | Delivered Via |
|---|---|---|
| Antifraud | AntifraudResult |
onAntifraudCompleted(_ result: AntifraudResult) |
| CURP Validation | CURPValidationResult |
onCURPValidationCompleted(_ result: CURPValidationResult) |
| Custom Watchlist | CustomWatchlistResult |
onCustomWatchlistCompleted(_ result: CustomWatchlistResult) |
| eKYB (electronic Know-Your-Business) | EkybResult |
onExternalValidationEkybCompleted(_ result: EkybResult) |
| eKYC (electronic Know-Your-Customer) | EKYCResult |
onEKYCCompleted(_ result: EKYCResult) |
| Face Authentication | FaceAuthenticationResult |
onFaceAuthenticationCompleted(_ result: FaceAuthenticationResult) |
| Face Match | FaceMatchResult |
onFaceMatchCompleted(_ result: FaceMatchResult) |
| Global Watchlist | GlobalWatchlistModuleResult |
onGlobalWatchlistCompleted(_ result: GlobalWatchlistModuleResult) |
| Government Validation | GovernmentValidationResult |
onGovernmentValidationCompleted(_ result: GovernmentValidationResult) |
| Process ID | IdProcessResult |
onIdProcessed(_ result: IdProcessResult) |
Module-Specific Errors
Unless noted below, a module's errors surface on the shared onError(_:) path.
- Face Authentication:
FaceAuthenticationErroris a dedicated face-authentication error enum, carried by theerrorfield ofFaceAuthenticationResult. Its cases includespoofAttemptDetected(_:),userIsNotRecognized(_:),faceMaskDetected(_:),deniedCameraPermissions,userCancelled, anderror(_:)(wrapping anIncdError).
Capture Signatures and Consent
These modules' errors surface on the shared onError(_:) path.
| Module | Result Object | Delivered Via |
|---|---|---|
| AES (Advanced Electronic Signature) | AESResult |
onAESCompleted(result: AESResult) |
| Combined Consent | CombinedConsentResult |
onCombinedConsentsGiven(_ result: CombinedConsentResult) |
| Machine Learning Consent | MachineLearningConsentResult |
onMachineLearningConsentCompleted(_ result: MachineLearningConsentResult) |
| QES (Qualified Electronic Signature) | QESResult |
onQESCompleted(result: QESResult) |
| Signature | SignatureFormResult |
onSignatureCollected(_ result: SignatureFormResult) |
| User Consent | UserConsentResult |
onUserConsentGiven(_ result: UserConsentResult) |
Add Human-Assisted Verification
This module's errors surface on the shared onError(_:) path.
| Module | Result Object | Delivered Via |
|---|---|---|
| Video Conference | No result payload. | onVideoConferenceCompleted(_ success: Bool, _ error: VideoConferenceError?). Queue updates arrive through onQueuePositionChanged(_ newQueuePosition: Int) and onEstimatedWaitingTime(_ waitingTimeInSeconds: Int). |
Configure the User Experience
This module's errors surface on the shared onError(_:) path.
| Module | Result Object | Delivered Via |
|---|---|---|
| Custom Module | No result payload. | onCustomModuleStarted(callbackName: String, onCustomModuleCompleted: @escaping (CustomModuleStatus) -> Void). You return a CustomModuleStatus: ok, fail, warn, or unknown. Completion is also reported through onCustomModuleCompleted(_ result: IncdError?). |
View Results
This module's errors surface on the shared onError(_:) path.
| Module | Result Object | Delivered Via |
|---|---|---|
| Results | UserScore |
onUserScoreFetched(_ result: UserScore) |
Configure iOS-Specific Experiences
| Module | Result Object | Delivered Via |
|---|---|---|
| Approval | ApprovalResult |
onApproveCompleted(_ result: ApprovalResult) |
| Captcha | CaptchaResult |
onCaptchaCompleted(_ result: CaptchaResult) |
| Intro | No result payload. | On success, the flow advances to the next module with no callback. If the user dismisses the step, userCancelledSession() is called; any other failure surfaces through onError(_ error: IncdFlowError). |