04 · Movement · movement lens

Stock, batches & adjustments

Track product stock, batch lots with expiry, record receipts and adjustments, and put expiring/damaged lots on quality hold.

5 min read · updated 28/05/2026
Who can do this
RoleView stock & batchesRecord receiptRecord adjustmentCreate / edit productWrite off / quality-hold batch
OwnerAllowedAllowedAllowedAllowedAllowed
ManagerAllowedAllowedAllowedAllowedAllowed
OperatorAllowedNot allowedNot allowedNot allowedNot allowed
WarehouseAllowedAllowedAllowedNot allowedAllowed

Overview

This is the live count of what you have on the shelf. Goods come in from a supplier, you record the receipt; stock goes missing or breaks, you record an adjustment with a reason. Every move is logged, so the number you see is the number that's there. For products with expiry — medicines, dairy, anything dated — you track stock as batch lots, each with its own expiry date, and hold a doubtful lot back before it ever reaches a customer.

Where to find it

Web: Inventory in the left sidebar, route /inventory. The list opens on All SKUs with KPI tiles across the top — Total SKUs, Low stock, Out of stock, and Stock value — and tabs to filter to Reorder, Out of stock, Fast-moving, and Dead stock. Search by SKU or name. Tap any row to open the product, its batches, and its full movement history.

Inventory shows in the sidebar for Owner, Manager, Warehouse, and Operator. Adding a product or importing a list (/inventory/new, /inventory/import) is Owner and Manager only.

Key concepts

  • Receipt — goods in from a supplier. Adds quantity to the product's stock and writes a movement row. If the new stock drops to or below the reorder level, a low-stock alert fires.
  • Adjustment — a manual correction, up or down, with a mandatory reason (breakage, count fix, theft). It writes a movement row tagged as a manual adjustment.
  • Reorder level — the floor you set per product. At or below it, the SKU shows in the Reorder tab and triggers a low-stock alert.
  • Batch lot — a tracked lot with its own batch number, manufacture and expiry date, quantity, and (if it differs) its own MRP. Batch tracking is per-product and opt-in.
  • Quality hold — the quality_pending state. A held lot is invisible to picking and to the auto-expiry sweep — it cannot be sold or auto-expired until you release it.
  • FEFO — First-Expiry-First-Out. The default order in which batches are drawn for an order, so the soonest-to-expire lot ships first. FIFO (oldest received first) is the alternative.
  • Unit of measure — each product has one base unit; you can add conversions (e.g. 1 case = 12 pcs) so a receipt entered in cases lands as the right base count.

Common workflows

1
Record stock received
Open the product, choose Record receipt, enter the quantity (and unit, if you keep conversions). Stock goes up and the receipt is logged. If it pushes you to or below your reorder level, a low-stock alert fires automatically.
2
Fix a wrong count
Use Record adjustment. Enter a signed quantity — minus for breakage or shrinkage, plus to correct an undercount — and a reason. The reason is required and saved on the movement.
3
Turn on batch tracking
For a dated product, toggle batch tracking on. Any existing stock rolls into one auto-created batch so nothing goes missing. From then on, receipts are recorded as batch lots with expiry dates.
4
Hold a doubtful lot
On a batch, choose Pause for quality check and give a reason — a thermal excursion on a dairy lot, a licence issue on a pharma lot. The lot moves to quality hold and drops out of picking. Later, Release from quality check with notes returns it to active.
5
Write off a dead lot
If a lot is damaged or expired beyond use, Write off with a reason. Its quantity drops to zero, stock is reduced, and the write-off is logged. This is final — a written-off lot cannot be brought back.

Role notes

All four roles see stock and batches. What differs is who can move the numbers and who can touch the product master.

RoleView stock & batchesRecord receiptRecord adjustmentCreate / edit productCreate batchWrite off / quality-hold batchToggle batch tracking
OwnerAllowedAllowedAllowedAllowedAllowedAllowedAllowed
ManagerAllowedAllowedAllowedAllowedAllowedAllowedAllowed
WarehouseAllowedAllowedAllowedNot allowedNot allowedAllowedNot allowed
OperatorAllowedNot allowedNot allowedNot allowedNot allowedNot allowedNot allowed
  • Owner and Manager do everything here — receive, adjust, create and edit products, create batches, hold or write off lots, and turn batch tracking on.
  • Warehouse owns physical stock movement: receive goods, record adjustments, and write off / quality-hold / release batches. Warehouse cannot create or edit the product master, cannot create a new batch, and cannot toggle batch tracking — those stay with Owner and Manager.
  • Operator is read-only here. An operator can look up stock and price to answer a customer, but cannot record a receipt, an adjustment, or any batch change.

Tips & time-savers

Tip
Setting up your catalogue from a spreadsheet? Use Import at /inventory/import to bulk-create products in one go instead of adding them one by one — duplicate SKUs are flagged row by row so you can fix and re-run. Keep UoM conversions on each product (1 case = 12 pcs) and your team can record a receipt in whatever unit the supplier billed; Neev converts it to the base count for you.

The Reorder tab is your standing buy-list — set a reorder level on every fast mover and the tab fills itself, so you never re-count the shelf to know what to order.

Gotchas

Warning
A write-off is final. Once a batch is written off its quantity goes to zero and it cannot be reactivated or restored — only write off a lot you are sure is dead. If you are merely unsure about a lot, use Pause for quality check instead; that hold is reversible with Release.
Warning
Turning batch tracking on is one-way — there is no switch to turn it back off. And while a lot sits on quality hold it is invisible to order picking and skipped by the expiry sweep: it will not sell and it will not auto-expire until someone releases it, so don't leave held stock parked and forgotten.

An adjustment always needs a reason — Neev will not save a blank one. Write the real cause (breakage, recount, damage) because that note is what your audit trail and your stock-value figure are built on.

Related