Age verification · EU Digital Identity · .NET
Age verification without ever seeing an ID.
Tessio.Cloud is a hosted verification API. You ask whether someone is over 18, they confirm it from the EU age verification app and you get back a signed yes or no. No documents, no selfies and no dates of birth kept.
Live at cloud.tessio.eu. Built for iGaming, age restricted retail, dating and adult platforms. National law sets the age, and the DSA asks platforms accessible to minors for proportionate protection.
Try it now
A real age check in your browser, with no account. The request is the one our API builds for a customer. A button stands in for the person and skips verification rather than faking a pass. More about the demo.
Nothing that names you is stored. A check records the yes or no answer, when it happened and how it was verified: no name, no date of birth, no document image.
The request
That code is a real OpenID4VP request, built by the same code a customer integration calls and
carrying the same DCQL query, which asks for age_over_18 and nothing else. Use the
buttons to stand in for the wallet.
A presentation arrived and was refused, and the check is still open.
Stand in for the wallet
These skip the verification step rather than fake it: no credential is involved, and the answer you
pick is recorded as you picked it. It is marked simulated, never eudiw or
av, so it can never be mistaken for a verified result.
The Tessio.Cloud dashboard: verification outcomes over time and every age check, with no documents or dates of birth stored.
Two products, one core
The hosted product for teams who want it run for them and the open source verifier for teams who would rather run it themselves.
Hosted · live now
Tessio.Cloud
A hosted API and dashboard for age checks with EU wallet credentials. You get API keys, webhooks and usage analytics. Checks from the EU age verification app complete in production today, over both transports the profile defines. You can start building against the sandbox as soon as you sign up.
Open source · Apache-2.0
Tessio.Verifier
The ASP.NET Core verifier that Tessio.Cloud runs on. It does OpenID4VP 1.0, SD-JWT VC and mdoc (mDL), plus the W3C Digital Credentials API transport of the EU age verification profile. In both formats it passes the OpenID Foundation conformance suite for HAIP verifiers. Its demo, mock and test modes let you build without a real wallet. It is on NuGet for .NET 8 to 10, so you can run it yourself.
A small REST API with keys, webhooks and copy and paste examples in your language.
Free tools in Tessio.Labs
Five free validators for EU digital identity and trust, on the same engine as Tessio.Cloud. Nothing you paste is stored.
SD-JWT VC Validator
Decode a verifiable credential and check its disclosures bind to the signed digests.
Open →mdoc / mDL Validator
Validate an ISO 18013-5 mobile document, its Mobile Security Object and its IACA chain.
Open →eIDAS Signature Validator
Check a PAdES, CAdES or JAdES signature, its timestamp and its EU trusted list qualification.
Open →EU Trusted List Checker
See whether a certificate is a qualified CA on an EU trusted list and which national list.
Open →EUDI Trusted Entity Checker
See whether the EU wallet ecosystem trusts a certificate, as a PID, WRPAC or public EAA provider.
Open →Age verification in three steps
You get the claim you asked for, not the identity behind it.
01
Call the API
POST a check to /v1/age-checks and you get back a hosted verification link, with no SDK to install.
02
The user confirms
The person confirms one claim, like being over 18, from the EU age verification app on their own device. No ID scan, no selfie.
03
You get a yes or no
A signed result lands on your webhook. You store the answer you need and nothing else.
Your numbers come back too. The stats API returns the pass rate, the funnel, why attempts were refused and breakdowns for your organisation or one project. The MCP server answers the same reads to an AI assistant such as Claude Code, under a key that can only read stats.
Why now
Regulation (EU) 2024/1183 makes all 27 member states issue a Digital Identity Wallet by the end of 2026. From December 2027, relying parties that law or contract requires to use strong user authentication have to accept it when a user asks to present it, micro and small enterprises excepted. EU DSA and national age rules already apply today.
The EU's own reference implementations are mostly Kotlin, Swift and Python. So far .NET has a few independent packages. Whichever one a team picks, a verifier library is the smaller part of the work: someone still has to keep the trust lists current, hold the signing keys and keep evidence of each check. Tessio gives .NET teams both: an open source verifier that fits their stack and the trust layer run for them, hosted or self run.
Timeline
-
Now
Tessio.Cloud is live, and on 25 August 2026 the EU age verification app completed a real age check against it in production, with the attestation checked against the Commission's published age verification trusted list. Tessio.Verifier passes every applicable module of the OpenID Foundation conformance suite for OpenID4VP 1.0 HAIP verifiers in both SD-JWT VC and mdoc formats, and that pass is the bar for every release. It implements the EU age verification profile, which sends no request object at all. On 27 August 2026 the profile's preferred transport, the W3C Digital Credentials API, completed a real age check from a browser in production too and settled a question the published specification leaves open: the reference implementations bind the encrypted response one way and the shipping wallet another, so we bind it the way the wallet actually does. Both transports the profile defines are carrying real checks.
-
Dec 2026
Member states have to make the EU Digital Identity Wallet available under Regulation (EU) 2024/1183, which puts real credentials in people's hands.
-
Dec 2027
Acceptance becomes mandatory for relying parties bound to strong user authentication, other than micro and small enterprises, whenever a user asks to present the wallet. They need a verifier in production.
Pricing
A check counts toward your plan only when a wallet presented an attestation that verified. Every other check is free.
Starter
€49 per month
Both transports the profile defines and the hosted trust layer that keeps trusted lists current.
5,000 verified checks a month, fair use
Growth
€249 per month
Everything in Starter with ten times the volume and priority support.
50,000 verified checks a month, fair use
Platform
€990 per month, on an annual commitment
A named contact and no volume to watch on any property you run.
Unmetered
Self host
from €4,990 per month, on an annual commitment
The whole platform on your own hosts, so not even the yes or no leaves your boundary.
Unmetered
Design partners get preferential pricing while we build out. Full pricing and what counts as a check →
Frequently asked
What is Tessio.Cloud?
A hosted API that checks age with the EU age verification app (the EU Digital Identity Wallet follows once our access certificate is issued). You send a check, the person proves a claim such as being over 18 and you get a signed yes or no back. You never handle documents, and we keep no documents or dates of birth.
How does the age verification API work?
Your app calls the /v1/age-checks endpoint and gets a hosted verification link. The person confirms the claim from their app or wallet, and the result comes back on your webhook. Which one they use decides whether it works. There are two ways to prove age in the EU wallet ecosystem, and they are not at the same stage. The EU age verification app has its own profile, which puts reader authentication out of scope, so no access certificate is involved. The EU Digital Identity Wallet requires one. We do not hold that certificate yet, so today checks run on the EU age verification app.
Can an AI assistant read my age check stats?
Yes. Tessio.Cloud runs an MCP server at https://api.tessio.eu/mcp, listed in the official MCP Registry as eu.tessio/stats. Connect Claude Code or another assistant with a stats key and ask how your checks did. It answers with counts and rates rather than single checks, and it cannot start or change a check. The same numbers come from the stats API at /v1/stats.
Can you check a real person's age today, or is this still a sandbox?
Age checks from the EU age verification app work in production today. One completed against our live API on 25 August 2026, with the attestation checked against the age verification trusted list the Commission publishes. Live checks are anchored on the Commission's production list and test checks on its acceptance list, and the security page says what that means for you. The EU Digital Identity Wallet is a separate path and it is still gated. That wallet checks who is asking before it releases anything, so it needs a relying party access certificate, which we applied for on 5 August 2026 and do not yet hold. Every relying party that wants to use that wallet has to register first and then identify itself to the wallet with such a certificate, incumbents included (Article 5b of Regulation (EU) 2024/1183 and Article 7 of Implementing Regulation (EU) 2025/848). A sandbox key is still where an integration starts, and it is no longer the only thing we can do.
Which transport does Tessio use for the EU age verification app?
We verify over both transports the age verification profile defines, and both are live in production. The one it prefers, the W3C Digital Credentials API, completed its first production check on 27 August 2026. OpenID for Verifiable Presentations, its fallback, has been answering checks since 25 August. The verification page picks whichever the person's browser supports, so the better experience is used where it exists and nobody is turned away where it does not. Which one a vendor supports is worth asking. The browser route gives the smoother experience where it exists, having shipped in recent Chrome and Safari. The fallback is what reaches everyone else, including a wallet on a second device.
What does Tessio.Cloud cost?
Starter is €49 a month with 5,000 verified checks a month and Growth is €249 a month with 50,000 verified checks a month. Platform is €990 a month on an annual commitment with no volume to watch, and Self host starts at €4,990 a month. A check counts toward your plan only when a wallet presented an attestation that verified. Every other check is free. Above the included volume nothing is charged per check. If you run past it, we talk about the right plan. A sandbox key is free and stays free.
What do you store about the people you check?
The over 18 yes or no, your reference and technical details of how the check went, which the privacy policy lists, kept for your plan’s retention period. Never a date of birth, an ID document, a selfie or an ID scan. You get the answer your compliance needs and nothing more.
Is it GDPR compliant?
We check one claim and store no documents or dates of birth, which is the posture GDPR and the EU Digital Identity framework are built for. If you need the verifier inside your own boundary, you can self host it.
Is there an open source or self hosted option?
Yes. Tessio.Cloud runs on Tessio.Verifier, our open source ASP.NET Core verifier for OpenID4VP, SD-JWT VC and mdoc. It is on NuGet under Apache-2.0, so you can build and run it on your own .NET stack.
Does Tessio pass the OpenID Foundation conformance tests?
Yes. Tessio.Verifier passes every applicable module of the OpenID Foundation conformance suite for OpenID4VP 1.0 verifiers under the High Assurance Interoperability Profile (HAIP), in both SD-JWT VC and mdoc formats. The suite plays the wallet and attacks the verifier: tampered credentials, replayed proofs, stale keys and broken session bindings all have to be rejected for the right reason. Passing it is our bar for a verifier release. We have not yet submitted for the official OpenID certification listing.
When must businesses accept the EU Digital Identity Wallet?
Member states have to make the wallet available by December 2026 under Regulation (EU) 2024/1183. From December 2027, private relying parties that law or contract requires to use strong user authentication have to accept it when a user asks to present it. Micro and small enterprises are excluded. Both dates run from the implementing acts in force since 24 December 2024.
Working on age verification?
Let's talk.
Signup is open and a test project works as soon as you create one. If you run an age assurance pilot, are planning a 2027 rollout or work in a member state team that wants an EU aligned reference stack, get in touch.
hello@tessio.eu