Stock Ledger & Stock Movements
The stock ledger is the heart of inventory management in Udyamo ERP Lite. It is a perpetual, transaction-level record of every stock movement — every purchase that adds stock, every sale that reduces it, every production run that transforms raw materials into finished goods, every transfer that moves items between locations, and every adjustment that corrects discrepancies.
If the item master (Chapter 7) is your catalog of what you track, and locations (Chapter 9) define where you track it, the stock ledger records how much of each item is at each location and why it changed.
What You Will Learn
- The concept of a stock ledger and perpetual inventory
- The six transaction types that create stock movements
- How each transaction type affects stock quantities
- Running balance calculation
- Batch tracking and expiry date recording
- Reference linking — tracing stock movements back to their source transactions
- How to view and interpret the stock ledger
Prerequisites
- Items are created in the system (Chapter 7)
- Locations are created in the system (Chapter 9)
- You have access to at least one location via user-location assignment
What is a Stock Ledger?
A stock ledger is a chronological record of all quantity changes for every item at every location. Each row in the ledger — called a Stock Ledger Entry — represents a single stock movement. Together, these entries provide a complete audit trail of your inventory from the moment you enter opening balances through every subsequent transaction.
Unlike a periodic system where you count stock at intervals and hope the numbers are right, a perpetual stock ledger updates in real time. When a purchase is received, stock goes up immediately. When an invoice is raised, stock goes down immediately. You never need to wonder what the current stock position is — the ledger tells you.
Transaction Types
Every stock ledger entry has a transaction_type that describes why the stock changed. Udyamo ERP Lite supports six transaction types.
Opening
Opening entries record the stock you had when you started using the system. These are typically entered once during initial setup, representing the physical stock counted before go-live.
| Direction | Effect |
|---|---|
| Inward | Increases stock |
Example: You count 2,500 kg of MS Plate 6mm in the Main Warehouse during setup. You create an opening entry for 2,500 kg at that location.
Purchase
Purchase entries are created when you receive goods against a purchase order or record a vendor bill. Each purchase receipt adds stock at the receiving location.
| Direction | Effect |
|---|---|
| Inward | Increases stock |
Example: You receive 1,000 kg of MS Round Bar 12mm from a vendor at the Main Warehouse. A purchase entry of +1,000 kg is recorded.
Sale
Sale entries are created when you raise a sales invoice and dispatch goods. Each sale reduces stock at the dispatch location.
| Direction | Effect |
|---|---|
| Outward | Decreases stock |
Example: You invoice and dispatch 50 pcs of Hydraulic Cylinder HC-50 from the Finished Goods Store. A sale entry of -50 pcs is recorded.
Production
Production creates two types of stock movements:
- Consumption — Raw materials and semi-finished goods are consumed (stock decreases)
- Output — Finished goods or semi-finished goods are produced (stock increases)
In the stock ledger, production entries can appear as positive (for output) or negative (for consumption), depending on how the production order processes material issues and finished good receipts.
| Direction | Effect |
|---|---|
| Outward (consumption) | Decreases stock of raw materials |
| Inward (output) | Increases stock of finished/semi-finished goods |
Example: A production order for 20 pcs of Hydraulic Cylinder HC-50 consumes 600 kg of MS Plate 6mm (outward) and produces 20 pcs of HC-50 (inward).
Transfer
Transfer entries move stock from one location to another. Each transfer creates two ledger entries: a negative entry at the source location and a positive entry at the destination location. The total stock across all locations remains unchanged.
| Direction | Effect |
|---|---|
| Outward at source | Decreases stock at source location |
| Inward at destination | Increases stock at destination location |
Example: You transfer 200 kg of MS Plate 6mm from the Main Warehouse to the Machine Shop Floor. The warehouse balance drops by 200 kg; the shop floor balance increases by 200 kg.
Adjustment
Adjustment entries correct discrepancies found during physical stock counts or handle exceptional events like damage, theft, or write-offs. Adjustments can increase or decrease stock.
| Direction | Effect |
|---|---|
| Positive adjustment | Increases stock |
| Negative adjustment | Decreases stock |
Example: During a physical count, you find 480 kg of MS Plate 6mm on the shop floor, but the system shows 500 kg. You create a negative adjustment of 20 kg with a note explaining the discrepancy (e.g., "Wastage during cutting — not recorded on production orders").
Warning: Adjustments should be used sparingly and always with explanatory notes. Frequent adjustments indicate a process problem — material movements are not being recorded correctly. Investigate and fix the root cause rather than relying on adjustments to correct chronic discrepancies.
Transaction Type Summary
| Transaction Type | Stock Effect | Typical Source Document |
|---|---|---|
| Opening | + (increase) | Opening balance entry during setup |
| Purchase | + (increase) | Vendor bill / purchase receipt |
| Sale | - (decrease) | Sales invoice / delivery |
| Production | +/- (both) | Production order — consumption and output |
| Transfer | - at source, + at destination | Stock transfer request |
| Adjustment | + or - | Physical stock count / write-off |
Running Balance
Every stock ledger entry includes a running_balance field. This is the cumulative stock quantity for that item at that location after the current entry is applied.
Example sequence for MS Plate 6mm at Main Warehouse:
| # | Date | Transaction | Qty | Running Balance |
|---|---|---|---|---|
| 1 | 01-Apr | Opening | +2,500 kg | 2,500 kg |
| 2 | 05-Apr | Purchase | +1,000 kg | 3,500 kg |
| 3 | 08-Apr | Transfer to Shop Floor | -500 kg | 3,000 kg |
| 4 | 12-Apr | Purchase | +800 kg | 3,800 kg |
| 5 | 15-Apr | Transfer to Shop Floor | -700 kg | 3,100 kg |
| 6 | 20-Apr | Adjustment (damage) | -50 kg | 3,050 kg |
The running balance at any point tells you the exact stock available. This is the number shown in stock reports and used for reorder level comparisons.
Tip: If the running balance ever shows a negative number, it means stock was dispatched or consumed without sufficient quantity being available. This indicates a process issue — either a receipt was not recorded or a dispatch happened before goods were received. Investigate immediately.
Batch Tracking
The batch_number field on each stock ledger entry lets you trace stock back to a specific lot or consignment. This is essential for:
- Quality traceability — If a customer reports a defect, you can identify which batch was used and check other products made from the same batch
- Vendor accountability — You can trace a defective batch back to the specific vendor delivery
- Regulatory compliance — Some industries require batch-level traceability
Example: You receive MS Round Bar from two different heats:
| Date | Vendor | Batch Number | Qty |
|---|---|---|---|
| 05-Apr | Steel India Ltd | HEAT-2024-A157 | 500 kg |
| 12-Apr | Steel India Ltd | HEAT-2024-A192 | 800 kg |
When this material is consumed in production, the batch number is carried forward, allowing you to trace which heat number went into which finished product.
Tip: Not every item needs batch tracking. Use it for items where traceability matters — metals with heat/lot numbers, chemicals with batch certificates, items subject to quality recalls. For generic consumables like cable ties or packaging tape, batch tracking adds overhead without meaningful benefit.
Expiry Date Tracking
For items with Track Expiry enabled (set on the item master), each stock ledger entry can include an expiry_date. This is critical for:
- Chemicals and adhesives — Epoxy resins, sealants, and paints degrade over time
- Lubricants — Hydraulic oils and greases have shelf life specifications
- Rubber compounds — Natural and synthetic rubber compounds lose properties over time
- Paints and coatings — Shelf life typically 12 to 24 months
The expiry date, combined with batch tracking, lets you implement FIFO (First Expiry, First Out) practices — consuming the oldest stock first to minimize waste.
Example:
| Item | Batch | Received | Expiry Date | Qty |
|---|---|---|---|---|
| Hydraulic Oil VG 68 | LOT-HO-2024-03 | 15-Mar-2024 | 15-Mar-2025 | 200 ltr |
| Hydraulic Oil VG 68 | LOT-HO-2024-07 | 10-Jul-2024 | 10-Jul-2025 | 150 ltr |
When consuming this oil, you should draw from LOT-HO-2024-03 first, as it expires earlier.
Reference Linking
Every stock ledger entry includes reference_type and reference_id fields that link it back to the source document that caused the movement. This creates a complete audit trail.
| Reference Type | Reference Document | Example |
|---|---|---|
| Bill | Vendor bill / purchase invoice | Bill #PUR-2024-0147 |
| Invoice | Sales invoice | Invoice #INV-2024-0523 |
| ProductionOrder | Production order | PO #PROD-2024-0089 |
| StockTransfer | Inter-location transfer | Transfer #TRF-2024-0031 |
| StockAdjustment | Physical count adjustment | Adjustment #ADJ-2024-0012 |
When you view a stock ledger entry, you can click through to the reference document to see the full details of the transaction — who initiated it, what was the total value, which vendor or customer was involved, and what approvals were obtained.
Tip: Reference linking is one of the most powerful features of ERP-based inventory management. When a discrepancy arises, you do not need to hunt through paper files. Every stock movement is linked to its source, creating a clear chain of evidence.
Viewing the Stock Ledger
Stock Ledger Report
To view the stock ledger for a specific item:
- Navigate to Inventory > Items
- Select the item you want to inspect (e.g., MS Plate 6mm)
- View the Stock Ledger tab or section on the item detail page
The report shows all stock ledger entries for that item, typically with these columns:
| Column | Description |
|---|---|
| Entry Date | Date of the stock movement |
| Transaction Type | Opening, purchase, sale, production, transfer, or adjustment |
| Location | The location where this movement occurred |
| Quantity | The quantity added (+) or removed (-) |
| Running Balance | Cumulative balance at this location after this entry |
| Batch Number | Batch or lot identifier (if tracked) |
| Expiry Date | Expiry date of this batch (if tracked) |
| Reference | Link to the source document |
| Notes | Additional context (especially for adjustments) |

Filtering the Stock Ledger
You can filter the stock ledger by:
- Location — See movements only at a specific warehouse or shop floor
- Date range — Focus on a specific period (e.g., current month)
- Transaction type — View only purchases, or only adjustments
Current Stock Summary
For a quick snapshot of current stock across all locations:
- Navigate to Inventory > Items
- The item list or item detail page shows the current stock quantity — the latest running balance aggregated across locations
To see a location-wise breakdown, look for the location-level stock summary on the item detail page.
Understanding Stock Movements
Reading the stock ledger effectively is a skill. Here are common patterns to watch for:
Healthy Pattern
Regular purchases followed by production consumption, with the running balance staying between the reorder level and max stock level. Transfers move stock smoothly from warehouse to shop floor. Adjustments are rare.
Warning Signs
- Running balance frequently near zero or negative — You are cutting it too close. Increase reorder levels.
- Large, infrequent purchases followed by long gaps — You may be over-ordering and tying up cash. Consider smaller, more frequent orders.
- Frequent adjustments — Material movements are not being recorded properly. Retrain staff on the process.
- Stock at one location but needed at another — Transfer planning needs improvement. Review transfer lead times.
Tips & Best Practices
Tip: Review the stock ledger for your top 20 items (by value or transaction frequency) weekly during the first month of ERP usage. This helps you catch process gaps early — missing entries, incorrect quantities, or wrong locations.
Warning: Never manually edit stock ledger entries to "fix" numbers. If there is an error, create a proper adjustment entry with notes explaining the correction. Manual edits break the audit trail and can cause accounting discrepancies.
Tip: Use the Notes field on adjustment entries generously. Six months from now, "Adjustment -20 kg" tells you nothing. "Adjustment -20 kg — wastage from cutting scrap not captured on production order PO-2024-0089, identified during physical count on 20-Apr" tells you exactly what happened and why.
Tip: Conduct periodic physical stock counts (at least quarterly) and reconcile with the system's running balance. Discrepancies should be resolved through adjustment entries. Over time, as your team consistently records every movement, the gap between physical and system stock will shrink.
Quick Reference — Stock Ledger Entry Fields
| Field | Description | Example |
|---|---|---|
| Item | The item this entry relates to | MS Plate 6mm |
| Location | The location where this movement occurred | Main Warehouse |
| Transaction Type | Type of movement: opening, purchase, sale, production, transfer, adjustment | purchase |
| Quantity | Quantity added or removed | +1,000 kg |
| Running Balance | Cumulative stock at this location after this entry | 3,500 kg |
| Batch Number | Lot or batch identifier | HEAT-2024-A157 |
| Expiry Date | Expiry date for this batch (if applicable) | 15-Mar-2025 |
| Reference Type | Type of source document | Bill |
| Reference ID | ID of the source document | PUR-2024-0147 |
| Notes | Additional context or explanation | Received against PO-2024-0098 |
| Entry Date | Date of the stock movement | 2024-04-05 |