Verify business registration and company documents including BIN certificates, company registration, and memorandums.
Overview
The Business Verification service provides comprehensive business entity document processing with AI-powered data extraction from company registration documents.
Base Path: /v1/business
Available Endpoints
Extract structured data from business registration documents including company name, registration number, directors, and incorporation details.
Endpoint: POST /v1/business/scan
What it does:
Extracts company name, BIN, registration number
Identifies directors and shareholders
Captures registration date and business type
Multi-document correlation
Supported Documents:
BIN Certificate (Business Identification Number)
Memorandum of Association
Company Registration Certificate
Certificate of Incorporation
Business License
CIPA Company Profile
Request:
Response:
{
"status" : "success" ,
"totalDocuments" : 2 ,
"processingTime" : "3.2s" ,
"extractedData" : {
"companyName" : "ABC Trading (Pty) Ltd" ,
"binNumber" : "BIN123456789" ,
"registrationNumber" : "REG-2010-1234" ,
"registrationDate" : "2010-05-15" ,
"directors" : [ "John Doe" , "Jane Smith" ],
"shareholders" : [ "John Doe" , "Jane Smith" ],
"businessType" : "Private Company" ,
"registeredAddress" : "123 Main Street, Gaborone" ,
"authorizedCapital" : "BWP 100,000"
},
"confidence" : 95.5 ,
"documentType" : "BIN_CERTIFICATE" ,
"verificationType" : "ENTITY"
}
Use Cases:
Business account opening
Vendor onboarding
Supplier verification
Contract due diligence
Corporate KYC compliance
Pricing: BWP 5-8 per scan
Business Verify - Validate Against CIPA Registry
Validate extracted business data against the CIPA (Companies and Intellectual Property Authority) registry.
Endpoint: POST /v1/business/verify
Status: Coming Q2 2026
What it will do:
Verify company exists in CIPA registry
Confirm registration details match official records
Check company status (Active, Dissolved, Suspended)
Validate directors and shareholders
Verify business license validity
Check compliance status
Multi-Document Processing
Business verification often requires multiple documents. The system can process and correlate information across documents:
Example: Complete Business Verification
The system will:
Extract data from each document
Correlate information across documents
Validate consistency
Return consolidated company information
Company Information
Company name (legal name)
Trading name (if different)
BIN (Business Identification Number)
Company registration number
Registration date
Business type (Pty Ltd, Ltd, Partnership, etc.)
Incorporation country
Directors & Shareholders
Full names
Nationality
ID/Passport numbers (if available)
Shareholding percentages
Appointment dates
Business Details
Registered address
Physical address
Postal address
Authorized capital
Issued capital
Nature of business
Industry classification
Compliance
Tax clearance status (if included)
License numbers
Regulatory approvals
Expiry dates
Best Practices
Document Quality
For optimal results:
Clear, legible text - all text readable
Complete documents - include all pages
Official documents - use certified copies when possible
Recent documents - within last 12 months preferred
High resolution - minimum 1200x800 pixels
Multi-Document Strategy
Submit related documents together for better correlation:
// Good: Submit all business docs together
const formData = new FormData ();
formData. append ( 'documents' , binCertificate);
formData. append ( 'documents' , memorandum);
formData. append ( 'documents' , companyProfile);
await scanBusiness (formData);
Error Handling
Handle different scenarios appropriately:
const response = await scanBusiness (documents);
if (response.confidence < 75 ) {
// Low confidence - request better quality documents
alert ( 'Document quality insufficient. Please provide clearer copies.' );
} else if ( ! response.extractedData.binNumber) {
// Missing critical information
alert ( 'BIN number not found. Please include BIN certificate.' );
} else if (response.extractedData.registrationDate < '2000-01-01' ) {
// Data validation
await flagForReview ( 'Unusual registration date' );
} else {
// Proceed with verification
await processBusinessData (response.extractedData);
}
Integration Examples
JavaScript
async function scanBusiness ( files ) {
const formData = new FormData ();
// Add multiple files
files. forEach ( file => {
formData. append ( 'documents' , file);
});
const response = await fetch ( 'https://api.botskyc.com/v1/business/scan' , {
method: 'POST' ,
headers: {
'Authorization' : `Bearer ${ process . env . BOTSKYC_API_KEY }`
},
body: formData
});
if ( ! response.ok) {
const error = await response. json ();
throw new Error (error.message);
}
return response. json ();
}
// Usage
const result = await scanBusiness ([binCert, memorandum]);
console. log ( 'Company:' , result.extractedData.companyName);
console. log ( 'Directors:' , result.extractedData.directors);
Python
import requests
import os
def scan_business (file_paths):
api_key = os.getenv( 'BOTSKYC_API_KEY' )
files = []
for path in file_paths:
files.append(( 'documents' , open (path, 'rb' )))
response = requests.post(
'https://api.botskyc.com/v1/business/scan' ,
headers = { 'Authorization' : f 'Bearer { api_key } ' },
files = files
)
response.raise_for_status()
return response.json()
# Usage
result = scan_business([
'bin-certificate.pdf' ,
'memorandum.pdf'
])
print ( f "Company: { result[ 'extractedData' ][ 'companyName' ] } " )
print ( f "BIN: { result[ 'extractedData' ][ 'binNumber' ] } " )
TypeScript
interface BusinessData {
companyName : string ;
binNumber : string ;
registrationNumber : string ;
registrationDate : string ;
directors : string [];
shareholders : string [];
businessType : string ;
registeredAddress : string ;
}
interface BusinessScanResponse {
status : 'success' | 'error' ;
totalDocuments : number ;
extractedData : BusinessData ;
confidence : number ;
documentType : string ;
}
async function scanBusiness ( files : File []) : Promise < BusinessScanResponse > {
const formData = new FormData ();
files. forEach ( file => formData. append ( 'documents' , file));
const response = await fetch ( 'https://api.botskyc.com/v1/business/scan' , {
method: 'POST' ,
headers: {
'Authorization' : `Bearer ${ process . env . BOTSKYC_API_KEY }`
},
body: formData
});
if ( ! response.ok) {
throw new Error ( `Business scan failed: ${ response . status }` );
}
return response. json ();
}
// Usage with type safety
const result = await scanBusiness ([binFile, memorandumFile]);
const companyName : string = result.extractedData.companyName;
Validation & Compliance
Pre-Verification Checks
Before sending documents for verification:
function validateBusinessDocuments ( files ) {
const errors = [];
// Check file count
if (files. length === 0 ) {
errors. push ( 'At least one document required' );
}
// Check file types
files. forEach ( file => {
const validTypes = [ 'application/pdf' , 'image/jpeg' , 'image/png' ];
if ( ! validTypes. includes (file.type)) {
errors. push ( `Invalid file type: ${ file . name }` );
}
});
// Check file sizes
files. forEach ( file => {
if (file.size > 10 * 1024 * 1024 ) { // 10MB
errors. push ( `File too large: ${ file . name }` );
}
});
return errors;
}
// Usage
const errors = validateBusinessDocuments (files);
if (errors. length > 0 ) {
alert ( 'Validation errors: ' + errors. join ( ', ' ));
} else {
await scanBusiness (files);
}
Validate extracted data against business rules:
function validateBusinessData ( data ) {
const warnings = [];
// Check BIN format (should be 9-13 digits)
if ( ! / ^ \d {9,13}$ / . test (data.binNumber)) {
warnings. push ( 'BIN format may be incorrect' );
}
// Check registration date is reasonable
const regDate = new Date (data.registrationDate);
if (regDate > new Date ()) {
warnings. push ( 'Registration date is in the future' );
}
// Check directors present
if ( ! data.directors || data.directors. length === 0 ) {
warnings. push ( 'No directors found' );
}
return warnings;
}
Response Format
interface BusinessScanResponse {
status : "success" | "error" ;
totalDocuments : number ;
processingTime ?: string ;
extractedData : {
companyName : string ;
binNumber : string ;
registrationNumber : string ;
registrationDate : string ;
directors : string [];
shareholders : string [];
businessType : string ;
registeredAddress : string ;
authorizedCapital ?: string ;
issuedCapital ?: string ;
natureOfBusiness ?: string ;
};
confidence : number ;
documentType : string ;
verificationType : string ;
errorCode ?: number ;
message ?: string ;
}
Error Codes
Code Status Message Resolution 200 Success Business documents processed - 400 Bad Request Invalid file or parameters Check file format and request 422 Unprocessable Low confidence or missing data Provide clearer documents 500 Server Error Processing error Contact support
Pricing
Service Price per Request Volume Discount Business Scan BWP 5-8 Available for 500+ requests/month Business Verify TBD (Q2 2026) -
Contact [email protected] for volume pricing.
Roadmap
Coming Q2 2026
Business Verify Service
Real-time CIPA registry validation
Company status verification
Director validation
Shareholder verification
Compliance status checks
Historical company information
Enhanced Features
Financial statement analysis
Tax compliance verification
UBO (Ultimate Beneficial Owner) identification
Sanctions screening for company and directors
Support
Related Documentation:
Last modified on November 30, 2025