Code Data API
Manage code classifications and synchronize reference data from VSCU system.
Overview
The Code Data API provides access to various code classifications used throughout the system, including tax types, payment methods, countries, currencies, and more. These codes are synchronized from the VSCU system and stored locally for fast access.
Sync Codes
Synchronize code classifications from VSCU to the local database.
/api/v1/codes/syncSync Codes
Synchronize code classifications from VSCU to the local database. This fetches all reference data needed for transactions.
Field Descriptions
| Field | Type | Required | Description |
|---|---|---|---|
bhf_id | string | Yes | Branch identifier |
last_req_dt | string | No | Last request datetime in YYYYMMDDHHmmss format (default: “20180520000000”) |
Response
Status: 200 OK
{
"status": "success",
"message": "Codes synced successfully",
"data": {
"synced_classes": 18,
"synced_details": 245,
"synced_at": "2024-01-15T14:30:30Z"
}
}Error Responses
404 Not Found - Branch not found:
{
"status": "error",
"message": "Branch not found"
}400 Bad Request - VSCU device not configured:
{
"status": "error",
"message": "VSCU device not configured for this branch"
}Get All Code Classifications
Retrieve all code classifications with their details.
/api/v1/codesGet All Codes
Retrieve all code classifications with their details.
statusFilter by status: active, inactive, or all (default: active)
Response
Status: 200 OK
{
"status": "success",
"data": [
{
"id": 1,
"cd_cls": "04",
"cd_cls_nm": "Taxation Type",
"cd_cls_desc": "Tax classification codes",
"use_yn": "Y",
"user_dfn_nm1": null,
"user_dfn_nm2": null,
"user_dfn_nm3": null,
"last_synced_at": "2024-01-15T14:30:30Z",
"active_details": [
{
"id": 1,
"code_class_id": 1,
"cd": "A",
"cd_nm": "Exempted",
"cd_desc": "Tax exempted items",
"use_yn": "Y",
"srt_ord": 1,
"user_dfn_cd1": null,
"user_dfn_cd2": null,
"user_dfn_cd3": null
}
]
}
],
"meta": {
"total": 18,
"timestamp": "2024-01-15T14:30:30Z"
}
}Get Specific Code Class
Retrieve a specific code classification by its code.
/api/v1/codes/{cdCls}Get Code Class
Retrieve a specific code classification by its code.
cdCls*Code class identifier (e.g., '04', '05', '08')
Response
Status: 200 OK
{
"status": "success",
"data": {
"id": 1,
"cd_cls": "04",
"cd_cls_nm": "Taxation Type",
"cd_cls_desc": "Tax classification codes",
"use_yn": "Y",
"details": [
{
"id": 1,
"cd": "A",
"cd_nm": "Exempted",
"cd_desc": "Tax exempted items",
"use_yn": "Y",
"srt_ord": 1
}
]
}
}404 Not Found:
{
"status": "error",
"message": "Code class not found"
}Get Tax Types
Retrieve tax type codes (Taxation Type - cdCls: 04).
/api/v1/codes/tax-typesGet Tax Types
Retrieve tax type codes used for classifying items by tax category.
Response
Status: 200 OK
{
"status": "success",
"data": [
{
"code": "A",
"name": "Exempted",
"description": "Tax exempted items",
"user_defined_1": null,
"user_defined_2": null,
"user_defined_3": null,
"sort_order": 1
},
{
"code": "B",
"name": "Standard Rate",
"description": "16% VAT",
"user_defined_1": null,
"user_defined_2": null,
"user_defined_3": null,
"sort_order": 2
}
],
"meta": {
"total": 5,
"code_class": "Taxation Type",
"last_synced": "2024-01-15T14:30:30Z",
"timestamp": "2024-01-15T14:30:30Z"
}
}Get Countries
Retrieve country codes (Country - cdCls: 05).
/api/v1/codes/countriesGet Countries
Retrieve country codes for origin/destination classification.
Get Payment Types
Retrieve payment type codes (Payment Type - cdCls: 03).
/api/v1/codes/payment-typesGet Payment Types
Retrieve payment type codes used in sales and purchase transactions.
Response Example
{
"status": "success",
"data": [
{
"code": "01",
"name": "Cash",
"description": "Cash payment",
"user_defined_1": null,
"user_defined_2": null,
"user_defined_3": null,
"sort_order": 1
},
{
"code": "02",
"name": "Card",
"description": "Card payment",
"user_defined_1": null,
"user_defined_2": null,
"user_defined_3": null,
"sort_order": 2
}
],
"meta": {
"total": 10,
"code_class": "Payment Type",
"last_synced": "2024-01-15T14:30:30Z",
"timestamp": "2024-01-15T14:30:30Z"
}
}Get Packaging Units
Retrieve packaging unit codes (Packing Unit - cdCls: 17).
/api/v1/codes/packaging-unitsGet Packaging Units
Retrieve packaging unit codes for item classification.
Get Quantity Units
Retrieve quantity unit codes (Quantity Unit - cdCls: 10).
/api/v1/codes/quantity-unitsGet Quantity Units
Retrieve quantity/measurement unit codes.
Get Item Types
Retrieve item type codes (Item Type - cdCls: 09).
/api/v1/codes/item-typesGet Item Types
Retrieve item type codes (Raw Material, Finished Product, Service).
Get Currencies
Retrieve currency codes (Currency - cdCls: 11).
/api/v1/codes/currenciesGet Currencies
Retrieve currency codes for multi-currency transactions.
Response Example
{
"status": "success",
"data": [
{
"code": "KES",
"name": "Kenyan Shilling",
"description": "Kenya Shilling",
"user_defined_1": null,
"user_defined_2": null,
"user_defined_3": null,
"sort_order": 1
},
{
"code": "USD",
"name": "US Dollar",
"description": "United States Dollar",
"user_defined_1": null,
"user_defined_2": null,
"user_defined_3": null,
"sort_order": 2
}
],
"meta": {
"total": 15,
"code_class": "Currency",
"last_synced": "2024-01-15T14:30:30Z",
"timestamp": "2024-01-15T14:30:30Z"
}
}Get Branch Statuses
Retrieve branch status codes (Branch Status - cdCls: 02).
/api/v1/codes/branch-statusesGet Branch Statuses
Retrieve branch operational status codes.
Get Sale Statuses
Retrieve sale status codes (Sale Status - cdCls: 06).
/api/v1/codes/sale-statusesGet Sale Statuses
Retrieve sale transaction status codes.
Get Purchase Statuses
Retrieve purchase status codes (Purchase Status - cdCls: 12).
/api/v1/codes/purchase-statusesGet Purchase Statuses
Retrieve purchase transaction status codes.
Get Stock I/O Types
Retrieve stock input/output type codes (Stock I/O Type - cdCls: 07).
/api/v1/codes/stock-io-typesGet Stock I/O Types
Retrieve stock movement type codes (stock in, stock out, adjustment).
Get Transaction Types
Retrieve transaction type codes (Transaction Type - cdCls: 08).
/api/v1/codes/transaction-typesGet Transaction Types
Retrieve transaction category codes.
Get Import Item Statuses
Retrieve import item status codes (Import Item Status - cdCls: 10).
/api/v1/codes/import-item-statusesGet Import Item Statuses
Retrieve import item status codes.
Get Refund Reasons
Retrieve refund reason codes (Refund Reason - cdCls: 11).
/api/v1/codes/refund-reasonsGet Refund Reasons
Retrieve refund reason codes for credit notes and returns.
Get Inventory Adjustment Reasons
Retrieve inventory adjustment reason codes (Reason of Inventory Adjustment - cdCls: 13).
/api/v1/codes/inventory-adjustment-reasonsGet Inventory Adjustment Reasons
Retrieve reason codes for stock adjustments.
Get Banks
Retrieve bank codes (Bank - cdCls: 14).
/api/v1/codes/banksGet Banks
Retrieve bank codes for payment processing.
Get Sales Receipt Types
Retrieve sales receipt type codes (Sales Receipt Type - cdCls: 15).
/api/v1/codes/sales-receipt-typesGet Sales Receipt Types
Retrieve receipt type codes for sales transactions.
Get Purchase Receipt Types
Retrieve purchase receipt type codes (Purchase Receipt Type - cdCls: 16).
/api/v1/codes/purchase-receipt-typesGet Purchase Receipt Types
Retrieve receipt type codes for purchase transactions.
Get Tax Offices
Retrieve tax office codes (Tax Office - cdCls: 17).
/api/v1/codes/tax-officesGet Tax Offices
Retrieve KRA tax office identifier codes.
Get Locales
Retrieve locale codes (LOCALE - cdCls: 18).
/api/v1/codes/localesGet Locales
Retrieve locale/language codes.
Get Item Classes for Select Dropdown
Retrieve item classification codes formatted for select dropdowns.
/api/v1/codes/item-classes/selectGet Item Classes (Select Format)
Retrieve item classification codes formatted for UI select dropdowns.
searchSearch term to filter results
Response
Status: 200 OK
{
"status": "success",
"data": [
{
"value": "1",
"label": "1 - Raw Material",
"code": "1",
"name": "Raw Material"
},
{
"value": "2",
"label": "2 - Finished Product",
"code": "2",
"name": "Finished Product"
},
{
"value": "3",
"label": "3 - Service",
"code": "3",
"name": "Service"
}
],
"meta": {
"total": 3,
"search": null,
"timestamp": "2024-01-15T14:30:30Z"
}
}Code Classification Reference
| cdCls | Name | Description | Endpoint |
|---|---|---|---|
| 02 | Branch Status | Branch operational status | /codes/branch-statuses |
| 03 | Payment Type | Payment method types | /codes/payment-types |
| 04 | Taxation Type | Tax classification | /codes/tax-types |
| 05 | Country | Country codes | /codes/countries |
| 06 | Sale Status | Sales transaction status | /codes/sale-statuses |
| 07 | Stock I/O Type | Stock movement types | /codes/stock-io-types |
| 08 | Transaction Type | Transaction categories | /codes/transaction-types |
| 09 | Item Type | Item classifications | /codes/item-types |
| 10 | Quantity Unit | Measurement units | /codes/quantity-units |
| 11 | Currency | Currency codes | /codes/currencies |
| 12 | Purchase Status | Purchase transaction status | /codes/purchase-statuses |
| 13 | Inventory Adjustment Reason | Stock adjustment reasons | /codes/inventory-adjustment-reasons |
| 14 | Bank | Bank codes | /codes/banks |
| 15 | Sales Receipt Type | Receipt type for sales | /codes/sales-receipt-types |
| 16 | Purchase Receipt Type | Receipt type for purchases | /codes/purchase-receipt-types |
| 17 | Tax Office | Tax office identifiers | /codes/tax-offices |
| 18 | LOCALE | Locale/language codes | /codes/locales |
Code Examples
JavaScript
const axios = require('axios');
const apiKey = process.env.CTAX_API_KEY;
const baseURL = 'https://c-tax.1809ltd.co.ke/api/v1';
// Sync codes from VSCU
const syncData = {
bhf_id: '00',
last_req_dt: '20180520000000'
};
const response = await axios.post(`${baseURL}/codes/sync`, syncData, {
headers: { Authorization: `Bearer ${apiKey}` }
});
console.log(`Synced ${response.data.data.synced_classes} classes`);
// Get payment types
const paymentTypes = await axios.get(`${baseURL}/codes/payment-types`, {
headers: { Authorization: `Bearer ${apiKey}` }
});
paymentTypes.data.data.forEach(type => {
console.log(`${type.code}: ${type.name}`);
});
// Get item classes for dropdown
const itemClasses = await axios.get(`${baseURL}/codes/item-classes/select`, {
params: { search: 'product' },
headers: { Authorization: `Bearer ${apiKey}` }
});PHP
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://c-tax.1809ltd.co.ke/api/v1/',
'headers' => [
'Authorization' => 'Bearer ' . env('CTAX_API_KEY'),
'Content-Type' => 'application/json',
],
]);
// Sync codes
$data = [
'bhf_id' => '00',
'last_req_dt' => '20180520000000',
];
$response = $client->post('codes/sync', ['json' => $data]);
$result = json_decode($response->getBody(), true);
echo "Synced {$result['data']['synced_classes']} classes";
// Get tax types
$response = $client->get('codes/tax-types');
$taxTypes = json_decode($response->getBody(), true);
foreach ($taxTypes['data'] as $type) {
echo "{$type['code']}: {$type['name']}\n";
}Python
import requests
import os
api_key = os.environ['CTAX_API_KEY']
base_url = 'https://c-tax.1809ltd.co.ke/api/v1'
headers = {'Authorization': f'Bearer {api_key}'}
# Sync codes
response = requests.post(
f'{base_url}/codes/sync',
json={'bhf_id': '00', 'last_req_dt': '20180520000000'},
headers=headers
)
print(f"Synced {response.json()['data']['synced_classes']} classes")
# Get tax types
tax_types = requests.get(f'{base_url}/codes/tax-types', headers=headers)
for t in tax_types.json()['data']:
print(f"{t['code']}: {t['name']}")Best Practices
- Sync Regularly - Sync codes periodically to ensure data is up-to-date
- Cache Locally - Code data changes infrequently, cache it client-side
- Handle Missing Codes - Always check for 404 responses and prompt users to sync
- Use Specific Endpoints - Prefer specific endpoints (e.g.,
/tax-types) over fetching all codes - Monitor Sync Status - Check
last_synced_attimestamps to track data freshness - Error Handling - Implement proper error handling for VSCU connectivity issues
Related Endpoints
- Sales API - Uses tax types and payment types
- Items API - Uses item types and quantity units
- Branches API - Uses branch statuses