This is the first screen and will always default to show as the first screen. It displays a welcome message and a summary of the stages you have configured for the client.
The welcome screen allows you to set a custom title.
let welcomeStage =WelcomeStageBuilder() .setTitle(title:"Custom Screen Title") .setMessage(message:"Custom welcome message.") .build()
const settings = {// ... other settings stages: [ { name: "faceCapture", mode: "photo",// Enable ML assistance during capture useMLAssistance: false, },// ... other stages ],};
final settings = {// ... other settings"stages": [ {"name":"faceCapture","mode":"photo",// Enable ML assistance during capture"useMLAssistance":false, },// ... other stages ],};
constsettings= {// ... other settings stages: [ { name:"faceCapture", mode:"photo",// Enable ML assistance during capture useMLAssistance:false, },// ... other stages ],};
Video - will take a video of the client and request them to perform a challenge before allowing them to submit.
let videoStage =BiometricStageBuilder() .setType(type: .video)// Enable ML assistance during capture .setEnableMLAssistant(enable:false) .build()
// Kotlinvar selfieVideo =SelfieVideo(// Enable ML assistance during capture isMLAssistantEnabled =false)
constsettings= {// ... other settings stages: [ { name:"faceCapture", mode:"video",// Enable ML assistance during capture useMLAssistance:false, },// ... other stages ],};
final settings = {// ... other settings"stages": [ {"name":"faceCapture","mode":"video",// Enable ML assistance during capture"useMLAssistance":false, },// ... other stages ],};
constsettings= {// ... other settings stages: [ { name:"faceCapture", mode:"video",// Enable ML assistance during capture useMLAssistance:false, },// ... other stages ],};
If you attempt to add both types of stages, the SDK will throw a ComplyCubeErrorCode.BiometricStageCount error stating multiple conflicting stages.
Document
This stage allows clients to select the type of identity document they would like to submit. You can customize these screens to:
Limit the scope of document types the client can select, e.g., Passport only.
Set the document issuing countries they are allowed for each document type.
Add or remove automated capture using smart assistance.
Show or hide the instruction screens before capture.
Set a retry limit to allow clients to progress the journey regardless of capture quality.
If you provide only one document type, the document type selection screen will be skipped. The country selection screen will be skipped if you provide only a single country for a given document type.
You can remove the information screens shown before camera captures by enabling or disabling guidance. You should only consider omitting this if you have clearly informed your client of the capture steps required.
let docStage =DocumentStageBuilder()// Set document types and limit the enabled countries .setAllowedDocumentTypes(types: [ .passport, .drivingLicence(["GB", "US"]), .nationalIdentityCard(), ])// Set a maximum for quality check attempts before uploading .setRetryLimit(count:3)// Enable or disable additional guidance for the user .setShowGuidance(enable:true)// Enable ML assistance during capture .setEnableMLAssistant(enable:true) .build()
// Kotlinvar documentStage =Document(// Set document types and limit the enabled countriesPassport(), DrivingLicence((Country.GB, Country.US)),// Enable or disable additional guidance for the user isGuidanceEnabled =true,// Enable or disable the ability to upload an image from file useLiveCaptureOnly =true,// Enable ML assistance during capture isMLAssistantEnabled =true,// Set a maximum for quality check attempts before uploadingoft checks retryLimit =3)
constsettings= {// ... other settings stages: [ { name:"documentCapture",// Enable or disable additional guidance for the user showGuidance:false,// Enable ML assistance during capture useMLAssistance:true,// Set a maximum for quality check attempts before uploading retryLimit:1,// Enable or disable the ability to upload an image from file liveCapture:false,// Set document types and limit the enabled countries documentTypes: { passport:true, driving_license: ["GB","US"], }, },// ... other stages ],};
final settings = {// ... other settings"stages": [ {"name":"documentCapture",// Enable or disable additional guidance for the user"showGuidance":false,// Enable ML assistance during capture"useMLAssistance":true,// Set a maximum for quality check attempts before uploading"retryLimit":1,// Enable or disable the ability to upload an image from file"liveCapture":false,// Set document types and limit the enabled countries"documentTypes": {"passport":true,"driving_license": ['GB', 'US'], }, },// ... other stages ],};
constsettings= {// ... other settings stages: [ { name:"documentCapture",// Enable or disable additional guidance for the user showGuidance:false,// Enable ML assistance during capture useMLAssistance:true,// Set a maximum for quality check attempts before uploading retryLimit:1,// Enable or disable the ability to upload an image from file liveCapture:false,// Set document types and limit the enabled countries documentTypes: { passport:true, driving_license: ["GB","US"], }, },// ... other stages ],};
Please note the retryLimit you set here will take precedence over the retry limit that has been set globally in your automation settings.
NFC capture
Please get in touch with your Account Manager or support to get access to our NFC-enabled Mobile SDK.
ComplyCube's Mobile SDK enables NFC-based RFID chip reading in identity documents for accurate authentication and data extraction.
Pre-requisites
To use this feature, your app must have the Near Field Communication Tag Reading capability enabled. To add this capability to your app, refer to Apple's guide here.
CocoaPods
Install the CocoaPods Artifactory plugin by running the following command in your terminal:
geminstallcocoapods-art
To add the library, copy your repository credentials into a .netrc file to your home directory and setup the repository:
constsettings= {// ... other settings stages : [ { name:'documentCapture',// Add this property to enable NFC nfcCapture:true... },// ... other stages ]}
final settings = {// ... other settings"stages": [ {"name":"documentCapture",// Add this property to enable NFC"nfcCapture":true ... },// ... other stages ]}
constsettings= {// ... other settings stages : [ { name:'documentCapture',// Add this property to enable NFC nfcCapture:true... },// ... other stages ]}
Address capture
This stage allows clients to input their address. You can set the permitted countries and whether to enable our address autocomplete screen.
let addressCaptureStage =AddressCaptureStageBuilder()// This enables our address autocomplete feature .useAutoComplete(enable:false)// A list of acceptable countries for address capture feature .setAllowedCountries(["GB", "US"]) .build()
//Kotlinvar addressCaptureStage =AddressCapture(// This enables our address autocomplete useAutoComplete =true,// A list of acceptable countries for address capture feature allowedCountries =setOf(Country.GB,Country.US))
// JavaSet<Country> countries =newHashSet<> ();countries.add(Country.GB);countries.add(Country.US);AddressCapture addressCapture =newAddressCapture(// useAutoCompletetrue,// allowedCountries countries);
constsettings= {// ... other settings stages: [ { name:"addressCapture",// This enables our address autocomplete feature useAutoComplete:false,// A list of acceptable countries for address capture allowedCountries: ['GB','US'] },// ... other stages ],};
final settings = {// ... other settings stages: [ {"name":"addressCapture",// This enables our address autocomplete feature"useAutoComplete":false,// A list of acceptable countries for address capture"allowedCountries": ['GB','US'] },// ... other stages ],};
constsettings= {// ... other settings stages: [ { name:"addressCapture",// This enables our address autocomplete feature useAutoComplete:false,// A list of acceptable countries for address capture allowedCountries: ["GB","US"] },// ... other stages ],};
Proof of address
When requesting a proof of address document, you can set the allowed document types and whether the client can upload the document.
By default, this automatically incorporates the Address capture stage with autocomplete enabled. This option can be turned off.
let poaStage =AddressStageBuilder() .setAllowedDocumentTypes(types: [ .utilityBill, .bankStatement ])// When disabled, the client will be forced to perform a live capture .useLiveCaptureOnly(enable:false)// This enables address capture during the proof of address flow .setEnableAddressCapture(true) .build()
//Kotlinvar poaStage =ProofOfAddress(// A list of supported document types that can be submittedUtilityBill(), BankStatement(),// When disabled, the client will be forced to perform a live capture useLiveCaptureOnly =false,// This enables address capture during the proof of address flow isAddressCaptureEnabled =false...)
constsettings= {// ... other settings stages: [ { name:"poaCapture",// When disabled, the client will be forced to perform a live capture liveCapture:false, },// ... other stages ],};
final settings = {// ... other settings stages: [ {"name":"poaCapture",// When disabled, the client will be forced to perform a live capture"liveCapture":false, },// ... other stages ],};
constsettings= {// ... other settings stages: [ { name:"poaCapture",// When disabled, the client will be forced to perform a live capture liveCapture:false, },// ... other stages ],};
Completion
You can add an optional completion stage at the end of the process and let the client know the process has been completed.
var completionStage =Complete( title: "Thank you!", message: "Your KYC submission has been completed")
// Kotlinval completionStage =Complete( title ="Thank you!", message ="Your KYC submission has been completed")
constsettings= {// ... other settings stages: [ { name:"complete", heading:"Thank you!", message:"Your KYC submission has been completed.", },// ... other stages ],};
final settings = {// ... other settings"stages": [ {"name":"complete","heading":"Thank you!","message":"Your KYC submission has been completed.", },// ... other stages ],};
constsettings= {// ... other settings stages: [ { name:"complete", heading:"Thank you!", message:"Your KYC submission has been completed.", },// ... other stages ],};