> ## Documentation Index
> Fetch the complete documentation index at: https://docs-pos.solya.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Age verification

> Capture proof of age for an age-restricted sale, recorded privately as an attestation.

Age verification captures proof of age for an age-restricted sale. It is exposed as a
customer-scoped **Age verification** panel on the customer record (the standalone page
was removed): the panel holds an attestation history and the record-proof flow for
that customer.

## Capturing proof

Proof can be captured two ways:

* **Date of birth** — the age policy ages the date to a decision.
* **Manual attestation** — the cashier vouches for the check.

A date of birth with no date collapses to "needs check". The decision maths run in
the shared age-verification domain.

## Privacy by design

The feature is deliberately local and privacy-preserving:

* There is **no backend route, permission or table** for age verification — the
  use-cases run in-process.
* The sensitive input (the date of birth) is **discarded**: only an identity-free
  attestation — operator, transaction reference, timestamp and outcome — is appended
  to a durable, append-only compliance log. There is no customer-id column; the
  customer scope rides on the transaction reference.

## Enforcement at checkout

Blocking a restricted basket until proof exists is enforced separately at
[checkout](/en/caisse/encaissement) — this panel is where the proof is recorded.

## Related

* [Customers](/en/caisse/clients) — where the age-verification panel lives.
* [Take payment](/en/caisse/encaissement) — where the restricted-sale gate is
  enforced.
