For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
  • Getting Started
    • Introduction
    • How Verifa Works
    • Quickstart
    • Choosing an Integration Method
  • Use Cases
    • KYC Onboarding
    • Age Verification
    • AML Compliance
    • Fraud Prevention
    • Marketplace Trust & Safety
  • Core Concepts
    • Overview
    • Sessions
    • Verifications & Checks
    • Workflows
    • Identities
    • Cases
    • Screening & Reports
    • Lists
  • Integration Guides
    • Overview
    • JavaScript SDK
    • Web Capture Flow
    • API-Only Integration
    • Mobile SDK
    • Webhooks Guide
    • MCP Server
    • Migrating from Persona
  • API Details
    • Overview
    • Authentication
    • Pagination
    • Rate Limiting
    • Versioning
    • Errors
    • Webhooks
    • Idempotency
    • Key Inflection
    • Data Access
    • Data Retention
  • Tutorials
    • Creating Your First Verification Session
    • Creating a Workflow
    • Receiving Webhooks & Validating Signatures
    • Handling Webhook Events
    • Custom Document Types & AI Extraction
  • Best Practices
    • Testing
    • Preventing Duplicates
    • Fraud Signals
    • Changelog
  • API Reference
On this page
  • Why document-based age verification
  • How it works with Verifa
  • Quick implementation
  • Create a session
  • Check the result
  • Recommended workflow
  • Embedding with verifa.js
  • Regulatory context
  • Related
Use Cases

Age Verification

Was this page helpful?
Previous

AML Compliance

Next
Built with

Age verification is required across industries — alcohol and tobacco delivery, online gambling, social media platforms, and age-restricted content. Verifa extracts date of birth from government-issued IDs and calculates age automatically, so you never have to trust self-reported ages.

Why document-based age verification

Self-reported birthdates are trivially falsified. Credit-card checks only confirm the cardholder is 18+, not the actual user. Document-based verification extracts the date of birth directly from a government ID and pairs it with a selfie to confirm the person presenting the document is the document holder.

How it works with Verifa

  1. Create a session — Your server creates a verification session via the API
  2. User completes capture — Photographs their ID and takes a selfie
  3. Verifa extracts and checks — OCR reads the date of birth, calculates age, and face match confirms the user matches the ID photo
  4. You get a clear result — age_check_passed: true/false with the extracted age

Quick implementation

Create a session

cURL
Python
JavaScript
$curl -X POST https://api.withverifa.com/api/v1/sessions \
> -H "X-API-Key: vk_live_your_key_here" \
> -H "Content-Type: application/json" \
> -d '{
> "external_ref": "user_abc123",
> "country": "US"
> }'

The minimum age threshold is configured in your workflow, not per-session. When you add the Age Verification check to your workflow in the dashboard, you set the minimum_age value there (e.g., 18, 21, 25). See the Creating a Workflow tutorial for how to configure this.

Check the result

1{
2 "session_id": "session_abc123",
3 "external_ref": "user_abc123",
4 "status": "approved",
5 "result": {
6 "age_check_passed": true,
7 "extracted_age": 28,
8 "face_match_passed": true,
9 "face_match_score": 0.94,
10 "extracted_data": {
11 "date_of_birth": "1997-06-15",
12 "document_type": "drivers_license",
13 "document_issuing_state": "CA"
14 }
15 },
16 "processing_mode": "workflow",
17 "created_at": "2026-01-15T12:05:00Z"
18}

The age_check_passed field gives you a direct boolean — no date math required on your end.

Recommended workflow

For age verification, a minimal workflow is usually sufficient:

Capture → Document Scan → Face Match → Age Verification → Auto-Approve

Build this in the dashboard using the workflow builder, or use the “Age Gate” template when creating a new workflow.

The following checks run automatically on every session — you don’t need to add them to your workflow:

  • Watchlist screening — Screens against OFAC, EU, UN, and UK sanctions
  • Risk assessment — Scores 150+ fraud signals to catch bots, virtual cameras, and other fraud attempts
  • Identity cross-reference — Compares user-submitted data against OCR-extracted data (if you collect user info)

For stricter compliance (e.g., UK Online Safety Act, Australia Social Media Age Act), consider adding these optional checks to your workflow:

  • Duplicate detection — Prevent the same person from creating multiple accounts
  • Document expiration — Reject expired IDs

Embedding with verifa.js

For age-gated checkout flows, use a popup or modal so the user stays on your page:

1<script src="https://app.withverifa.com/static/verifa.js"></script>
2<script>
3 document.getElementById('verify-age-btn').addEventListener('click', async () => {
4 const res = await fetch('/api/create-age-verification', { method: 'POST' });
5 const session = await res.json();
6
7 Verifa.open({
8 captureUrl: session.capture_url,
9 sessionId: session.id,
10 mode: 'modal',
11 onComplete: (data) => {
12 // Unlock age-gated content
13 document.getElementById('checkout-btn').disabled = false;
14 },
15 onError: (err) => {
16 console.error('Verification failed:', err);
17 }
18 });
19 });
20</script>

Regulatory context

RegulationJurisdictionRequirement
UK Online Safety ActUnited KingdomAge assurance for harmful content
Australia Social Media Minimum Age ActAustraliaMinimum age 16 for social media
COPPAUnited StatesParental consent under 13
State age verification lawsUS (LA, TX, VA, UT, etc.)Age verification for adult content
Gambling Commission requirementsUnited KingdomID verification for online gambling

Verifa’s document-based approach satisfies all of these — the extracted age comes directly from a government ID, not self-attestation.

Related

  • Tutorial: Creating a Workflow — Build a workflow with age verification step by step
  • Quickstart — Create your first session in 5 minutes
  • Verifications & Checks — All available check types
  • Workflows — Customize the verification pipeline
  • JavaScript SDK — Embed verification in your frontend
  • Fraud Signals — 150+ signals to detect fake verifications