Check age.Keep identity outof your database.
Your site receives a signed age result. The verifier handles the identity check.
Try every outcome.
Choose a synthetic outcome and threshold. The request is checked by the demo service and database.
Ready to run the check?
The verifier returns an age band. Your site never sees the document.
↳ Try cancelled, expired, and provider-error states to see the recovery paths.
Your site gets the answer.
The verifier keeps the ID.
Store the signed decision, not the document behind it.
More data to secure, delete and explain.
Store a non-identifying decision record.
Enough to explain the decision. No identity database required.
{
"age_verified": true,
"threshold": 15,
"provider": "demo_provider",
"verified_at": "timestamp",
"verification_id": "non-identifying reference"
}A small handoff, kept separate.
Your site calls the connector. The connector handles the verifier and returns signed age proof.
Monitor checks,
not people.
This fictional view tracks outcomes and provider health. It contains no names, birth dates, or document data.
Verification activity
Approved vs. rejected
Access rule
One connector.
Clear provider boundaries.
This sample shows the handoff, not a live provider API. Endpoints and payloads will vary.
Keep provider logic in one connector. Future verifier changes stay manageable.
// Ask the connector for a provider session const session = await fetch('/verification/session', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ threshold: 15, return_url: '/signup/age-check/complete' }) }); const { redirect_url } = await session.json(); window.location.href = redirect_url;# Your server decides what to store result = connector.verify("req_7fd2a1") if result["age_verified"]: allow_signup() else: show_age_gate_retry() # Store the signed decision, not the identity audit_log.save(result["verification_id"])
Thresholds depend on the service.
EU and national rules vary by product, country, legal basis, and risk.
Technical demo only. AgeHandoff is not an official EU service, legal certification, or legal advice.
The Commission describes private proof-of-age tools that Member States and market participants can adapt.
GDPR Article 8 uses 16 by default. Member States may lower it to 13.
French law uses 15 for consent to certain data processing. It is not a universal age gate.
The 2026 recommendation encourages availability by year-end. It does not mean every wallet is live today.
Decide what your age check needs
before you build it.
I can review your signup flow, verification routes, thresholds, and recovery states. You get a practical integration plan.
Request an audit Technical guidance only. No legal certification or compliance guarantee.