Foundations Guide 10 min read

How inventory software tracks stock movements

Inside the movement engine: how receipts, issues, returns, transfers, reservations and adjustments become documents — and how each posting keeps the balance current and the ledger complete.

Vidya Kathare · July 18, 2026 10 min read Foundations
One posting, three effects
01
A movement happens
Receipt, issue, return, transfer, adjust
Event
02
A document is posted
Header + lines, typed by movement code
Recorded
03
The balance updates
Running per-location quantity ±
Current
04
The ledger appends
Qty, type, reference, rate, + / −
Traceable
05
Lots stay true
Batch, expiry, status follow the stock
FEFO-ready

The short answer

Inventory software tracks stock movements by refusing to let stock change any other way: every receipt, issue, return, transfer, reservation, gate pass and adjustment is a document posted on one movement engine. Posting the document updates the running per-location balance — up, down or across — and appends an immutable stock-ledger row recording quantity, type, reference and rate. The on-hand figure is therefore never an opinion; it is the arithmetic sum of documented movements, each of which can be opened and traced. This page walks through how that works; the wider system around it is covered in the pillar guide, what is inventory management software.

Everything is a document

The design principle carrying all the weight is deceptively simple: there is one way stock changes, and it is a posted document. In Fast Inventory, all store movements — whatever their direction — run through the same shared engine, each document carrying a header (number, date, type, source and destination, status) and line detail (item, quantity, unit, references). The movement type is what varies, not the machinery.

This buys three things at once. First, consistency: the stores team learns one entry pattern and posts every kind of movement with it. Second, completeness: because nothing changes stock except a posting, there is no category of change that escapes the record. Third, traceability: documents reference each other — an issue against an order, a return against an issue, a receipt against a gate pass — so the chain of custody survives. The feature view of this engine is at Stock Movements & Transactions.

The core rule
Stock is a running balance, changed only at commit points — receipt (+), issue (−), adjustment (±), transfer (net zero). Nothing else touches it, and every commit leaves a ledger row.
Even a physical count does not change stock — it records variance, and a separate adjustment document reconciles it. The moment anything can change stock without a document, the balance stops being trustworthy.

The movement types and what each does

Seven movement types cover nearly everything a store does. Each has a defined, predictable effect on the balance:

MovementWhat it recordsBalance effect
Goods receipt (GRN)Goods in — e.g. against a purchase; creates lots for batch goodsIncrease
Material issueStock out to production, consumption or delivery, on an issue slipDecrease
Material returnPreviously issued, unused material coming back to stockIncrease
Stock transferQuantity moved store-to-store or location-to-locationNet zero — out one side, in the other
Reserve / de-reserveStock earmarked for a purpose (and released again)Held — moves between free and reserved
Gate passThe inward/outward vehicle record at the premises gateLog — custody, not quantity
Adjustment (increase / decrease)Documented correction outside the normal flow, incl. scrap±

Two of these deserve a closer look. The transfer is the reason location-wise stock stays true: both legs are recorded — a minus at the source, a plus at the destination — so the total is unchanged but the map is updated. The reserve is the reason available stock can differ from physical stock: reserved quantity is held against a purpose without leaving the store, so a promise made to one customer is not silently double-promised to another.

What actually happens at posting

Posting is where a form on a screen becomes stock truth. Three effects land together:

The posting sequence
1
The document is saved
Header and lines, with the movement type, source and destination, and references to related documents ("against order", "against receipt").
2
The running balance moves
The per-location, per-item balance is incremented or decremented by exactly the posted quantity — it is maintained incrementally, not recomputed, which is why it is only ever as good as the postings.
3
A ledger row is appended
Opening balance, transaction quantity, type, reference and rate, marked plus or minus — the immutable trail that makes every balance explainable. See what is a stock ledger.
4
Lot detail follows (where it applies)
For batch-controlled items, the lot's contents, location history and status are updated in the same posting, keeping batch truth aligned with quantity truth.

Because these effects are joined, the three layers — documents, balance, ledger — can always be reconciled against each other. That is what auditors exploit, and what a spreadsheet can never offer: in a sheet, the "balance" and the "history" are two unrelated pieces of typing.

Want to watch a posting land?

In a 30-minute demo we post a receipt, an issue and a transfer on your items — and open the balance and ledger after each one so you see all three effects.

Get a demo

Lots, expiry and FEFO in the flow

For batch-controlled or perishable goods, movements carry a second layer of truth. A goods receipt creates the lot — batch number, production date, expiry date — alongside the quantity. From then on, the lot follows the stock through every movement:

  • On issue, FEFO applies as a hard rule. Expired lots are excluded from eligibility entirely, and eligible lots are ordered nearest-expiry first — so the system, not the picker's eyesight, enforces First-Expiry-First-Out.
  • Statuses gate availability. A lot can be available, on hold, damaged or closed; held and damaged lots drop out of issuable stock without any physical move.
  • An expiry dashboard buckets what is coming. Available lots grouped by expiry window — today, this week, this month, this quarter and beyond — turn near-expiry stock into a work list.

The result is that movement tracking and traceability are the same system: because every movement is documented at lot level, batch genealogy for a recall or customer audit is a query, not a project. The feature detail is at Lot, Batch & Expiry (FEFO).

Corrections and cancellations

Mistakes happen — a receipt posted twice, an issue against the wrong item. What distinguishes a controlled system is how corrections work: by new postings, never by edits. A wrong document is reversed by a cancellation transaction that posts the exact opposite delta, and out-of-flow corrections are made with adjustment documents — increase or decrease — each writing its own ledger row. Physical count variances follow the same road: the count records the difference, and an adjustment reconciles it, as described in the inventory management process.

The consequence is a history that shows the mistake, the fix, and the person and time behind each — rather than a balance that was quietly right yesterday and differently right today.

Capturing movements at source

All of the machinery above depends on one human discipline: movements must be posted when they happen, at the place they happen. Late entry is how balances drift even in good systems. Two things make the discipline cheap:

  • Barcodes on items and lots. Scan-based entry replaces code lookup at receipt, issue and count, and printed labels close the loop — see Barcode, RFID & Automation.
  • No double entry with the books. Movements post to Tally ERP 9 / TallyPrime as stock journal vouchers with store-to-godown mapping via the Tally integration — so posting once in the inventory system is genuinely once.
🇮🇳India context: the usual failure mode in Indian stores is not missing software but split records — a challan book at the gate, a register in the store, and Tally in accounts, reconciled monthly by argument. One movement engine with a Tally bridge replaces that triangle: the gate pass, the stock effect and the books all descend from the same posting.

Movement tracking is also the foundation everything else stands on: the running balance feeds reorder alerts and valuation, the ledger feeds the audit trail, and the lot layer feeds FEFO and recalls — the gains itemised in the benefits of inventory management software. And if your operation needs the system to also direct the movements — which bin, which pallet, scanner-confirmed — that is the warehouse-management layer, mapped in inventory management vs warehouse management.

New to the topic?Start with the complete foundations guide to inventory management software.
Read the pillar guide

Frequently asked questions

How does inventory software track stock movements?

Every change to stock is captured as a movement document on one engine — goods receipt, material issue, material return, stock transfer, reserve/de-reserve, gate pass or adjustment. Posting the document updates the running per-location balance (up, down or across) and writes an immutable stock-ledger row recording quantity, type, reference and rate. The balance is therefore always the sum of documented movements, and any figure can be traced back movement by movement.

What are the main stock movement types?

Seven cover almost everything: goods receipt (stock in, e.g. against a purchase), material issue (stock out to consumption or production), material return (previously issued stock coming back), stock transfer (between stores or locations, no net change), reserve/de-reserve (earmarking stock without moving it), gate pass (the inward/outward vehicle record), and adjustment increase/decrease (documented corrections, including scrap). Each type has a defined effect on the balance.

What happens when a stock movement is posted?

Three things, atomically: the document itself is saved with its header and line detail; the running per-location balance for each affected item is incremented or decremented; and a stock-ledger row is appended with the opening balance, transaction quantity, type, reference and rate, marked plus or minus. For batch-controlled items, lot detail (batch number, expiry, status) is created or updated in the same posting.

How are mistakes corrected if the ledger is immutable?

By new postings, never by editing. A wrong movement is reversed by a cancellation transaction that posts the exact opposite delta, and corrections outside the normal flow are made with adjustment documents (increase or decrease). Both the original and the correction remain visible in the ledger, so the history shows what happened, what was wrong and how it was fixed — which is precisely what an auditor wants to see.

How do lots and FEFO interact with movements?

A goods receipt for a batch-controlled item creates a lot carrying its batch number, production date and expiry date. On issue, FEFO discipline applies as a hard rule: expired lots are excluded from eligibility, and the eligible lots are consumed nearest-expiry first. Transfers and adjustments update lot detail alongside the aggregate balance, and lot statuses (available, hold, damage, closed) control what counts as issuable without physically moving stock.

See the movement engine run

A 30-minute Fast Inventory Software demo covers the item master, goods receipt, issue and transfer, lot/FEFO, physical stock taking, ABC and reorder alerts — live, on your own items.

Get a demo
No commitment. No slides. Your stores on screen.