Skip to main content
Vouchmark Onboarding lets you embed a full KYB verification flow into your own product. Your applicants complete the checks inside a hosted widget — you get a risk score and decision delivered via webhook.

How it works

1

Configure a widget

Pick which verification modules to run, set branding, configure risk thresholds, and define the flow order. Use a pre-built template (Fintech, Marketplace, Crypto, Lending) or start from scratch.
2

Integrate the SDK

Add the widget to your frontend with a single script tag or React/Flutter/RN component. See SDKs.
3

Applicant completes the flow

The widget guides the applicant through each module — collecting data, running live verifications, and uploading documents. Progress is saved automatically.
4

Risk engine decides

Once all modules complete, the risk engine computes a score. Based on your thresholds, the applicant is auto-approved, auto-rejected, or flagged for manual review.
5

You act on the decision

Read the applicant’s final statusapproved, rejected, or requires_review — via GET /v1/kyb/applicants/:applicantId, and update your system accordingly. You can also register a kyc_widget webhook endpoint for this app (see Webhooks).

Key concepts

Widgets

A widget is a named, versioned configuration for an onboarding flow. You can have multiple widgets — one for each use case (e.g. seller onboarding, lending KYB, exchange compliance).

Modules

Modules are the individual verification checks within a widget. Each module has:
  • An enabled flag (include in the flow or not)
  • A required flag (applicant cannot skip)
  • A cost (deducted from your wallet per execution)
See Pricing for per-module costs.

Applicants

An applicant is a single entity going through your widget. Each applicant session has:
  • A status lifecycle: createdin_progresssubmittedapproved/rejected/requires_review
  • A risk score (0–100)
  • A total cost (sum of all modules executed)

Risk tiers

Templates

Pre-configured starting points:

Security

  • Domain allowlisting — the widget only renders on approved origins.
  • Signed requests — optionally require your server to generate a signed session token before the widget opens.
  • IP allowlisting — restrict API-initiated sessions to specific IPs.
  • Session timeout — configurable inactivity timeout (default 60 minutes).

Where to go next

SDK integration

Install the widget in your frontend.

Widget API

Manage widgets programmatically.