Reusable KYC lets a user verify their identity once and reuse the result everywhere. After an approved verification, you issue a portable credential that the user stores in the Verilock Wallet app. When another organization needs to verify them, they present the credential instead of redoing the entire KYC flow.
This page covers the lightweight token-based credential system. For W3C-standard Verifiable Credentials with selective disclosure and DID-based verification, see Verifiable Credentials.
The user goes through the standard Verilock verification flow (document upload, liveness check, AML screening) and receives an approved decision.
2
You issue a credential
Your backend calls POST /v1/credentials with the approved session ID and the fields you want to include. Verilock returns a portable token.
3
User stores in wallet
The credential appears in the user’s Verilock Wallet app (iOS & Android). The wallet stores the token locally, encrypted and PIN-protected.
4
User presents credential
When another organization requests KYC, the user opens their wallet, scans a QR code, reviews the fields being shared, and consents to disclosure.
5
Organization verifies instantly
The receiving organization calls POST /v1/credentials/verify with the token. Verilock validates the credential and returns the shared identity data — no document upload, no selfie, no waiting.
Encrypted local storage — credentials are stored on-device with AES-256 encryption, protected by a 6-digit PIN and optional biometrics (Face ID / fingerprint)
Consent-based sharing — users review exactly which fields are being requested and approve or deny each disclosure
QR code presentation — scan a verifier’s QR code to initiate a credential presentation, no manual token copy-paste
Offline signature verification — the wallet verifies credential signatures locally using Ed25519, even without an internet connection
Revocation checks — the wallet periodically checks credential status and flags any revoked or expired credentials
Backup & restore — encrypted backup to recover credentials on a new device
Multi-credential support — users can hold credentials from multiple organizations and choose which one to present
You don’t need to build your own wallet. The Verilock Wallet handles credential storage, consent flows, and secure presentation out of the box. Your users download it from the App Store or Google Play.
A fintech group operates a neobank, an investment platform, and an insurance product. A user verifies once on the neobank and reuses the credential for the other two services.
// Neobank: Issue credential after KYC approvalconst cred = await fetch('https://verilock.io/api/v1/credentials', { method: 'POST', headers: { 'Authorization': 'Bearer qi_live_neobank_key', 'Content-Type': 'application/json', }, body: JSON.stringify({ session_id: 'ses_approved_session_id', shared_fields: ['full_name', 'date_of_birth', 'nationality'], expires_in_days: 365, }),});// User stores the credential in their Verilock Wallet// Investment platform: Verify the credential (no re-KYC)const result = await fetch('https://verilock.io/api/v1/credentials/verify', { method: 'POST', headers: { 'Authorization': 'Bearer qi_live_invest_key', 'Content-Type': 'application/json', }, body: JSON.stringify({ token: userCredentialToken }),});// result.shared_data contains { full_name, date_of_birth, nationality }// Onboard the user immediately
Impact: Onboarding on the 2nd and 3rd service drops from 5 minutes to under 10 seconds. Conversion rate increases by 30%.
An e-commerce marketplace verifies sellers at sign-up. When a seller also wants to sell on a partner marketplace, they present the same credential instead of uploading documents again.
An online retailer verifies age at account creation and issues a lightweight credential. On every subsequent purchase, the credential is checked — no repeated age verification.
# At sign-up: Verify age and issue credentialcredential = requests.post( "https://verilock.io/api/v1/credentials", headers={"Authorization": "Bearer qi_live_key"}, json={ "session_id": "ses_age_verified", "shared_fields": ["full_name", "date_of_birth"], "expires_in_days": 365, },).json()# At every checkout: Quick credential checkcheck = requests.post( "https://verilock.io/api/v1/credentials/verify", headers={"Authorization": "Bearer qi_live_key"}, json={"token": customer_token},)dob = check.json()["shared_data"]["date_of_birth"]# Calculate age from DOB and proceed
Impact: Age verification only happens once. Every subsequent purchase is frictionless and free (verify calls are free).
A staffing agency verifies contractor identity once. When contractors are placed at different client companies, the client verifies the credential instead of running a separate background check.
The token is the portable credential. Share it with the user — they store it in their Verilock Wallet and present it to other organizations instead of re-verifying.
Permanently revoke a credential. Only the issuing organization can revoke.
{ "message": "Credential revoked."}
Revoked credentials are immediately invalid. Any subsequent verify calls will return "reason": "revoked". The user’s wallet will also flag the credential as revoked on next sync.