Document Verification
Verify government-issued identity documents with AI-powered authenticity checks, data extraction, and fraud detection.
Document Verification
Authenticate government-issued identity documents using AI-powered verification that checks authenticity, extracts data, and detects fraud across 2,500+ document types from 195 countries.
Supported Documents
Primary Documents
- Passports - All countries, biometric and non-biometric
- National ID Cards - Government-issued photo IDs
- Driver Licenses - All regional formats
- Residence Permits - Work permits, permanent residence cards
- Visa Documents - Travel visas with photo
Document Coverage
| Region | Countries | Document Types |
|---|---|---|
| Europe | 50 | 450+ |
| Americas | 35 | 380+ |
| Asia | 48 | 620+ |
| Africa | 54 | 580+ |
| Oceania | 8 | 90+ |
1 Credit Per document verification
Verification Process
Step 1: Document Upload
Users can submit documents via:
Dashboard Upload:
- Drag-and-drop interface
- Mobile camera capture
- File selection (JPG, PNG, PDF)
Verification Link:
await fetch(`/api/v3/verifications/${verificationId}/send-link`, {
method: 'POST',
body: JSON.stringify({
method: 'email', // or 'sms'
expiresIn: 7 // days
})
});API Upload:
const formData = new FormData();
formData.append('front', frontImage);
formData.append('back', backImage); // if applicable
await fetch(`/api/v3/verifications/${verificationId}/documents`, {
method: 'POST',
body: formData
});Step 2: AI Analysis
Our verification engine performs:
Authenticity Checks:
- Security feature detection (holograms, watermarks, UV elements)
- Template matching against known document formats
- Font and layout consistency analysis
- Microprint verification
- Document aging and wear pattern analysis
Data Extraction (OCR):
- Full name (first, middle, last)
- Date of birth
- Document number
- Issue and expiry dates
- Nationality
- Address (if present)
- MRZ (Machine Readable Zone) parsing
Fraud Detection:
- Photoshop manipulation detection
- Screen capture detection
- Black and white copy detection
- Photo substitution detection
- Document expiry check
Processing time: 5-30 seconds
Step 3: Face Extraction
Extract face photo from document for biometric matching:
{
"faceExtracted": true,
"faceQuality": 95, // 0-100 score
"facePosition": {
"x": 120,
"y": 80,
"width": 180,
"height": 220
}
}Face quality factors:
- Resolution and sharpness
- Lighting consistency
- Face angle (frontal preferred)
- Eyes open and visible
- No obstructions (glasses, masks)
Document Types
Passports
What We Check:
- MRZ validation (checksums, format)
- Biometric chip data (if available)
- Security features (holographic strip, watermarks)
- Photo consistency with holder
- Expiry date validity
Accuracy: 99.9% (highest due to standardised format)
Common Issues:
- Poor image quality (blurred, dark)
- Glare on plastic page
- Expired passport
- Damaged MRZ
National ID Cards
What We Check:
- Front and back consistency
- Security features specific to issuing country
- Data extraction from both sides
- Photo quality and consistency
Accuracy: 98.5%
Common Issues:
- Regional format variations
- Security feature differences by year
- Lamination glare
- Worn/damaged cards
Driver Licenses
What We Check:
- State/region-specific format validation
- Security features (holograms, microprint)
- Address verification
- Class and restrictions
Accuracy: 97.8%
Common Issues:
- Thousands of regional formats
- Frequent design updates
- Address outdated vs. user input
- Restrictions field complexity
Data Extraction
Extracted Fields
| Field | Extraction Rate | Validation |
|---|---|---|
| Full Name | 99.8% | Compared to applicant data |
| Date of Birth | 99.9% | Age calculation, format validation |
| Document Number | 99.5% | Checksum validation (if applicable) |
| Expiry Date | 99.7% | Not expired check |
| Nationality | 99.9% | ISO country code |
| Address | 98.5% | Format validation |
| MRZ Code | 99.9% | Checksum validation |
| Gender | 99.3% | M/F/X normalization |
| Issue Date | 98.1% | Not future-dated check |
Data Validation
Applicant Match: Compare extracted data with applicant details you provided:
{
"dataMatch": {
"firstName": true,
"lastName": true,
"dateOfBirth": false, // Mismatch flagged!
"nationality": true
},
"alerts": [
{
"field": "dateOfBirth",
"expected": "1990-01-15",
"extracted": "1990-01-14",
"severity": "medium"
}
]
}Data Mismatch Alerts
Review all mismatches before approving. Common causes:
- Typos in applicant data entry
- OCR errors on damaged documents
- Different name formats (e.g., "John" vs "Jonathan")
- Date format confusion (DD/MM/YY vs MM/DD/YY)
Document Quality Requirements
Image Requirements
| Requirement | Specification |
|---|---|
| Format | JPG, PNG, PDF |
| Min Resolution | 1200x900 pixels |
| Max File Size | 10 MB |
| Color | Full color (not B&W) |
| Lighting | Even, no shadows |
| Focus | Sharp, no blur |
Common Quality Issues
❌ Rejected:
- Screenshot of document (not original photo)
- Black and white copy
- Blurred or out of focus
- Heavy glare or shadows
- Corners cut off
- Text unreadable
✅ Accepted:
- Original photo taken with camera
- Full color
- Sharp and in focus
- Even lighting
- Full document visible
- Text clearly readable
Fraud Detection
Detection Capabilities
Photoshop Manipulation:
- Pixel-level analysis
- Metadata inspection
- Compression artifact detection
- Layer detection
- Clone stamp detection
Photo Substitution:
- Face photo blending artifacts
- Lighting inconsistency on face vs. background
- Resolution mismatch
- Perspective distortion
Fake Documents:
- Template mismatch with genuine documents
- Missing security features
- Incorrect fonts or layout
- Color inconsistencies
Screen Capture:
- Pixel pattern analysis
- EXIF data inspection
- Moiré pattern detection
Fraud Score
Every document receives a fraud score:
| Score | Assessment | Action |
|---|---|---|
| 0-20 | Very Low Risk | Auto-approve |
| 21-40 | Low Risk | Review recommended |
| 41-60 | Medium Risk | Manual review required |
| 61-80 | High Risk | Likely fraudulent |
| 81-100 | Very High Risk | Reject |
Best Practices
- Request verification links - Better image quality than manual uploads
- Require both sides - Front and back for ID cards and driver licences
- Set quality thresholds - Reject poor quality images automatically
- Review data mismatches - Don't auto-approve if alerts present
- Check expiry dates - Reject expired documents
- Enable liveness check - Combine with biometric verification for high-risk
API Reference
Upload Document
POST /api/v3/verifications/:id/documents
const formData = new FormData();
formData.append('documentType', 'passport'); // passport, id_card, drivers_license
formData.append('front', frontImage);
formData.append('back', backImage); // optional
const response = await fetch(`/api/v3/verifications/${verificationId}/documents`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`
},
body: formData
});Get Verification Results
GET /api/v3/verifications/:id
const response = await fetch(`/api/v3/verifications/${verificationId}`, {
headers: {
'Authorization': `Bearer ${apiKey}`
}
});
const data = await response.json();
// data.status: 'approved', 'manual_review', 'rejected'
// data.extractedData: { firstName, lastName, dob, ... }
// data.documentValidity: boolean
// data.fraudScore: 0-100Troubleshooting
Low Extraction Accuracy
Symptoms: Missing or incorrect extracted data
Solutions:
- Improve image quality (better lighting, higher resolution)
- Request new photo without glare
- Ensure full document visible in frame
- Check for damaged or worn documents
High Fraud Score (False Positive)
Symptoms: Genuine document flagged as fraudulent
Common Causes:
- Document photo taken on glossy surface (glare)
- Very new document (pristine condition looks "too perfect")
- Regional format not in training data
- Unusual security features
Solutions:
- Request new photo without glare
- Manual review by compliance team
- Request alternative document
- Report false positive to improve ML model
Document Not Recognised
Symptoms: "Unsupported document type" error
Solutions:
- Check document is from supported country
- Ensure document is a primary ID (not student ID, library card, etc.)
- Try different document type if available
- Contact support to add new document format
Next Steps
Ready to get started?
Start with our free plan. No credit card required.