KYC · client verification

A real person, a genuine document, clean sanctions lists

We read the document, match the MRZ against the front side, check liveness with a random challenge and compare faces. Then we screen against OFAC, UN, EU and UK sanctions lists.

liveness1 / 5
Turn your head left
leftrightblink
checks
Document recognized
MRZ matches
Liveness
Face matches
Sanctions lists
No duplicates
verifying…

Check digits give forgeries away

Passport, ID card, driver's license or proof of address. We read the fields, compute MRZ check digits per ICAO 9303 and compare them with what's printed on the front side.

Surname
[SURNAME]
Given name
[GIVEN NAME]
Date of birth
[DATE OF BIRTH]
Number
[NUMBER]
Nationality
[NATIONALITY]
Valid until
[VALID UNTIL]

Expiry and check digits

An expired document or an invalid MRZ automatically blocks approval.

Match with the application

Document fields are compared with what the client entered.

Duplicates without storing the number

We look for duplicates using a secure hash of the document number, only within your organization.

Random challenge

Turn left, turn right, blink, in random order. A pre-recorded video can't guess the sequence.

Flash and virtual camera detection

The screen lights the face with a random color and we look for the reflection. We also catch virtual cameras used to feed in someone else's video.

Three zones, not yes/no

A match, a weak match for manual review, or likely a different person. Frames from the same session are also compared with each other.

OFAC, UN, EU, UK

Matching accounts for typos, transliteration and name variants. Date of birth and nationality refine the result.

Build your own verification from blocks

Steps, conditions and outcomes on a visual canvas. Start from the “Basic” or “Fast with auto-approval” template. Each application follows the version of the flow it started with.

Document
Liveness
Face match
Sanctions
Approve
Review
Reject
What blocks approval
liveness failedfields don't matchweak face matchdifferent facefaces in session differdocument expiredinvalid MRZMRZ doesn't match front sideduplicate documentvirtual camerasuspected spoofingsanctions: under reviewsanctions: confirmed

Fits into your onboarding

A widget on your site, an API key for your server, signed webhooks and a real-time status stream. Audit log and data deletion on client request come out of the box.

See KYT →
// status change webhook
POST [your webhook URL]
{
"status": "pending_review",
"blockers": ["face_weak_match"]
}
draftin progressin reviewinfo neededapprovedrejected

One platform: KYC for the client, KYT for their wallets

Once you've verified the person, check where their funds came from.

No spam. Your data is securely protected.