Stock Trace
Every movement of one item, in order, with a running balance.
The Stock Trace is a bin card for a single item: everything that changed how much of it you hold, oldest first, with the balance after each movement.
Use it when an item's quantity looks wrong and you want to see how it got there.
NOTE
Pick an item first — the report is blank until you do. It opens on the item's whole history, not the last month, because a bin card only balances if it starts where the item did.
For the CSV export, see Reports.
Summary cards
- Received: everything bought into batches, after any quantity edits made by hand.
- Billed: units sold on live invoices, less anything returned. Deleted invoices are not counted, because deleting one puts its units back.
- On hand: what you hold now, split by location underneath.
- Hand edits: how many times a batch quantity was corrected by hand, and what those corrections came to on balance.
The stock card
One row per movement, each tagged with its type so you can tell them apart at a glance:
- Purchase — a batch arrived, with what it cost.
- Hand edit — someone changed a batch's quantity, with the before and after. These are the usual reason an item no longer matches what was bought.
- Transfer — stock moved between locations. Deliberately does not change the balance: a transfer splits a batch, it does not create or consume stock.
- Sales — one row per month per shop, with the number of invoices behind it.
NOTE
Sales rows are dated by month, not by day — "Dec 2024" means everything billed in December, not the 1st. Every other row is dated to the day.
The Balance column runs down the page. A negative balance means the shops had billed more than the system had received at that point.
Units billed from an empty batch
A sales row can carry a red flag reading "N billed from an empty batch". It means a bill drew stock from a batch that was already fully sold, so the customer was charged but no batch counter moved — the units are still on the shelf as far as the app is concerned.
This is the usual reason Difference is not zero. The flagged rows tell you when it happened and at which shop.
Stock with no log entry
If a batch was deleted, or stock changed before the activity log recorded it, the difference appears as its own row rather than being hidden. Where it sits says which it is:
- Stock that predates the activity log opens the card — the item already held stock the log never recorded.
- Stock no longer held by any batch closes the card — stock the log recorded but the batches no longer hold, usually a batch deleted later. Putting it last keeps every balance above it honest instead of dragging the whole card negative.
Either way the balance still ends on what the app holds, so the two can always be compared.
Reconciliation figures (support)
Adding ?audit=1 to the URL adds a second row of cards comparing the movements against what the app holds — what the movements say, the difference, units billed with no stock behind them, and stock with no entry in the log. They are off by default: a difference usually means the item's history is older than the activity log, or a batch was deleted, rather than anything being wrong today. Development builds open on them and carry a View as tenant button for checking the shop's view, and the CSV export always carries them.
Date range
Leave the date picker empty to see the item's whole history. Choose a range and everything before it folds into a single Opening balance row, so the balance still starts from the right number. All time clears the range again.
CSV export
The export carries the summary figures, the stock card row by row (including the flagged units), and what is on hand at each location.