Verification Channels

Choose the right communication channel for your mDL verification use case.

The mDL SDK supports three verification channels as defined by ISO 18013-5. Each channel has different characteristics suited to various use cases.

ChannelBest ForRangeSetup Complexity
QR CodeMost scenarios, easy UXVisual rangeLow
NFCQuick tap verification< 4cmMedium
Bluetooth LEHands-free, larger data~10mMedium

QR Code Verification

QR code verification is the most common and easiest to implement. Your app displays a QR code that the mDL holder scans with their wallet app, which then responds with their credential data.

When to Use

  • General-purpose age or identity verification
  • Retail and hospitality environments
  • When NFC/BLE hardware isn't available
  • Remote or contactless verification

Implementation

QRVerification.ktkotlin
Loading...
Tip: For QR code generation, you can use libraries like ZXing or ML Kit Barcode Scanning.

NFC Verification

NFC verification allows the holder to tap their phone against your device. This provides a quick, intuitive experience similar to contactless payments.

When to Use

  • Point-of-sale terminals
  • Access control systems
  • Quick repeated verifications
  • When both devices have NFC

Check NFC Availability

NFCVerification.ktkotlin
Loading...

Implementation

NFCVerification.ktkotlin
Loading...

Bluetooth LE Verification

Bluetooth Low Energy (BLE) verification allows wireless communication over a longer range than NFC. This is useful for hands-free scenarios or when transferring larger amounts of data.

When to Use

  • Hands-free verification scenarios
  • When requesting large data like photos
  • Vehicle-based verification (drive-through)
  • When NFC isn't practical

Check BLE Availability

BLEVerification.ktkotlin
Loading...

Implementation

BLEVerification.ktkotlin
Loading...
Important: BLE verification requires location permissions on Android. Make sure to request ACCESS_FINE_LOCATION at runtime before starting BLE verification.

Channel Selection Best Practices

Consider these factors when choosing a verification channel:

FactorQRNFCBLE
Device requirementsCamera onlyNFC hardwareBLE hardware
User actionScan QR codeTap devicesProximity
Data transfer speedLimitedModerateFast
Power consumptionLowVery lowModerate
Implementation effortSimpleModerateModerate

Multi-Channel Support

Your app can support multiple channels and let users choose, or automatically select based on device capabilities:

ChannelSelection.ktkotlin
Loading...