Liquor Store Age Verification with ID Barcode Scanning

Scan the license or state ID barcode at the register, show the parsed date of birth and expiry, and let the cashier confirm before completing the sale. Barcode data is captured for confirmation and is not treated as proof of identity or authenticity.

200 free credits = 100 Driver License scans, no credit card. Then from $5 for 500 credits, pay as you go. See pricing

Liquor Store Age Verification with ID Barcode Scanning workflow using a fictional US card back and structured AAMVA JSON

The Identity Data Problem for liquor retailers

Cashiers check birth dates by eye under time pressure, and inconsistent checks expose the store to compliance penalties. Teams also need to keep a readable barcode separate from a verified person or authentic card; mixing the two creates compliance and product risk.

Deterministic Barcode Parsing with Human Confirmation

Scan the license or state ID barcode at the register, show the parsed date of birth and expiry, and let the cashier confirm before completing the sale. StructOCR’s PDF417 API decodes the barcode on the back of US driver licenses and state ID cards and parses the AAMVA record without asking a generative model to reconstruct unreadable values. Both licenses and non-driver state ID cards are accepted; document_kind records which one was presented. The cashier and store policy decide whether a sale is lawful; barcode data does not prove the card belongs to the customer.

Live Demo: US Driver License PDF417 Scanner

No registration required. Upload a file to test the extraction.

1
Upload
2
Results
↑

Drop files here or click to browse

JPG · PNG · WebP  ·  up to 500 files · max 4.5 MB each

Photograph the barcode on the back, not the whole card. Let it fill the frame and tap on it to focus.

No document handy?

No files selected
Need more testing? Create a free account to get 200 free credits (equals 100 Driver License scans).

Workflow Applications

Register age checks

Pre-fill date_of_birth, date_of_expiry, document_kind and require confirmation before committing the record.

Curbside pickup

Return explicit retake instructions when the barcode is cropped, blurred, or affected by glare.

Tasting events

Keep the data-capture result separate from approval, eligibility, fraud, and compliance decisions.

Technical Specs

  • Endpoint: POST https://api.structocr.com/v1/driver-license-pdf417
  • Inputs: JPG, PNG, or WebP; Base64 JSON or multipart upload; maximum 4.5 MB
  • Documents: US driver licenses and state ID cards with an AAMVA PDF417 barcode; document_kind identifies which
  • Errors: Explicit PDF417_NOT_DECODED and AAMVA_NOT_VALID responses, with an optional capture_issue hint, support retake and review flows
  • Cost: 2 credits for a successful decode; processing failures are refunded
  • Decision boundary: The API extracts data and does not make identity, authenticity, eligibility, or legal-compliance decisions

Key Features

  • Server-side credentials: Keep the StructOCR API key out of browsers, kiosks, and mobile application bundles.
  • Data minimization: Persist only the fields the documented workflow actually requires.
  • User confirmation: Present extracted fields for correction before they enter a system of record.
  • Recoverable capture: Ask for a clearer image instead of guessing from a failed barcode.
  • Independent decisioning: The cashier and store policy decide whether a sale is lawful; barcode data does not prove the card belongs to the customer.

Server-Side PDF417 Integration

Send the complete card-back image from a protected backend. This example selects fields relevant to liquor retailers and treats HTTP 422 as a retake or review state.

PYTHON EXAMPLE
import base64
import os
import requests

with open("card-back.jpg", "rb") as image_file:
    image = base64.b64encode(image_file.read()).decode("ascii")

response = requests.post(
    "https://api.structocr.com/v1/driver-license-pdf417",
    headers={"x-api-key": os.environ["STRUCTOCR_API_KEY"]},
    json={"img": image},
    timeout=30,
)

if response.status_code == 422:
    body = response.json()
    print("Retake or review:", body.get("error"), body.get("capture_issue"))
else:
    response.raise_for_status()
    data = response.json()["data"]
    print("date_of_birth:", data.get("date_of_birth"))
    print("date_of_expiry:", data.get("date_of_expiry"))
    print("document_kind:", data.get("document_kind"))

Illustrative AAMVA Data

This wholly fictional response demonstrates the API shape for product design and testing. It is not a real person’s credential data.

{
  "success": true,
  "data": {
    "type": "drivers_license",
    "document_kind": "id_card",
    "source": "pdf417",
    "country_code": "USA",
    "region": "CA",
    "document_number": "SAMPLE1234",
    "surname": "SAMPLE",
    "given_names": "ALEX MORGAN",
    "first_name": "ALEX",
    "middle_name": "MORGAN",
    "sex": "X",
    "date_of_birth": "1990-01-15",
    "date_of_issue": "2025-01-15",
    "date_of_expiry": "2030-01-15",
    "address": "100 EXAMPLE AVE",
    "city": "SAMPLE CITY",
    "postal_code": "00000",
    "vehicle_class": null,
    "restrictions": null,
    "endorsements": null,
    "document_discriminator": "SAMPLE-DISCRIMINATOR",
    "issuer_identification_number": null,
    "aamva_version": 10,
    "jurisdiction_version": 0
  }
}

Frequently Asked Questions

Which fields are useful for liquor retailers?

Common fields include date_of_birth, date_of_expiry, document_kind. Optional values can be null when they are not encoded in the submitted record.

Can customers use a state ID card instead of a driver license?

Yes. State ID cards carry the same AAMVA PDF417 barcode, and the response sets document_kind to id_card.

Does a successful PDF417 response verify identity or document authenticity?

No. The cashier and store policy decide whether a sale is lawful; barcode data does not prove the card belongs to the customer.

Explore More Driver License OCR Solutions

SOLUTION

Philippine LTO Driver License OCR API

Accurately extract data from Philippine LTO driver's licenses. Parse restriction codes, conditions, and identity fields via our edge-routed API. Test for free.

Driver License OCR
SOLUTION

Notary and Loan Signing ID Capture with PDF417

Scan US driver licenses and state ID cards for notaries and signing agents. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.

Driver License OCR
SOLUTION

Pawn Shop and Secondhand Dealer Seller ID Capture

Scan US driver licenses and state ID cards for pawn shops and secondhand dealers. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.

Driver License OCR
SOLUTION

Pharmacy Prescription Pickup ID Scanning with PDF417

Scan US driver licenses and state ID cards for pharmacy pickup. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.

Driver License OCR
SOLUTION

Plasma Donation Center Donor ID Check-In with PDF417

Scan US driver licenses and state ID cards for plasma donation centers. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.

Driver License OCR
SOLUTION

Ride-Share Driver License Barcode Onboarding API

Use PDF417 and AAMVA parsing for ride-share onboarding. Pre-fill document_number, date_of_expiry, region, handle unreadable barcodes, and keep API credentials server-side.

Driver License OCR
SOLUTION

School Visitor Management with License and ID Barcodes

Scan US driver licenses and state ID cards for school front offices. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.

Driver License OCR
SOLUTION

Self-Storage Rental Intake with a Driver License Barcode

Use PDF417 and AAMVA parsing for self-storage leasing. Pre-fill given_names, surname, address, handle unreadable barcodes, and keep API credentials server-side.

Driver License OCR
SOLUTION

Senior Living Visitor Check-In with ID Barcode Scanning

Scan US driver licenses and state ID cards for senior living communities. Pre-fill AAMVA fields from the PDF417 barcode and route unreadable cards to a retake.

Driver License OCR
SOLUTION

Indonesian SIM OCR API

Extract NIK, identity, and category data from Indonesian driver's licenses (Surat Izin Mengemudi). Test our low-latency, edge-routed API with a free image upload.

Driver License OCR

Technical Comparisons & Integrations

Explore platform integrations and competitive analysis

From tutorial to production in 5 minutes.

You've seen the code. Now get your API key, grab your 200 free credits, and see it work with your own images. No credit card required.

Instant Access Cancel Anytime No Credit Card