Identity verification that reads the barcode, not just the card.
Capture a driver's license front and back, decode the PDF417 live, match a selfie with liveness against the document portrait, screen against OFAC with DOB corroboration, and check a 2.6M-face duplicate network — all behind a five-line SDK.
From session to decision in four steps
You create a session, your user completes a guided hosted flow, and you receive a signed, auditable decision. KYC verification and age verification run in the same flow — no capture SDKs to babysit, no biometrics touching your servers.
Create a session
POST /v1/verifications from your server with a secret key. Get back a client token and a hosted URL.
User verifies
The hosted flow walks them through consent, driver's license verification — front and back, with live PDF417 decode — then a selfie with liveness.
We run the checks
Barcode forensics, face match, liveness, OFAC with DOB corroboration, and duplicate-face search roll into a composite score.
You get a decision
approve, review, or decline — delivered by signed webhook and queryable via REST, with a full audit trail.
Six layers of verification, one API call
Every check below runs on every verification. No tiers of "real" security, no per-feature upsell on the core flow.
PDF417 barcode forensics
The AAMVA barcode is decoded live in the browser and decoded again independently server-side. Any mismatch between the two is a tamper signal.
AAMVA CDS v01–v12 · 50 statesLicense-number recomputation
Florida, Illinois, and Wisconsin derive license numbers from the holder's name and birthdate. We recompute them and compare — fabricated numbers don't survive.
FL · IL · WI Soundex-class checksFace matching
The document portrait is matched against the live selfie with 512-dimensional embeddings, served from dedicated NVIDIA T4 GPUs with automatic failover.
512-d embeddings · dedicated T4sLiveness detection
Three seconds of live frames are analyzed for presentation attacks — printouts, screen replays, and masks are rejected before face match ever runs.
Presentation-attack detectionOFAC sanctions screening
Every verification screens the SDN list, with date-of-birth corroboration upgrading or downgrading name matches. A strong match is a hard decline — and screening never fails open.
SDN + DOB corroborationDuplicate-face network
Each enrolled face is searched 1:N against a 2.6M-face network, catching repeat fraudsters rotating identities across documents and merchants.
1:N · 2.6M facesThe fraud checks we run on every verification
Fake IDs fail on the data, not on a human's hunch. Each result below is stored on the verification and written into a hash-chained, tamper-evident audit log.
-
AAMVA parse
Full CDS decode with version detection and mandatory-field enforcement.
-
Soundex recomputation
License number recomputed from name and DOB for FL, IL, and WI.
-
Barcode ↔ OCR cross-check
Encoded fields compared against the printed visual zone.
-
Expiry & age validation
Document validity window and age thresholds enforced per session.
-
OFAC + DOB corroboration
SDN name matches upgraded or downgraded by birthdate evidence.
-
Duplicate-face detection
1:N search across the 2.6M-face network on every enrollment.
-
Liveness verification
Presentation-attack detection on live selfie frames.
-
Tamper detection
Client/server barcode mismatch flags plus hash-chain integrity.
Five lines to a verified user
The @idcheck/web SDK opens our hosted flow in a modal or redirect. Your servers never touch a biometric, and decisions arrive as signed webhooks.
- Hosted flow — consent, capture, and liveness run on verify.idcheck.now, so capture-path integrity is ours to guarantee.
- REST API — create sessions, poll decisions, and pull full check detail from any backend: a complete document verification API.
- Signed webhooks — every decision is delivered with a signature you can verify, and every event is hash-chained for audit.
<script src="https://cdn.idcheck.now/web/v1/idcheck.js"></script>
<script>
const idcheck = new IDCheck("pk_live_9f2c…");
const session = await idcheck.verifications.create({ user: "user_4821" });
idcheck.open(session.client_token, {
onComplete: ({ decision }) => provision(decision) // approve | review | decline
});
</script>
Transparent, self-serve, per check
Start free. Pay per completed verification when you grow. Every core check — document, selfie, liveness, OFAC — is included at every tier.
For side projects and first integrations.
- 100 checks per month, free
- Document + selfie + liveness + OFAC
- REST API + signed webhooks
- Sandbox with test sessions
- Community support
For products onboarding real users at real volume.
- Everything in Starter
- Unlimited checks — pay only for completed verifications
- Duplicate-face network (2.6M faces)
- Full fraud-check detail on every decision
- Priority support
For platforms, regulated industries, and high volume.
- Volume pricing — no minimums, no seat fees
- Dedicated GPU capacity for face match
- Custom data retention and audit-log export
- Dedicated support engineer
- Custom decision rules and review queues
Add-ons are priced per call and can be enabled on any paid tier from the dashboard.
Built for regulated onboarding
BIPA consent flows
Written release and recording consent — affirmative, versioned, and IP-logged before any biometric is captured.
GDPR
Data-subject rights support with configurable retention windows on biometric and document data.
Hash-chained audit trail
Every event on every verification links to the previous hash. Tampering breaks the chain — and the chain is verifiable.
SOC 2 Roadmap
Type II program in progress. Security controls and audit logging designed to map to the trust criteria.
FAQ
Questions, answered
What documents do you support?
US driver's licenses and state IDs from all 50 states, decoded against AAMVA CDS versions v01 through v12. NFC passport verification, DMV checks (AAMVA DLDV), and SSN verification (eCBSV) are available as add-ons.
How does the PDF417 barcode check work?
The AAMVA barcode is decoded live in the browser and decoded again independently server-side — any mismatch is a tamper signal. Encoded fields are cross-checked against the visual zone, per-state license-number formulas (FL/IL/WI recomputation), issuing-authority IIN records, expiry and date logic, and document-discriminator replay history.
What is liveness detection?
Three seconds of live selfie frames are analyzed for presentation attacks — printouts, screen replays, and masks are rejected before face matching ever runs. Texture, motion, and screen-recapture signals are scored together, and the capture path itself is checked for injection attempts.
How much does idcheck.now cost?
The Starter tier is free forever with 100 checks per month. Growth is $0.99 per completed verification with no minimums. Enterprise pricing is custom, with volume discounts and no platform fees.
Is my biometric data safe?
Yes. Biometric capture runs on our hosted flow, so biometrics never touch your servers. BIPA-compliant written consent is collected before any capture, media is stored privately with short-lived signed URLs, and every verification produces a hash-chained, tamper-evident audit trail.
Your first 100 verifications are free.
Five lines of JavaScript. No credit card. A decision you can defend.