Inventory & Stock Control
Multi-warehouse tracking, batches, barcode labels, and valuation
What Inventory is for
Inventory tracks products, quantities, warehouses, batches, expiry and stock movement. Sales, Purchasing and POS use this shared stock position.
Set up Inventory first
Create the stock structure before recording movement.
- WarehousesOpen ↗
Create each physical stock location and choose the default.
- ProductsOpen ↗
Set names, SKUs, units, prices and tracking requirements.
- Opening stockOpen ↗
Enter the quantity already on hand once, before live activity.
- Batches and expiryOpen ↗
Enable lot tracking for products that require traceability or expiry control.
How stock moves
Normal business documents should create normal stock movement.
- 1Opening stock / Purchase
- 2Available stock
- 3Sales / POS
- 4Remaining stock
Day-to-day inventory controls
Use the operational screen that matches the event instead of changing stock directly.
- Receiving
Confirm delivered quantities, warehouse, lots and expiry when goods arrive.
Open ↗ - Transfers
Move stock between warehouses while preserving the movement history.
Open ↗ - Stock counts
Count physical stock, investigate differences and post the verified count to the ledger.
Open ↗ - Expiry management
Review expiring and expired lots; expired lots are skipped at checkout and should be handled through the supported write-off workflow.
Open ↗
What each stock action records
Every confirmed inventory action creates a traceable stock-ledger movement. Review the resulting movement rather than entering another adjustment.
- After receiving
- Available quantity increases in the selected warehouse. Batch-tracked products require the lot information used for later allocation.
- After a sale or POS checkout
- Available quantity decreases. For tracked lots, checkout allocates non-expired stock using the product’s lot rules, including FEFO behavior supported by KhataPal.
- After a transfer
- Quantity leaves the source location and becomes available at the destination through the recorded transfer trail.
- After a posted stock count or adjustment
- The verified difference is posted to the stock ledger with its reason; it does not replace the history that produced the previous balance.
Inventory value and reporting
Quantity and value answer different questions. Use Stock Levels for what is available, Stock Ledger for why it changed, and Inventory Reports for movement and value. KhataPal supports the configured inventory valuation behavior; use a consistent method for similar inventory and review damaged, obsolete or expired stock rather than leaving it at an unrealistic value.
Common inventory mistakes
Check these points before changing stock or correcting a difference.
- Do not use adjustments for normal purchases or sales
Receive purchases and correct sales through their originating workflows so stock and accounting remain connected.
- Do not enter opening stock twice
Opening stock establishes the starting position once; later changes need a receipt, sale, transfer, count or justified adjustment.
- Do not create duplicate products
Search existing products, SKUs, barcodes and variants before creating another record for the same item.
- Keep units consistent
Confirm purchasing, stocking, packaging and selling units before live movement begins.
- Investigate before adjusting
Review the Stock Ledger, source documents, warehouse and date range before posting a correction.
- Do not ignore batches and expiry
Tracked products need the correct lot, expiry and quantity so allocation and write-off behavior remain reliable.
Troubleshooting stock differences
Review Stock Levels to confirm the symptom, then use Stock Ledger to identify the movement that caused it. Check receipts, sales, transfers, counts, warehouse and batch allocations before posting an adjustment. If the source cannot be identified, contact support with the product, warehouse, date range and affected document reference.
Still stuck? Contact support
