Skip to main content
NFC-based authentication lets you verify identity documents by reading the secure chip embedded in modern passports and IDs using a mobile phone’s NFC capabilities. This provides the highest level of security available for ID Verification.
NFC Interaction

Key Benefits

BenefitDescription
Highest SecurityVerifies cryptographic signatures directly from government issuers
Easy to UseWorks automatically with any NFC-enabled phone
Tamper-ProofDetects document manipulation invisible to the human eye
Comprehensive DataExtracts additional data not available through OCR alone
Flexible FallbackGracefully falls back to standard verification if NFC isn’t available

How to Enable NFC Verification

NFC verification is available through our native SDKs, which provide full access to device NFC capabilities:
PlatformNFC SupportDocumentation
iOS✅ Full SupportiOS SDK Documentation
AndroidComing SoonAndroid SDK Documentation
The iOS SDK handles all NFC configuration automatically, including:
  • ISO7816 application identifiers for ePassports
  • Entitlements and capabilities setup
  • Real-time chip reading with visual feedback

Web Integration

⚠️ Browser Limitations NFC verification is not available in web browsers due to platform restrictions:
BrowserNFC Support
Chrome (Android)Experimental Web NFC API - unstable, requires explicit permissions
Safari (iOS)No Web NFC API support
Other BrowsersNo support
For web integrations, NFC verification is automatically skipped and users proceed with standard document + selfie verification.

How It Works

Session Initiation

The user starts the verification process through your app or platform:
  • Native SDK: Launch the verification flow directly in your app
  • Web/Mobile Web: User is guided to use the Didit App for NFC-enabled verification, or continues with standard verification

Document Photo Capture

The user photographs their ID document, capturing:
  • MRZ (Machine Readable Zone) — used to derive chip access keys
  • Document front and back images — visual data and security features
  • Visual security features — holograms, watermarks, microprint

NFC Support Detection

The system automatically checks device and document compatibility:
CheckDescription
Document typeIs it an ePassport/eID with an NFC chip?
Device capabilityDoes the phone support NFC reading?
PermissionsAre the necessary NFC permissions granted?
If NFC is unavailable, verification continues seamlessly with standard document + biometric verification.

NFC Chip Reading

For compatible devices and documents:
  1. User is guided to position their document near the phone’s NFC reader
  2. Visual feedback shows real-time reading progress
  3. Secure communication is established with the chip using PACE/BAC protocols

Data Extraction

The system extracts comprehensive data from the chip following ICAO 9303 standards:
Data GroupContentsDescription
SODDocument Security ObjectDigital signatures for all data groups
DG1Personal DataName, ID number, birth date, expiry date
DG2Facial ImageHigh-resolution digital photo of the holder
DG7SignatureDigital representation of the holder’s signature
DG11-14Additional DataMay include fingerprints, iris scans (if stored)

Cryptographic Verification

The extracted data undergoes rigorous cryptographic verification:
Each data group’s hash is verified against the signatures stored in the SOD, ensuring data integrity.
The chain of trust is validated: Document Certificate → Country Signing CA → ICAO PKD Root, checking against CSCA master lists and the ICAO Public Key Directory.
Certificates are verified against Certificate Revocation Lists (CRLs) to ensure they haven’t been revoked and the document hasn’t been reported stolen/compromised.
NFC-extracted data is cross-validated against OCR data from document photos, facial biometric comparison, and MRZ checksum verification.

Result & Confidence Score

The final verification result includes:
OutputDescription
NFC verification statusSuccess, failed, or skipped
Data consistency scoreHow well NFC data matches visual data
Certificate validationFull chain verification status
Confidence boostNFC adds significant confidence to the overall verification

Supported Documents

NFC verification works with ePassports and eIDs that contain an NFC chip, typically indicated by this symbol on the document:
ePassport Logo
Most passports issued after 2006 contain NFC chips. Coverage varies by country for national ID cards. Check all the supported documents.

Integration Examples

iOS SDK (Available Now)

import DiditSdk

// NFC is automatically enabled when the document supports it
let config = DiditSdk.Configuration(
    // NFC configuration is handled automatically
    // Just ensure your app has the required entitlements
)

let result = try await DiditSdk.shared.startVerification(
    with: sessionId,
    configuration: config
)
Complete iOS SDK Documentation →

Android SDK (Coming Soon)

// Coming soon - use WebView integration in the meantime
// See Android SDK documentation for WebView setup
Android SDK Documentation →

Security Architecture

┌─────────────────────────────────────────────────────────────┐
│                    NFC Verification Flow                     │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌──────────┐    ┌──────────┐    ┌──────────────────────┐  │
│  │ Document │───▶│  Phone   │───▶│   Didit Backend      │  │
│  │ NFC Chip │    │ NFC Read │    │                      │  │
│  └──────────┘    └──────────┘    │  ┌────────────────┐  │  │
│                                   │  │ ICAO PKD       │  │  │
│                                   │  │ Validation     │  │  │
│                                   │  └────────────────┘  │  │
│                                   │  ┌────────────────┐  │  │
│                                   │  │ CSCA Master    │  │  │
│                                   │  │ List Check     │  │  │
│                                   │  └────────────────┘  │  │
│                                   │  ┌────────────────┐  │  │
│                                   │  │ CRL Revocation │  │  │
│                                   │  │ Check          │  │  │
│                                   │  └────────────────┘  │  │
│                                   └──────────────────────┘  │
│                                              │               │
│                                              ▼               │
│                                   ┌──────────────────────┐  │
│                                   │  Verification Result │  │
│                                   │  + Confidence Score  │  │
│                                   └──────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

FAQ