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.

DirectionEffect
InwardIncreases 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.

DirectionEffect
InwardIncreases 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.

DirectionEffect
OutwardDecreases 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.

DirectionEffect
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.

DirectionEffect
Outward at sourceDecreases stock at source location
Inward at destinationIncreases 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.

DirectionEffect
Positive adjustmentIncreases stock
Negative adjustmentDecreases 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 TypeStock EffectTypical 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 destinationStock 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:

#DateTransactionQtyRunning Balance
101-AprOpening+2,500 kg2,500 kg
205-AprPurchase+1,000 kg3,500 kg
308-AprTransfer to Shop Floor-500 kg3,000 kg
412-AprPurchase+800 kg3,800 kg
515-AprTransfer to Shop Floor-700 kg3,100 kg
620-AprAdjustment (damage)-50 kg3,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:

DateVendorBatch NumberQty
05-AprSteel India LtdHEAT-2024-A157500 kg
12-AprSteel India LtdHEAT-2024-A192800 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:

ItemBatchReceivedExpiry DateQty
Hydraulic Oil VG 68LOT-HO-2024-0315-Mar-202415-Mar-2025200 ltr
Hydraulic Oil VG 68LOT-HO-2024-0710-Jul-202410-Jul-2025150 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 TypeReference DocumentExample
BillVendor bill / purchase invoiceBill #PUR-2024-0147
InvoiceSales invoiceInvoice #INV-2024-0523
ProductionOrderProduction orderPO #PROD-2024-0089
StockTransferInter-location transferTransfer #TRF-2024-0031
StockAdjustmentPhysical count adjustmentAdjustment #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:

  1. Navigate to Inventory > Items
  2. Select the item you want to inspect (e.g., MS Plate 6mm)
  3. 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:

ColumnDescription
Entry DateDate of the stock movement
Transaction TypeOpening, purchase, sale, production, transfer, or adjustment
LocationThe location where this movement occurred
QuantityThe quantity added (+) or removed (-)
Running BalanceCumulative balance at this location after this entry
Batch NumberBatch or lot identifier (if tracked)
Expiry DateExpiry date of this batch (if tracked)
ReferenceLink to the source document
NotesAdditional context (especially for adjustments)

Stock ledger report for an item

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:

  1. Navigate to Inventory > Items
  2. 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

FieldDescriptionExample
ItemThe item this entry relates toMS Plate 6mm
LocationThe location where this movement occurredMain Warehouse
Transaction TypeType of movement: opening, purchase, sale, production, transfer, adjustmentpurchase
QuantityQuantity added or removed+1,000 kg
Running BalanceCumulative stock at this location after this entry3,500 kg
Batch NumberLot or batch identifierHEAT-2024-A157
Expiry DateExpiry date for this batch (if applicable)15-Mar-2025
Reference TypeType of source documentBill
Reference IDID of the source documentPUR-2024-0147
NotesAdditional context or explanationReceived against PO-2024-0098
Entry DateDate of the stock movement2024-04-05