User Onboarding & KYC
Overview
Every User must complete Know Your Customer (KYC) verification before they can:- Deposit funds
- Have agents issue cards
- Make transactions
KYC Timeline
| Stage | Typical Duration |
|---|---|
| User creation | Instant |
| KYC initiation | Instant (returns verification URL) |
| User completes KYC | 5-10 minutes (user action) |
| Automated approval | 1-5 minutes |
| Manual review (if flagged) | 1-2 business days |
| Ready to deposit | Immediately after approval |
Required Information
The KYC process collects:| Category | Required Fields |
|---|---|
| Identity | Full legal name, date of birth |
| Contact | Email, phone number |
| Address | Street address, city, state, postal code, country |
| Tax ID | SSN (US) or equivalent for other countries |
| Documents | Government-issued ID (passport, driver’s license) |
Additional documents (proof of address, selfie) may be requested if automated verification fails.
Integration Flow
Step 1: Create a User
Step 2: Initiate KYC
Step 3: User Completes Verification
Redirect the user toverificationUrl. They’ll complete the KYC flow which includes:
- Personal information form
- Government ID upload
- Selfie verification (liveness check)
- Address verification
Step 4: Handle Webhooks
Subscribe to KYC status webhooks to react to verification results:Application Statuses
| Status | Meaning | Next Step |
|---|---|---|
notStarted | KYC not initiated | Call POST /v1/verification/user |
pending | User is completing verification | Wait for webhook |
needsInformation | Additional docs required | User must upload more documents |
needsVerification | Re-verification required | User must complete verification again |
manualReview | Under manual review | Wait (1-2 business days) |
approved | Ready to use | User can deposit and transact |
denied | Verification failed | Cannot proceed |
locked | Account locked | Contact support |
Handling Edge Cases
User Abandons KYC
If a user doesn’t complete verification, you can:- Resend the verification URL — The same URL remains valid
- Check status —
GET /v1/verification/user/{userId} - Send reminders — Implement your own reminder flow
Additional Documents Needed
When status isneedsInformation:
KYC Denied
If verification is denied, the user cannot use LedgerOS. Common denial reasons:- Identity could not be verified
- Document appears fraudulent
- Sanctions list match
- High-risk jurisdiction
Best Practices
Start KYC early
Start KYC early
Don’t wait until the user wants to spend. Initiate KYC during signup or onboarding to minimize friction later.
Set expectations
Set expectations
Tell users upfront that identity verification is required. This reduces drop-off and support tickets.
Use webhooks, not polling
Use webhooks, not polling
Subscribe to
user.application.* webhooks instead of polling the status endpoint.Handle manual review gracefully
Handle manual review gracefully
Some users will be flagged for manual review. Display appropriate messaging (“verification in progress”) rather than leaving them confused.
Test in sandbox
Test in sandbox
Use test users in sandbox to verify your KYC flow works end-to-end before going live.