SDK reference · iOS SDK

Results

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)
Email 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 through onVideoSelfieCompleted(_:) whenever captured video or audio data exists; if error is non-nil, the SDK additionally calls onError(_:) with IncdFlowError.videoSelfieNotCompleted(_:), wrapping that same VideoSelfieError. Cases include videoSelfieNotAuthorized, screenRecordingPermissionsDenied, recordingMicrophonePermissionsDenied, voiceConsentMicrophonePermissionsDenied, internalError(_:), and error(_:) (wrapping an IncdError).

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: FaceAuthenticationError is a dedicated face-authentication error enum, carried by the error field of FaceAuthenticationResult. Its cases include spoofAttemptDetected(_:), userIsNotRecognized(_:), faceMaskDetected(_:), deniedCameraPermissions, userCancelled, and error(_:) (wrapping an IncdError).

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).

Was this page helpful?