Skip to main content

Document Verification

Intelligent document verification to analyze and extract data from Botswana identity documents with specialized processing for each document category.

Overviewโ€‹

botsKYC provides comprehensive document verification across six specialized domains, each optimized for specific document types:

  • Identity Documents - Omang, Passport, Driver's License, Residence Permits
  • Address Verification - Utility bills, lease agreements, and proof of residence
  • Income Documents - Payslips, employment contracts, tax certificates
  • Business Entity - Company registration, BIN certificates, memorandum
  • Compliance Documents - Tax clearance, authorisation letters
  • Multi-Purpose Documents - Bank statements, employment letters

Document Categoriesโ€‹

1. Identity Documentsโ€‹

Verify identity documents including Omang, Passport, Driver's License, and Residence Permits.

Supported Documents:

  • ๐Ÿ†” Omang (Botswana National ID)
  • ๐Ÿ›‚ Passport
  • ๐Ÿš— Driver's License
  • Residence Permit

API Endpoint:

POST /api/v/kyc/verify/identity
POST /api/kyc/analyze/identity

Request:

curl -X POST https://api.botskyc.com/api/v/kyc/verify/identity \
-F "documents=@omang_front.jpg" \
-F "documents=@omang_back.jpg"

Response:

{
"status": "success",
"totalDocuments": 2,
"processingTime": "2.8s",
"extractedData": {
"name": "John Doe",
"idNumber": "123456789",
"dateOfBirth": "1990-01-15",
"nationality": "Botswana",
"gender": "Male",
"expiryDate": "2030-01-15"
},
"confidence": 98.5,
"documentType": "OMANG",
"verificationType": "IDENTITY"
}

Key Features:

  • Automatic front/back merging
  • Batch processing for multiple files
  • Fast single document processing
  • Smart document classification

2. Address Verificationโ€‹

Verify proof of residence documents.

Supported Documents:

  • Utility Bills (Water, Electricity, Internet)
  • ๐Ÿ  Lease Agreements
  • Landlord Letters
  • Council Bills
  • Affidavits
  • Kgotla Letters

API Endpoint:

POST /api/v/kyc/verify/address
POST /api/kyc/analyze/proof-of-residence

Request:

curl -X POST https://api.botskyc.com/api/v/kyc/verify/address \
-F "documents=@utility_bill.pdf"

Response:

{
"status": "success",
"totalDocuments": ,
"extractedData": {
"name": "John Doe",
"address": "123 Main Street, Gaborone",
"issueDate": "2025-01-10",
"accountNumber": "ACC-123456"
},
"confidence": 96.,
"documentType": "UTILITY_BILL",
"verificationType": "ADDRESS"
}

Key Features:

  • PDF and image support
  • Multi-page document handling
  • Address standardization
  • Date validation

3. Income Verificationโ€‹

Verify income-related documents.

Supported Documents:

  • ๐Ÿ’ฐ Pay Slips
  • Employment Contracts
  • ๐Ÿ“Š P60 Forms
  • ๐Ÿงพ Tax Certificates (IT)
  • Proof of Income Letters

API Endpoint:

POST /api/v/kyc/verify/income
POST /api/kyc/analyze/income

Request:

curl -X POST https://api.botskyc.com/api/v/kyc/verify/income \
-F "documents=@payslip.pdf"

Response:

{
"status": "success",
"totalDocuments": ,
"extractedData": {
"employeeName": "John Doe",
"employer": "ABC Company Ltd",
"grossSalary": 15000.00,
"netSalary": 12500.00,
"payPeriod": "2025-10",
"taxDeductions": 2500.00
},
"confidence": 97.8,
"documentType": "PAYSLIP",
"verificationType": "INCOME"
}

Key Features:

  • Salary calculation validation
  • Tax deduction verification
  • Multi-month processing
  • Currency normalization

4. Business Entity Verificationโ€‹

Verify business registration and entity documents.

Supported Documents:

  • BIN Certificate (Business Identification Number)
  • ๐Ÿ“œ Memorandum of Association
  • Company Registration Certificate
  • Certificate of Incorporation
  • ๐Ÿ”– Business License

API Endpoint:

POST /api/v/kyc/verify/entity
POST /api/kyc/analyze/entity

Request:

curl -X POST https://api.botskyc.com/api/v/kyc/verify/entity \
-F "documents=@bin_certificate.pdf" \
-F "documents=@memorandum.pdf"

Response:

{
"status": "success",
"totalDocuments": ,
"extractedData": {
"companyName": "ABC Trading (Pty) Ltd",
"binNumber": "BIN123456789",
"registrationNumber": "REG-2010-1234",
"registrationDate": "2010-05-15",
"directors": ["John Doe", "Jane Smith"],
"businessType": "Private Company"
},
"confidence": 95.5,
"documentType": "BIN_CERTIFICATE",
"verificationType": "ENTITY"
}

Key Features:

  • Multi-document correlation
  • Director/shareholder extraction
  • Registration validation
  • Business type classification

5. Compliance Verificationโ€‹

Verify tax and compliance documents.

Supported Documents:

  • Tax Clearance Certificates
  • Company Profiles
  • Authorisation Letters
  • VAT Registration Certificates
  • Board Resolutions
  • ๐Ÿ“Š TIN Certificates

API Endpoint:

POST /api/v/kyc/verify/compliance
POST /api/kyc/analyze/compliance

Request:

curl -X POST https://api.botskyc.com/api/v/kyc/verify/compliance \
-F "documents=@tax_clearance.pdf"

Response:

{
"status": "success",
"totalDocuments": ,
"extractedData": {
"taxpayerName": "ABC Trading (Pty) Ltd",
"tinNumber": "TIN123456789",
"certificateNumber": "TC-2025-10001",
"issueDate": "2025-01-15",
"expiryDate": "2025-12-31",
"status": "COMPLIANT"
},
"confidence": 98.,
"documentType": "TAX_CLEARANCE",
"verificationType": "COMPLIANCE"
}

Key Features:

  • Validity date checking
  • Compliance status verification
  • TIN validation
  • Authority verification

6. Multi-Purpose Documentsโ€‹

Verify versatile document types.

Supported Documents:

  • Bank Statements
  • Employment Letters
  • Reference Letters
  • General Business Documents

API Endpoint:

POST /api/v/kyc/verify/multipurpose
POST /api/kyc/analyze/multipurpose

Request:

curl -X POST https://api.botskyc.com/api/v/kyc/verify/multipurpose \
-F "documents=@bank_statement.pdf"

Response:

{
"status": "success",
"totalDocuments": ,
"extractedData": {
"accountHolder": "John Doe",
"accountNumber": "1234567890",
"bankName": "First National Bank",
"statementPeriod": "2025-10-01 to 2025-10-31",
"openingBalance": 50000.00,
"closingBalance": 48500.00,
"transactions": 45
},
"confidence": 94.8,
"documentType": "BANK_STATEMENT",
"verificationType": "MULTIPURPOSE"
}

Key Features:

  • Flexible schema
  • Transaction extraction
  • Balance validation
  • Multi-format support

Auto-Detectionโ€‹

Smart document routing based on content analysis.

API Endpoint:

POST /api/v/kyc/verify/auto
POST /api/kyc/analyze/auto

How It Works:

  1. System analyzes document content
  2. Classifies document type automatically
  3. Routes to appropriate specialized service
  4. Returns results with classification info

Request:

curl -X POST https://api.botskyc.com/api/v/kyc/verify/auto \
-F "documents=@unknown_document.pdf"

Response:

{
"status": "success",
"totalDocuments": 1,
"detectedType": "IDENTITY",
"routedTo": "IdentityVerificationService",
"extractedData": {
"name": "John Doe",
"idNumber": "123456789"
},
"confidence": 97.5
}

Multi-Format Supportโ€‹

Submission Formatsโ€‹

botsKYC intelligently handles ALL submission formats:

  1. Separate Files - Individual front/back images

    -F "documents=@front.jpg" -F "documents=@back.jpg"
  2. Single PDF - Both sides in one PDF

    -F "documents=@id_card.pdf"
  3. Combined Image - Front and back side-by-side

    -F "documents=@combined.jpg"

Processing Modesโ€‹

  • Batch Mode - Process multiple documents together

    • Classifies documents first
    • Routes to specialized service
    • Merges front/back automatically
  • Single-Pass Mode - Fast processing for single documents

    • Direct processing
    • No classification step
    • Optimal for single documents

Processing Performanceโ€‹

  • Fast processing times
  • ๐Ÿ“Š Handles single or multiple documents
  • Supports PDFs and images

Error Handlingโ€‹

Common Status Codesโ€‹

| Code | Status | Message | |------|--------|---------|| | 200 | Success | Document verified successfully | | 400 | Bad Request | Invalid file format or missing fields | | 422 | Unprocessable | Low confidence or validation failed | | 500 | Server Error | Processing error |

Error Response Exampleโ€‹

{
"status": "error",
"errorCode": 1004,
"message": "Document validation failed: Low confidence score",
"details": {
"confidence": 65.5,
"threshold": 80.0,
"reason": "Poor image quality"
}
}

Best Practicesโ€‹

Image Qualityโ€‹

  • Minimum resolution: 1200x800 pixels
  • Clear, well-lit images
  • No glare or shadows
  • All text legible

File Formatsโ€‹

  • Supported: JPG, JPEG, PNG, PDF
  • Max file size: 10MB per file
  • Max files: 10 per request

Submission Strategyโ€‹

  • Use batch mode for multiple documents
  • Send front/back together
  • Use auto-detection for unknown types
  • Validate file before upload

Integration Examplesโ€‹

cURLโ€‹

# Identity verification
curl -X POST https://api.botskyc.com/api/v/kyc/verify/identity \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "documents=@id_front.jpg" \
-F "documents=@id_back.jpg"

# Auto-detection
curl -X POST https://api.botskyc.com/api/v/kyc/verify/auto \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "documents=@document.pdf"

JavaScriptโ€‹

async function verifyIdentity(files) {
const formData = new FormData();
files.forEach(file => formData.append('documents', file));

const response = await fetch('/api/v/kyc/verify/identity', {
method: 'POST',
body: formData
});

return response.json();
}

Pythonโ€‹

import requests

def verify_document(file_path, doc_type='auto'):
url = f'https://api.botskyc.com/api/v/kyc/verify/{doc_type}'
files = {'documents': open(file_path, 'rb')}

response = requests.post(url, files=files)
return response.json()

Supportโ€‹

For additional assistance: