Dashboard

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


🔒 Plan Availability

VerifyCompliance is available exclusively on Pro and Enterprise plans.

Free, Starter, and Growth plans have access to:

Upgrade to Pro to access VerifyCompliance.


🚀 Quick Start

1. Get Your VerifyCompliance API Key

  1. Upgrade to Pro or Enterprise plan
  2. Log in to your dashboard
  3. Go to API Keys section
  4. Select "VerifyCompliance (KYC+)" scope for your API key
  5. Create your API key (format: vhk-{32chars})
  6. 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:

  1. Face detection on selfie (liveness)
  2. Extract text from ID using OCR
  3. Compare selfie face with ID photo
  4. Extract name and DOB from ID
  5. Perform AML/PEP/Sanctions screening
  6. 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:


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:

Encryption:

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:

Benefits:

2. Banking & Financial Services

Verify customers before opening accounts or processing large transactions.

Implementation:

Benefits:

3. Payment Processors & Fintechs

Screen merchants and users before payment processing.

Implementation:

Benefits:

4. Real Estate & High-Value Transactions

Verify buyer/seller identity for property transactions.

Implementation:

Benefits:


💻 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:

What We Never Store:

Compliance Screening Privacy

Data Retention

We retain minimal metadata for compliance:

No raw data (images, biometrics, or full screening results) is retained.


📊 Pricing & Credits

What Counts as a Verification:

Plan Pricing:

View Detailed Pricing


❓ FAQ

General Questions

Q: What's the difference between VerifyIdentity and VerifyCompliance?

A:

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:

Technical Questions

Q: How long does compliance screening take?

A: VerifyCompliance typically completes in 5-8 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:

  1. Flag the user for manual review
  2. Generate encrypted PDF report with full details
  3. 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?