Skip to main content

Inventory Management

The inventory module tracks banking stationery and consumables — cheque books, deposit slips, teller rolls, branded materials, and other branch supplies. It provides purchase order workflows, stock level monitoring, and low-stock alerts.

Concepts​

ConceptDescription
CategoryGrouping for inventory items (e.g., "Cheque Books", "Deposit Slips", "Teller Supplies")
ItemA specific inventory item with SKU, unit cost, and stock levels
Purchase OrderA request to procure items from a vendor
Stock CountPhysical inventory verification against system records
VendorSupplier of inventory items

List Inventory Items​

GET /api/v1/inventory/items
curl "https://api.korastratum.com/api/v1/cba/inventory/items?category=cheque_books&low_stock=true" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: demo_bank"

Response:

{
"items": [
{
"id": "item-uuid",
"sku": "CHQ-50L-NGN",
"name": "50-Leaf Cheque Book (NGN)",
"category": "cheque_books",
"unit_cost": 2500.00,
"currency": "NGN",
"quantity_on_hand": 45,
"reorder_level": 100,
"reorder_quantity": 500,
"is_low_stock": true,
"branch_id": "branch-uuid",
"vendor_id": "vendor-uuid",
"last_restocked_at": "2026-03-15T10:00:00Z"
}
],
"total": 1
}

Create a Purchase Order​

POST /api/v1/inventory/purchase-orders
curl -X POST https://api.korastratum.com/api/v1/cba/inventory/purchase-orders \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: demo_bank" \
-H "Content-Type: application/json" \
-d '{
"vendor_id": "vendor-uuid",
"branch_id": "branch-uuid",
"items": [
{
"item_id": "item-uuid",
"quantity": 500,
"unit_cost": 2500.00
}
],
"notes": "Quarterly cheque book restock",
"requested_by": "user-uuid"
}'

Purchase order statuses:

StatusDescription
DRAFTCreated, not yet submitted
SUBMITTEDSubmitted for approval
APPROVEDApproved by manager
ORDEREDSent to vendor
RECEIVEDItems received and stocked
CANCELLEDOrder cancelled

Receive Items​

When a purchase order is delivered, receive the items into inventory:

POST /api/v1/inventory/items/receive
{
"purchase_order_id": "po-uuid",
"items": [
{
"item_id": "item-uuid",
"quantity_received": 500,
"condition": "GOOD"
}
],
"received_by": "user-uuid",
"notes": "All items in good condition"
}

This updates quantity_on_hand and marks the purchase order as RECEIVED.

Dashboard Summary​

Get an overview of inventory status across all branches.

GET /api/v1/inventory/dashboard/summary

Response:

{
"total_items": 156,
"total_value": 12500000.00,
"currency": "NGN",
"low_stock_count": 12,
"out_of_stock_count": 3,
"pending_orders": 5,
"categories": [
{ "name": "cheque_books", "item_count": 24, "total_value": 3200000.00 },
{ "name": "deposit_slips", "item_count": 18, "total_value": 450000.00 },
{ "name": "teller_supplies", "item_count": 42, "total_value": 1800000.00 }
]
}

Low-Stock Alerts​

GET /api/v1/inventory/alerts/low-stock

Returns items where quantity_on_hand is at or below reorder_level.

Response:

{
"alerts": [
{
"item_id": "item-uuid",
"sku": "CHQ-50L-NGN",
"name": "50-Leaf Cheque Book (NGN)",
"branch_name": "Head Office",
"quantity_on_hand": 45,
"reorder_level": 100,
"suggested_order_quantity": 500,
"vendor_name": "ABC Printing Ltd"
}
],
"total_alerts": 12
}
tip

Subscribe to the inventory.low_stock webhook event to get notified automatically when items drop below their reorder level, rather than polling this endpoint.

Next Steps​