VerifyCompliance - KYC+ with AML/Sanctions Screening
Last Updated: November 30, 2025
Product: VerifyCompliance (KYC+)
API Version: 2.1.0
Plan Availability: Pro & Enterprise only
VerifyCompliance is an advanced identity verification service that combines standard KYC (selfie + ID verification) with integrated AML/PEP/Sanctions screening. It's designed for financial institutions, crypto exchanges, and regulated businesses requiring comprehensive compliance checks.
✨ Features
- Complete KYC Verification: Selfie + ID matching with face recognition
- AML Screening: Anti-Money Laundering database checks
- PEP Screening: Politically Exposed Persons detection
- Sanctions Screening: OFAC, UN, EU sanctions list matching
- RCA (Relative/Close Associate): Family and associate checks
- Encrypted PDF Reports: AES-256 encrypted compliance reports
- Hit/No-Hit Detection: Instant screening results
- On-Demand Reporting: Generate detailed PDF reports only when needed
- Privacy-First: No biometric data storage
- Fast Processing: Results in 5-8 seconds
🔒 Plan Availability
VerifyCompliance is available exclusively on Pro and Enterprise plans.
- ✅ Pro Plan: $399/month - 100,000 credits
- ✅ Enterprise Plan: Custom pricing - Unlimited credits
Free, Starter, and Growth plans have access to:
- VerifyHuman (liveness & bot detection)
- VerifyAge (age verification)
- VerifyIdentity (KYC without compliance screening)
Upgrade to Pro to access VerifyCompliance.
🚀 Quick Start
1. Get Your VerifyCompliance API Key
- Upgrade to Pro or Enterprise plan
- Log in to your dashboard
- Go to API Keys section
- Select "VerifyCompliance (KYC+)" scope for your API key
- Create your API key (format:
vhk-{32chars}) - Save your key securely (format:
vhsk-{48chars})
2. Perform Compliance Verification
curl -X POST https://app.verifyhuman.io/api/kyc/v1/submit_plus \
-H "X-API-Key: vhk-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" \
-H "Content-Type: application/json" \
-d '{
"selfie_b64": "base64_encoded_selfie",
"id_front_b64": "base64_encoded_id_front",
"id_back_b64": "base64_encoded_id_back"
}'
📡 API Reference
POST /api/kyc/v1/submit_plus
Submit identity verification with integrated compliance screening.
Authentication: X-API-Key: vhk-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6...
Request
{
"selfie_b64": "base64_encoded_selfie",
"id_front_b64": "base64_encoded_id_front",
"id_back_b64": "base64_encoded_id_back (optional)",
"gender": "male (optional - improves screening accuracy)"
}
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
selfie_b64 |
String | Yes | Base64-encoded selfie image |
id_front_b64 |
String | Yes | Base64-encoded ID front image |
id_back_b64 |
String | No | Base64-encoded ID back image |
gender |
String | No | male or female (improves match accuracy) |
Workflow:
- Face detection on selfie (liveness)
- Extract text from ID using OCR
- Compare selfie face with ID photo
- Extract name and DOB from ID
- Perform AML/PEP/Sanctions screening
- Return verification result with compliance status
Success Response - No Compliance Hits (200)
When identity is verified and no compliance matches found:
{
"success": true,
"verified": true,
"verification_id": "ver_kycp_abc123",
"confidence": 94.5,
"face_match": {
"similarity": 95.8,
"is_match": true
},
"document_data": {
"name": "JOHN DOE",
"date_of_birth": "05/15/1990",
"document_type": "Driver License",
"document_number": "D1234567",
"expiry_date": "05/15/2028",
"issuing_country": "USA"
},
"authenticity": {
"is_genuine": true,
"confidence": 92.3
},
"compliance_screening": {
"performed": true,
"status": "Cleared",
"total_hits": 0,
"message": "No matches found in AML/PEP/Sanctions databases",
"timestamp": "2025-01-15T10:30:05Z"
},
"timestamp": "2025-01-15T10:30:00Z",
"credits_consumed": 15,
"credits_remaining": 985
}
Response - Compliance Hits Detected (200)
When potential matches are found in compliance databases:
{
"success": true,
"verified": false,
"verification_id": "ver_kycp_def456",
"confidence": 95.2,
"face_match": {
"similarity": 96.1,
"is_match": true
},
"document_data": {
"name": "JOHN M. DOE",
"date_of_birth": "05/15/1990",
"document_type": "Passport"
},
"compliance_screening": {
"performed": true,
"status": "Potential Match",
"total_hits": 2,
"message": "Potential matches detected - manual review required",
"found_records": [
{
"name": "John M. Doe",
"category": "PEP",
"match_score": 87.5,
"country": "USA",
"position": "Former State Official"
},
{
"name": "J. Doe",
"category": "Sanctions",
"match_score": 72.3,
"list": "OFAC SDN List",
"country": "Unknown"
}
],
"timestamp": "2025-01-15T10:30:05Z"
},
"timestamp": "2025-01-15T10:30:00Z",
"credits_consumed": 15,
"credits_remaining": 985
}
Match Categories:
PEP- Politically Exposed PersonSanctions- Sanctions list (OFAC, UN, EU)AML- Anti-Money Laundering watchlistRCA- Relative or Close Associate
POST /api/kyc/v1/generate_report
Generate encrypted PDF compliance report for verifications with hits.
Authentication: X-API-Key: vhk-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6...
Request
{
"verification_id": "ver_kycp_def456",
"report_password": "SecurePassword123 (optional but recommended)"
}
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
verification_id |
String | Yes | Verification ID from submit_plus response |
report_password |
String | No | Password for PDF encryption (recommended) |
Success Response (200)
{
"success": true,
"pdf_base64": "JVBERi0xLjQKJeLjz9MK...",
"size_bytes": 245678,
"encrypted": true,
"filename": "compliance_report_ver_kycp_def456.pdf",
"timestamp": "2025-01-15T10:35:00Z"
}
Report Contents:
- Identity verification results
- Compliance screening summary
- Detailed match information
- Risk assessment scores
- Document authenticity checks
- Timestamp and verification ID
Encryption:
- AES-256 encryption (industry standard)
- Password-protected
- Secure one-time download
- No plaintext data exposure
Privacy Note: Reports contain screening results only - never raw biometric data or images.
🎯 Use Cases
1. Cryptocurrency Exchanges
Comply with KYC/AML regulations for crypto onboarding.
Implementation:
- Require VerifyCompliance during account registration
- Flag users with compliance hits for manual review
- Store verification IDs for regulatory audits
- Generate reports for suspicious activity
Benefits:
- Regulatory compliance (FATF, FinCEN)
- Fraud prevention
- Sanctions compliance
- Audit trail for regulators
2. Banking & Financial Services
Verify customers before opening accounts or processing large transactions.
Implementation:
- Run VerifyCompliance for all new account holders
- Screen high-value transactions
- Automated compliance checks
- Generate audit reports on demand
Benefits:
- KYC/AML compliance
- Reduced manual review costs
- Faster account opening
- Regulatory audit readiness
3. Payment Processors & Fintechs
Screen merchants and users before payment processing.
Implementation:
- Verify merchant identity during onboarding
- Screen all users for payment accounts
- Flag PEP and sanctions matches
- Store compliance records
Benefits:
- Prevents sanctioned entity transactions
- Reduces fraud risk
- Regulatory compliance
- Protects payment network
4. Real Estate & High-Value Transactions
Verify buyer/seller identity for property transactions.
Implementation:
- Require VerifyCompliance for buyers
- Screen sellers for high-value properties
- Generate compliance reports for closing documents
- Store verification for anti-money laundering
Benefits:
- AML compliance
- Fraud prevention
- Due diligence documentation
- Regulatory protection
💻 Code Examples
Python
import requests
import base64
# Read and encode images
with open('selfie.jpg', 'rb') as f:
selfie_b64 = base64.b64encode(f.read()).decode()
with open('id_front.jpg', 'rb') as f:
id_front_b64 = base64.b64encode(f.read()).decode()
# Call VerifyCompliance API
response = requests.post(
'https://app.verifyhuman.io/api/kyc/v1/submit_plus',
headers={
'X-API-Key': 'vhk-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6',
'Content-Type': 'application/json'
},
json={
'selfie_b64': selfie_b64,
'id_front_b64': id_front_b64,
'gender': 'male'
}
)
result = response.json()
if result.get('verified'):
if result['compliance_screening']['total_hits'] == 0:
print('✓ Identity verified - No compliance hits')
else:
print(f'⚠ Compliance hits detected: {result["compliance_screening"]["total_hits"]}')
print('Generating PDF report...')
# Generate encrypted PDF report
report_response = requests.post(
'https://app.verifyhuman.io/api/kyc/v1/generate_report',
headers={
'X-API-Key': 'vhk-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6',
'Content-Type': 'application/json'
},
json={
'verification_id': result['verification_id'],
'report_password': 'SecurePassword123'
}
)
report = report_response.json()
# Save encrypted PDF
pdf_bytes = base64.b64decode(report['pdf_base64'])
with open(f"compliance_report_{result['verification_id']}.pdf", 'wb') as f:
f.write(pdf_bytes)
print(f'✓ Report saved: compliance_report_{result["verification_id"]}.pdf')
else:
print('✗ Verification failed:', result.get('error'))
Node.js
const axios = require('axios');
const fs = require('fs');
// Read and encode images
const selfieB64 = fs.readFileSync('selfie.jpg').toString('base64');
const idFrontB64 = fs.readFileSync('id_front.jpg').toString('base64');
// Call VerifyCompliance API
axios.post('https://app.verifyhuman.io/api/kyc/v1/submit_plus', {
selfie_b64: selfieB64,
id_front_b64: idFrontB64,
gender: 'male'
}, {
headers: {
'X-API-Key': 'vhk-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6',
'Content-Type': 'application/json'
}
})
.then(async response => {
const result = response.data;
if (result.verified) {
if (result.compliance_screening.total_hits === 0) {
console.log('✓ Identity verified - No compliance hits');
} else {
console.log(`⚠ Compliance hits detected: ${result.compliance_screening.total_hits}`);
console.log('Generating PDF report...');
// Generate encrypted PDF report
const reportResponse = await axios.post(
'https://app.verifyhuman.io/api/kyc/v1/generate_report',
{
verification_id: result.verification_id,
report_password: 'SecurePassword123'
},
{
headers: {
'X-API-Key': 'vhk-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6',
'Content-Type': 'application/json'
}
}
);
const report = reportResponse.data;
// Save encrypted PDF
const pdfBuffer = Buffer.from(report.pdf_base64, 'base64');
fs.writeFileSync(`compliance_report_${result.verification_id}.pdf`, pdfBuffer);
console.log(`✓ Report saved: compliance_report_${result.verification_id}.pdf`);
}
} else {
console.log('✗ Verification failed:', result.error);
}
})
.catch(error => {
console.error('API error:', error.response.data);
});
🔒 Privacy & Security
Zero-Storage Policy
⚠️ PRIVACY GUARANTEE: VerifyCompliance never stores biometric data or images.
What We Store:
- Verification ID and timestamp
- Verification status (verified/failed)
- Compliance hit/no-hit status
- Match count only (not raw screening data)
What We Never Store:
- Selfie images
- ID document images
- Facial recognition data
- Biometric templates
- Raw compliance screening data
Compliance Screening Privacy
- Hit/No-Hit Only: We only store whether matches were found, not the raw data
- On-Demand Reports: Full screening details only available via encrypted PDF
- AES-256 Encryption: All reports encrypted with industry-standard encryption
- One-Time Access: Reports generated on-demand, not stored permanently
- No PII Logging: Personal information never logged or retained
Data Retention
We retain minimal metadata for compliance:
- Verification ID
- Timestamp
- Hit/no-hit status
- Match count (if hits detected)
- Report generation timestamp (if generated)
No raw data (images, biometrics, or full screening results) is retained.
📊 Pricing & Credits
- Credit Cost: 50 credits per verification (includes compliance screening)
- Report Generation: No additional credits (free with Pro/Enterprise)
- Plan Requirement: Pro or Enterprise plan required
What Counts as a Verification:
- Each API call to
/api/kyc/v1/submit_pluscounts as one verification - Credits consumed whether verification passes or fails
- Compliance screening included in credit cost
- No extra charge for report generation
Plan Pricing:
- Pro Plan: $399/month - 100,000 credits (~2,000 verifications)
- Enterprise Plan: Custom pricing - Unlimited credits
❓ FAQ
General Questions
Q: What's the difference between VerifyIdentity and VerifyCompliance?
A:
- VerifyIdentity (30 credits): KYC only - selfie + ID matching
- VerifyCompliance (50 credits): KYC + AML/PEP/Sanctions screening
Choose VerifyCompliance if you need regulatory compliance for financial services.
Q: Which plans include VerifyCompliance?
A: VerifyCompliance is available exclusively on Pro and Enterprise plans. Free, Starter, and Growth plans can use VerifyIdentity instead.
Q: What databases are screened?
A: We screen against:
- OFAC SDN List (US sanctions)
- UN Consolidated List
- EU Sanctions List
- PEP databases (global)
- AML watchlists
- RCA (relatives and close associates)
Technical Questions
Q: How long does compliance screening take?
A: VerifyCompliance typically completes in 5-8 seconds:
- KYC verification: ~3-4 seconds
- Compliance screening: ~2-3 seconds
- Report generation (if requested): ~3-5 seconds
Q: What happens if there are compliance hits?
A: The API returns verified: false with total_hits count and basic match information. You can then:
- Flag the user for manual review
- Generate encrypted PDF report with full details
- Decide whether to approve/reject based on your risk policy
Q: Can I customize screening sensitivity?
A: Not currently. Our screening uses industry-standard match thresholds. Contact Enterprise sales for custom screening configurations.
Q: Is the gender field required?
A: No, but it's recommended. Providing gender improves screening match accuracy by 10-15%.
Compliance Questions
Q: Is VerifyCompliance GDPR/CCPA compliant?
A: Yes. We process data in-memory only and never store biometric information. Only minimal metadata is retained for compliance purposes.
Q: Do I need to generate reports for all verifications?
A: No. Reports are optional and typically only generated for verifications with compliance hits. Use reports for audit trails, regulatory submissions, or internal review.
Q: How long are reports available?
A: Reports are generated on-demand and not stored permanently. Generate reports immediately after verification if needed for your records.
Q: Can I use VerifyCompliance for FATF compliance?
A: Yes. VerifyCompliance meets FATF (Financial Action Task Force) recommendations for KYC/AML screening. Consult with legal counsel to ensure compliance with your specific jurisdiction.
🔧 Error Handling
Common Error Responses
Plan Restriction:
{
"error": "VerifyCompliance requires Pro or Enterprise plan",
"status": "ERROR",
"upgrade_url": "https://app.verifyhuman.io/dashboard/billing"
}
Insufficient Credits:
{
"error": "Insufficient credits",
"status": "ERROR",
"credits_remaining": 10,
"credits_required": 15
}
Invalid API Key:
{
"error": "This endpoint requires a VerifyCompliance API key",
"status": "ERROR",
"hint": "Generate a unified API key with verifycompliance scope (vhk-...) from your dashboard"
}
Report Not Available:
{
"error": "No compliance hits found for this verification",
"status": "ERROR",
"message": "Reports are only available for verifications with compliance hits"
}
📞 Support
Need help with VerifyCompliance?
- Email: support@verifyhuman.io
- Enterprise Sales: sales@verifyhuman.io
- Documentation: docs.verifyhuman.io
- API Reference: docs.verifyhuman.io/api
- Dashboard: app.verifyhuman.io/dashboard
📚 Related Documentation
- API Reference
- VerifyIdentity Guide (KYC without compliance)
- Getting Started Guide
- Authentication Guide
- Pricing & Plans