Everything you need to integrate KCS Business Services APIs into your application.
Extract structured data from receipt images and PDFs. Returns vendor info, line items, totals, tax, and payment method.
Validate and extract data from South African identity documents including ID cards, passports, and driver's licenses.
Verify South African ID numbers against the Department of Home Affairs database for identity confirmation.
Verify matric certificates and academic qualifications through the Umalusi verification system.
Retrieve and verify employment history records for background screening and compliance checks.
Request criminal record checks for pre-employment screening and compliance verification.
All KCS Business Services APIs follow the same authentication and token-based billing pattern. Here are the key concepts you need to get started.
All API requests require an API key passed in the Authorization header as a Bearer token. API keys are scoped to your account and can be managed from the dashboard.
Authorization: Bearer sk_live_your_api_keyKeep your API keys secret. Do not share them in client-side code, public repositories, or anywhere publicly accessible. If a key is compromised, revoke it immediately from the dashboard.
KCS Business Services uses a token-based billing model. Each API call consumes a set number of tokens depending on the service used. You receive 10 free tokens when you sign up.
| Service | Tokens per Call | Status |
|---|---|---|
| Receipt OCR | 1 token | Available |
| SA Document Validator | 2 tokens | Available |
| ID Verification | 3 tokens | Coming Soon |
| Umalusi Verification | 5 tokens | Coming Soon |
| Employment History | 5 tokens | Coming Soon |
| Criminal Record Check | 10 tokens | Coming Soon |
Purchase additional tokens from the Tokens page in the dashboard. Token packs are available in the following sizes:
| Pack | Tokens | Price (ZAR) | Per Token |
|---|---|---|---|
| Starter | 100 | R49 | R0.49 |
| Growth | 400 | R149 | R0.37 |
| Pro | 1,000 | R299 | R0.30 |
| Enterprise | 4,000 | R999 | R0.25 |
All error responses follow a consistent format with success: false and an error object containing the code, message, and HTTP status.
{
"success": false,
"error": {
"code": "INSUFFICIENT_TOKENS",
"message": "Not enough tokens. Balance: 0, required: 1.",
"status": 402
}
}| Status | Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Invalid request format or missing required fields. |
| 401 | UNAUTHORIZED | Missing or invalid API key. |
| 402 | INSUFFICIENT_TOKENS | Not enough tokens to process the request. |
| 403 | FORBIDDEN | API key has been revoked or account is suspended. |
| 404 | NOT_FOUND | The requested endpoint does not exist. |
| 413 | FILE_TOO_LARGE | File exceeds the maximum allowed size. |
| 415 | UNSUPPORTED_TYPE | File type is not supported for this endpoint. |
| 422 | PROCESSING_FAILED | Could not process the uploaded file. |
| 429 | RATE_LIMITED | Too many requests. Check rate limit headers. |
| 500 | INTERNAL_ERROR | An unexpected server error occurred. |