profile, identity, proof-of-address, and customer-due-diligence. Any remaining required processes (e.g. enhancedDueDiligence, taxDetails) must still be completed via the REST API.
Prerequisites
- API client credentials with the scopes to create users and access the KYC Widget.
- The KYC Widget SDK is installed in your frontend. See Installation and setup.
Walkthrough
Retrieve terms of service
Before creating a user, retrieve the general Terms of Service applicable to their country of residence by calling the List terms of service endpoint withtype=general and the user’s country code.
Create the user
Once the user has accepted the Terms of Service, call Create user to register them on the platform.- US
- GB
Response
metadata field to store your own business data (e.g. external IDs or tracking parameters).
Subscribe to the core.user.created webhook to be notified asynchronously.
Create a session
Call Create kyc session to start theverify flow. Specify processes to limit which verification steps the user sees, or omit it to run all available processes. To customize the theme and layout, see the example here.
session object with a url field that loads the widget. Return response.session to your frontend as is.
The order of the
processes array does not affect the order the user sees. The Widget always presents the processes you requested in a fixed sequence: profile, identity, proof-of-address, then customer-due-diligence.Set up the Widget
Initialize the widget for theverify flow using the session data returned from the API.
Both examples above are for web applications — either creating the iframe yourself or letting the SDK do it. For native apps using a WebView, see Native apps with the Web SDK for the SDK’s native-bundling pattern, or Setup without the SDK for the no-SDK approach that loads the session
url directly as the WebView’s top-level page.Customer due diligence
Customer due diligence (CDD) collects the user’s financial profile — source of funds, purpose of the account, employment status — and produces a risk score. Unlikeidentity and proof-of-address, it is a form-based process: its fields vary by region, expected activity, and previous answers, and it is scored on submission rather than reviewed afterwards. Once the user completes the final step, the process returns ok straight away, with no in-review state to wait on. A high risk score instead triggers enhanced due diligence.
Periodic recollection
Customer due diligence expires. The process exposes anoutput.expiresAt deadline and reopens for recollection 60 days before that date, at which point its status returns to pending. The user stays approved and can keep transacting throughout that window.
To let the user resubmit, create a new session that includes customer-due-diligence and mount the Widget again. Poll Get KYC overview or watch the core.kyc.customer-due-diligence.status-changed webhook to know when recollection has opened.
Enhanced due diligence
If the resulting risk score categorizes the user as high risk, anenhancedDueDiligence process is triggered. The Widget does not cover enhanced due diligence — collect it via the REST API. Submit it only when prompted.
Monitor outcomes
Thecomplete event signals submission, not approval. identity and proof-of-address may come back settled or still under review, so read the status rather than assuming. customer-due-diligence is already settled when the Widget closes — see Customer due diligence in the Widget.
Subscribe to the relevant events for the processes you requested:
core.kyc.identity.status-changed— identity verification resultcore.kyc.proof-of-address.status-changed— proof of address resultcore.kyc.customer-due-diligence.status-changed— customer due diligence result, and reopening for recollection
enhancedDueDiligence process the submission triggered — the Widget cannot collect it.
You can also poll Get KYC overview (GET /core/kyc) at any time to check the current status of all KYC processes for a user.