Goods receipt, material issue, return, stock transfer, gate pass, reserve, adjustment and scrap — every stock movement runs through one document engine, across every store type and the Plant → Warehouse → Location → Store Location → Bin hierarchy. Stock changes only at commit points, and every posting leaves a row in the immutable ledger. Cloud or on-premise, for businesses of every kind.
Movements here aren't a spreadsheet bolted onto the store — every one is a real document on one engine, and stock changes only where a document is posted. New to the category? Start with our guide, what is inventory management software.
Receiving starts at the gate: an inward gate pass records the vehicle and what it carried. Then the goods receipt note brings the material on-hand — the receipt posts stock as a plus, item by item, into the store you nominate, and writes a ledger row against the reference it came in on. Batch-controlled goods pick up their lot and expiry detail at the same moment. Nothing is on-hand until the GRN is posted, so your balance reflects what you actually received.
Material leaves stock on a material issue slip: the quantity is deducted and the ledger records a minus. Sent too much, or the line left some over? A material return brings the unused quantity back to stock on the same flow. And a stock transfer moves quantity from one store or location to another — a minus at the source, a plus at the destination, net zero overall — so you always know how much sits where. No movement happens by editing a number; it happens by posting the right document.
Not every movement is a straight in or out. A reserve earmarks stock against an order or job so it can't be double-committed — quantity shifts to reserved without leaving on-hand — and de-reserve releases it. When a count or a spill needs correcting, a stock adjustment increase or decrease puts the balance right outside the normal receipt/issue flow, and scrap writes off material that's no longer usable. Every one is its own posting with its own ledger row, and a cancellation reverses the exact delta rather than erasing history.
Stores are configuration, not hardcoded logic. Run main, open, rejection, rework, production, finished-goods, delivery, packing, scrap, department, subcontracted and component stores side by side, each keeping its own balance, and organise them down a Plant → Warehouse → Location → Store Location → Bin hierarchy. Underneath it all sits the immutable stock ledger: every receipt, issue, transfer, reserve, adjustment and scrap appends a row you can read back movement by movement. If you need directed putaway and picking down to the bin, that's Fast WMS — the superset built on this same engine.
Brings material on-hand as a plus, item by item, against the reference it came in on — the one point stock enters the store.
Deducts stock to consumption or production on an issue slip — the real minus that keeps your on-hand balance honest.
Brings previously issued or unused material back to stock as a plus, on the same issue/return flow — no silent re-entry.
Moves quantity store-to-store or location-to-location with no net change, plus inward and outward gate-pass vehicle records.
Earmarks stock against an order or job so it can't be double-committed — quantity moves to reserved without leaving on-hand.
Adjustment increase/decrease and scrap correct or write off on-hand — and every movement appends a row to the immutable stock ledger.
Most stock drift isn't theft — it's material moved off the books, committed twice, or corrected by overwriting a cell. Here is what one movement engine changes.
All of them on one engine: goods receipt (GRN) which adds stock, material issue which deducts it, material return which adds it back, stock transfer which moves quantity between stores with no net change, reserve and de-reserve which earmark stock, gate pass for inward and outward vehicle records, stock adjustment increase and decrease, and scrap. Because every movement is a document on the same engine, receipts, issues and transfers all read back consistently.
Reserve earmarks stock against an order or job so it can't be double-committed elsewhere — but nothing moves and on-hand quantity is unchanged. Issue is the real deduction: material leaves store stock. Stock only truly commits at the receipt, issue, adjustment and transfer commit points, so your on-hand balance stays accurate and a reservation never quietly disappears off the books.
Every posting — receipt, issue, return, transfer, reserve, adjustment or scrap — writes a row to the stock ledger with the opening balance, the transaction quantity, the transaction type, the reference and the plus/minus effect. Nothing is edited away silently: a correction posts as its own cancelling entry. The ledger is the append-only trail behind the Stock Ledger Report, so any balance can be traced movement by movement.
Stores are configuration, not hardcoded logic — so you can run main store, open store, rejection, rework, production, finished-goods, delivery, packing, scrap, department, subcontracted and component stores side by side, and move stock between them with a transfer. Each store keeps its own balance, so you always know how much sits where and in what state.
Locations follow a Plant → Warehouse → Location → Store Location → Bin hierarchy, so a single company can run multiple plants, each with warehouses, storage locations, store locations and bins. Fast Inventory keeps accurate per-location balances; heavy directed putaway and picking down to the bin, with capacity optimization and handheld execution, belong to Fast WMS — the superset that adds directed work on top of the same engine. Movements also post to Tally as stock journals.
Live demo of goods receipt, issue, return, transfer, reserve and adjustment on your own stores — with the immutable ledger behind each one. No generic slideshow.