Title
Message
Create new category
What is the title of your new category?
Edit page index title
What is the title of the page index?
Edit category
What is the new title of your category?
Edit link
What is the new title and URL of your link?
Integration guide
AI Tools
Summarize Page
Copy Markdown
Open in ChatGPT
Open in Claude
Connect to Cursor
Connect to VS Code
The Proof of Age service verifies user's age by scanning and verifying the QR code on a user's Proof of Age card within their Yoti Digital ID or Post Office Easy ID app. This card will be supported by a validated Government ID added to their account.
Collecting QR code
You will first need to build a method for reading a Proof of Age QR code. Proof of Age QR codes will only be valid for 30 seconds.
The QR code will look like this

And the encoded data will look like this
QR data
mdoc:owBjMS4wAYIB2BhYS6QBAiABIVggbdOW02x13eAwSmiXkJUJdIYVxO_HwLi0jfCpoHk-ZbciWCA9lWtgj755JkRMWxtNnuTeHJnlRL5cyxWg1U8Ir_PXOwKBgwIBowD0AeULUOVai9_j90tvtSSkI3-4hO4Calling the Proof of Age API
HTTP
Node.JS
PHP
.NET
Go
x
POST https://api.yoti.com/poa/v1/verifyAuthorization: {Authorization} { "qr": { "value": "mDL:VGhlIGRldmljZSBlbmdhZ2VtZW50IGRhdGEgc3RydWN0dXJl", "scanned_at": "2025-07-16T16:55:12Z" }, "terminal": { "id": "pos-1234957" }}Body
| Field | Example | Description |
|---|---|---|
| qr.value | mDL:VGhlIGRldmljZSBlbmdhZ2VtZW50IGRhdGEgc3RydWN0dXJl | The value of the scanned QR code |
| qr.scanned_at | 2026-01-01T00:00:00Z | When the QR code was scanned by the reader |
| terminal.id | pos-1234957 | An identifier for the terminal that is used to scan the QR code |
Response
JSON
{ "id": "Yzt0sbVOSauDWPwMQvumjQ", "status": "SUCCESS", "timestamp": "2025-07-16T15:47:22Z", "provider": "GOV_UK", "result": { "age_over": 21, "valid_for_alcohol": true, "checks": [ "SIGNATURE_VERIFIED", "PROVIDER_ON_DVS_REGISTER" ] }}| Field | Example | Description |
|---|---|---|
| id | Yzt0sbVOSauDWPwMQvumjQ | Unique identifier for the Proof of Age transaction |
| status | SUCCESS, PENDING | Status of the Proof of Age check |
| timestamp | 2026-01-01T00:00:00Z | Time that the check was completed |
| provider | GOV_UK | |
| age_over | 21, 25 | Indicates the age group the individual belongs to |
| valid_for_alcohol | true, false | Indicates whether this Proof of Age check is valid for alcohol sale |
| checks | SIGNATURE_VERIFIED, PROVIDER_ON_DVS_REGISTER | Checks performed when issuing the Proof of Age card |
Errors
If there is an error with the check, the API will return an error code with further details
| Code | Error | Description |
|---|---|---|
| 400 | MALFORMED_PAYLOAD | There was an issue with the construction of the payload |
| 403 | FEATURE_DISABLED | Proof of Age service needs to be enabled for your Organisation |
| 422 | INVALID_QR_CODE_VERIFIER_TOKEN | The provided QR Code contains an invalid (or expired) token |
| 500 | SYSTEM_UNAVAILABLE | There is a server issue - check https://status.yoti.com |
Type to search, ESC to discard
Type to search, ESC to discard
Type to search, ESC to discard
Last updated on
Was this page helpful?
Got a question? Contact us here.
Discard Changes
Do you want to discard your current changes and overwrite with the template?
Archive Synced Block
Message
Create new Template
What is this template's title?
Delete Template
Message