Crypto ATM and Kiosk ID Capture with a PDF417 API

Capture the card back with the kiosk camera, decode it server-side, and show a clear retake prompt when the barcode is unreadable. 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

Crypto ATM and Kiosk ID Capture with a PDF417 API workflow using a fictional US card back and structured AAMVA JSON

The Identity Data Problem for crypto ATMs and kiosks

Unattended kiosks must collect identity details for higher-value transactions without staff to help with a bad photo. 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

Capture the card back with the kiosk camera, decode it server-side, and show a clear retake prompt when the barcode is unreadable. 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. Anti-money-laundering, sanctions, and fraud controls must be applied by the operator.

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

Kiosk customer enrollment

Pre-fill given_names, surname, date_of_birth, document_number and require confirmation before committing the record.

Transaction limits by tier

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

Retake prompts

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: Anti-money-laundering, sanctions, and fraud controls must be applied by the operator.

Server-Side PDF417 Integration

Send the complete card-back image from a protected backend. This example selects fields relevant to crypto ATMs and kiosks 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("given_names:", data.get("given_names"))
    print("surname:", data.get("surname"))
    print("date_of_birth:", data.get("date_of_birth"))
    print("document_number:", data.get("document_number"))

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 crypto ATMs and kiosks?

Common fields include given_names, surname, date_of_birth, document_number. 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. Anti-money-laundering, sanctions, and fraud controls must be applied by the operator.

Explore More Driver License OCR Solutions

SOLUTION

Delivery Driver Onboarding with a License Barcode API

Use PDF417 and AAMVA parsing for delivery platforms. Pre-fill given_names, surname, date_of_expiry, handle unreadable barcodes, and keep API credentials server-side.

Driver License OCR
SOLUTION

Document Discriminator (DD) Extraction API

Instantly extract the Document Discriminator (DD) and audit numbers from US driver's licenses. Test our edge-routed OCR API for free using image uploads.

Driver License OCR
SOLUTION

Equipment Rental License Intake with PDF417

Use PDF417 and AAMVA parsing for equipment rental. Pre-fill document_number, date_of_expiry, vehicle_class, handle unreadable barcodes, and keep API credentials server-side.

Driver License OCR
SOLUTION

EU Driving Licence OCR API

Accurately parse numbered fields (1, 4a, 9) from European driving licences. Try our fast, edge-routed OCR API with a free image upload test.

Driver License OCR
SOLUTION

Event and Concert Entry ID Scanning with PDF417

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

Driver License OCR
SOLUTION

Fintech KYC Form Prefill from Driver License PDF417

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

Driver License OCR
SOLUTION

Fleet Driver Onboarding with PDF417 and AAMVA Data

Use PDF417 and AAMVA parsing for fleet administration. Pre-fill vehicle_class, restrictions, endorsements, handle unreadable barcodes, and keep API credentials server-side.

Driver License OCR
SOLUTION

Gym Membership Sign-Up with ID Barcode Prefill

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

Driver License OCR
SOLUTION

Patient Registration Data Capture from Driver License PDF417

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

Driver License OCR
SOLUTION

Hotel Guest Registration with a Driver License Barcode API

Use PDF417 and AAMVA parsing for hospitality check-in. Pre-fill given_names, surname, address, handle unreadable barcodes, and keep API credentials server-side.

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