Understand the standard split: ISO 18013-5 (2021) defines the mDL data model and proximity presentation protocols (NFC, QR code, BLE); ISO 18013-7 extends it to online use cases via OpenID for Verifiable Presentations (OID4VP).
Stand up a verifier endpoint that initiates an OID4VP authorization request specifying the requested mDL document type (org.iso.18013.5.1.mDL) and the specific data elements needed (e.g., age_over_21, given_name, issue_date).
Present the OID4VP request to the user's wallet via a QR code (cross-device) or a deep link (same-device); the wallet generates a signed mdoc Presentation and returns it to your verifier redirect URI.
Validate the mdoc Presentation: verify the issuer signature using the issuing authority's certificate retrieved from the IACA (Issuer Authority Certificate Authority) trust store, and verify the device-bound key signature.
Extract the disclosed data elements from the DeviceSigned and IssuerSigned structures; only elements the user consented to disclose are present — treat absent elements as undisclosed rather than absent.
Test against mDL reference implementations and simulator wallets available in the ISO 18013 GitHub ecosystem before connecting to production state-issued wallet deployments.
Known gotchas
ISO 18013-5 proximity (Bluetooth/NFC) and ISO 18013-7 online presentation are separate protocol paths; proximity verification hardware readers cannot substitute for OID4VP-based online verification and vice versa.
IACA certificate trust anchor management is the most operationally complex aspect: if your trust store does not include a new state's issuing CA certificate, mdoc signature validation will fail silently or throw untrusted certificate errors.
mDL availability varies widely by US state and country; as of mid-2026 only a subset of US states have issued production mDLs and not all wallet implementations support online OID4VP — plan graceful fallback to traditional document capture.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp