E-commerce

Age verification for alcohol and restricted goods

Prove a shopper is over 18 without learning their birth date.

Use case
Age verification
Wallet data
PID
Authbound capability
Identity Verification
Flow
Verify
Find EUDIW Age Gate on the Shopify App Store
What changes

Before and after the wallet

Today

  1. Birth-date dropdown
  2. Or an ID scan
  3. Manual check
  4. The order

With the EUDI Wallet

  1. Approve one attribute
  2. Authbound verifies
  3. Signed yes or no
  4. The order

The wallet changes how the evidence is collected. The step at the end stays yours.

The problem

Why this is worth changing

For the business
A real ID check at checkout costs conversion, and a birth-date dropdown proves nothing.
For the user
Shoppers do not want to hand an online shop their passport to buy a bottle of wine.
For operations
Stores that do check end up holding identity documents they should not keep.

Why the wallet helps

Ask the wallet one question. Is this person over 18. It answers with a signed proof and nothing else. You get a compliance artefact and store a boolean, which is about as little personal data as the obligation allows.

  • An artefact that survives an audit, unlike a birth-date dropdown
  • Nothing identifying collected, so the check adds little GDPR exposure
  • Repeat customers reverify in seconds with no document to re-photograph
User journey

What actually happens

  1. 01

    You request specific attributes

  2. 02

    The user gets the request by QR or deep link

  3. 03

    The wallet shows exactly what is asked

  4. 04

    The user approves on their device

  5. 05

    The wallet presents the signed credential

  6. 06

    Authbound verifies the presentation

  7. 07

    Your backend receives a structured result

  8. 08

    Your existing workflow continues

How it works

Three steps with Authbound

  1. Step 01

    Gate the purchase, not the site

    Put the check at add-to-cart or checkout. Gating the whole storefront kills your organic traffic for no compliance benefit.

  2. Step 02

    Ask for one attribute

    We request age_over_18 and nothing more. The shopper sees exactly that on their consent screen.

  3. Step 03

    Keep the proof

    The order carries a signed verification reference. No document, no birth date, nothing that identifies the shopper beyond the order itself.

Technical flow

  1. Your application
  2. Authbound API
  3. Wallet request
  4. Presentation
  5. Trust and revocation checks
  6. Your backend
Technical details
const verification = await authbound.verifications.create({
  policyId: 'pol_…',      // the claims this flow requests
  customerUserRef: user.id,
});

// Your webhook then receives verification.completed
// with the verified result and its audit record.
  • Request: an OpenID4VP presentation request built from your policy.
  • Hand-off: QR code on desktop, deep link on mobile.
  • Checks: issuer against the EU trust lists, status list revocation, device binding.
  • Result: structured claims plus an audit record, delivered by webhook.
Who does what

What Authbound handles, what you handle

Authbound handles

  • The wallet request, with QR on desktop and a deep link on mobile
  • Verifying the presentation the wallet returns
  • Checking the issuer against the EU trust lists
  • Revocation and device binding checks
  • A structured result delivered to your backend
  • An audit record of every verification

Your application handles

  • Choosing which attributes the flow requests
  • Your business logic and account creation
  • The order
  • Risk and fraud decisions
  • How long you keep the result
  • A path for users without a wallet
What's involved

Credentials, standards and rules

Wallet presents

  • PID

Regulatory context

National alcohol and tobacco sales law, GDPR data minimisation, eIDAS 2.0

Age limits for alcohol, tobacco and similar goods are national law, and so is the standard of proof for distance selling. eIDAS 2.0 makes a government-rooted age proof available, and GDPR data minimisation favours a yes or no over a birth date. Delivery-time checks required in some markets stay with you and your carrier.

Halcyon Cellars demo
Live demo

See the complete flow in Halcyon Cellars

Selective disclosure age-checking for a premium wine storefront.

What it asks the wallet for

  • age_over_18

What the business gets back

Age proof
Accepted
Stored personal data
0 fields
Cart total
149€
Open the Halcyon Cellars demo

Halcyon Cellars is a fictional company built by Authbound. The wallet integration in it uses the real Authbound SDK.

Questions

What buyers ask

What do we actually receive?

A signed assertion that age_over_18 is true, plus the issuer identity and a timestamp. No name, no birth date, no image, unless you explicitly ask for them.

Is a boolean enough for a regulator?

The proof is signed by a government-recognised issuer and checked against the EU trust list, which is stronger evidence than a scan somebody eyeballed. Requirements still vary by member state and product, so confirm the standard for your market.

Where should the gate sit?

At purchase intent. Verifying only shoppers who were going to buy anyway costs you nothing in traffic and nothing in conversion.

Can we keep our current age check?

Yes. Offer the wallet as the one-tap option and keep your existing method for shoppers without one.

What happens if the shopper has no wallet?

They fall back to your current check. Nothing about the order flow has to change for them.

Do we still need to check age at delivery?

If your market requires it, yes. A wallet proof covers the online sale, while hand-over rules are set nationally and usually apply to the courier.

Does it work for shoppers from other EU countries?

Yes. The age proof is checked against the same EU trust lists wherever the wallet was issued. Which age limit applies is still decided by the law where you sell.

Can a shopper reuse the check on their next order?

Each order can carry its own proof in seconds, so you do not need to keep identity data between orders to make repeat purchases fast.

When will shoppers have wallets?

Every member state has to offer a wallet by 24 December 2026. Private services that are legally or contractually required to use strong user authentication have to accept it from December 2027 when the user asks. Expect a mix of wallet and non-wallet shoppers for a while.

Is there a ready-made option for Shopify?

Yes. EUDIW Age Gate, Authbound’s app on the Shopify App Store, blocks age-restricted checkout until the shopper proves age with their wallet.

Next step

Have a different wallet use case in mind?

Tell us what you are trying to build. We will map the user journey, the credentials and the wallet interaction to an implementation.