Age gate · EU Wallet

Preview — the age-only backend endpoint lands next iteration. Frontend flow is ready; the current build still uses the general sign-in verifier. See HAIP notes for the iteration plan.

Prove you’re over the line — nothing more than needed

Selective disclosure on OID4VP 1.0. Your wallet proves you meet the threshold; your name, date of birth and document never reach this site.

Scan with a wallet on another device, or tap the button below on this device.

Open EU Wallet on this device

Preparing age request…

What we ask for: a single yes/no answer — are you at least the selected age. We prefer an age-only proof (age_over_18 / age_over_N) from your wallet. If your wallet does not carry that credential, we may fall back to your date of birth to compute the yes/no check locally in your session; the date is not persisted, and only the boolean result is retained. What we do not ask for: your name, your exact age, your identity document, or your address. The wallet enforces this with SD-JWT VC selective disclosure; where an age-only claim is available, the disclosure array we receive contains only that claim.
Embed this age gate on your own site (one script tag)

Drop this on any HTML page. When the visitor passes the check, the codeb:age-verified event fires with a signed assertion your server can verify.

<div id="codeb-age-gate" data-threshold="18"></div>
<script src="https://phone.aloaha.com/age-verify-widget.min.js"
        data-tenant="your-tenant.example.com" async></script>

Widget ships today — see the drop-in demo. Age-only DCQL backend is on the roadmap (see HAIP notes); until it lands the widget in data-mode="signin" mode returns the full sign-in payload, and your server extracts the age claim from it.

Built to OID4VP 1.0 + HAIP 1.0. SD-JWT VC selective disclosure. HAIP implementation notes · EU Wallet verifier overview · Full sign-in