The eKYC flow guides users through a multi-step manual verification journey: welcome, consent, personal details, document entry, review, and result screens. All data is entered via form fields (no camera capture). This flow is ideal when you need full control over each step and want to collect information through a traditional form-based experience.Modules used:form
Instead of building from scratch, fork an existing flow from the public sample codes.
Initial greeting and introduction to the verification process.
2
Consent Screen
Capture user consent for data processing and identity checks.
3
Personal Details
Collect name, date of birth, address, and other personal information.
4
Document Entry
Collect one or more identity document details (e.g., driver’s licence, passport).
5
Review
Display all entered information for the user to confirm before submission.
6
Result
Show verification outcome — success, fail, pending, or partial.
This flow requires a Google Places API key (googleApiKey) in the form provider configuration. The key powers the address autocomplete field in the PERSONAL form screen. Without it, the address search will not work. Get a key from the Google Cloud Console with the Places API enabled.
Pass the session object from your backend to OneSDK(). Include the form.provider recipe to enable React-rendered form components and optional Google Places address autocomplete.
Create form components using sdk.component("form", { name, type }). Each screen (WELCOME, CONSENT, PERSONAL, DOCUMENT, REVIEW, RESULT) is a separate component instance.
The review form with verify: true handles verification and shows result screens automatically. form:result:success, form:result:failed, form:result:pending, and form:result:partial fire when the user presses the CTA on the corresponding result screen. Use these events for post-flow actions (redirects, analytics, retry logic). If you need to intercept the result before a screen is shown, use customResult: true — see Form Screens for details.
To add fraud detection via device fingerprinting, initialize the device component before mounting the welcome screen:
const device = oneSdk.component("device", { activityType: "REGISTRATION",});device.start();// Then continue with the normal flow...welcome.mount(appContainer);
The device component runs in the background, collecting signals that the FrankieOne platform uses for fraud risk scoring. No additional UI is rendered.
The retry form remounts the review step, giving the user another chance to correct any issues. After the maximum number of attempts, the failure screen is shown.