Skip to content

Inventory Tracker — Methodology Handbook

The Inventory Tracker is stock for someone who sells things: what is on the shelf, what it cost, what it is worth, what is about to run out and what has been sitting there not selling. This handbook explains what it stores, how every figure on the page is computed, and what it deliberately does not do.

👉 Open the tracker: calculatorai.app/inventory-tracker

The one idea everything else follows from

The quantity on hand is not stored. It is the sum of the movements.

Most stock sheets keep a "quantity" field and edit it: a sale subtracts one, a delivery adds ten. That is why their numbers drift. Two tabs open, one stale write, a correction typed over a correction — and the shelf permanently disagrees with the screen, with nothing to audit.

Here every change is a row: a delivery, a sale, a customer return, a return to the supplier, a write-off, a stock-take. The count is replayed from them, in date order, every time the page loads. A number that is derived cannot drift from the history that produced it, because it is the history.

This is not tidiness for its own sake. Cost of goods sold, gross margin and stock turnover are all questions about which units left and what those particular units had cost — and none of them can be answered from a stored quantity at all. A tracker built on a mutable number can show you a count. It cannot show you a margin.

What a product is here

One row is one thing you stock. It carries:

  • Name and an optional SKU — your own code. It stays optional, because plenty of small sellers do not use codes, but when present it must be unique, so an import cannot quietly create twins.
  • Category, supplier, location (a shelf, a room, a bin) and an optional barcode. All four are free text with suggestions from what you have already used, and all four are filters and analytics dimensions.
  • Cost per unit and sale price — these are defaults for the form, not the truth about any batch. What a delivery actually cost and what a sale actually fetched live on the movement, because both change over time and the margin has to reflect that.
  • Unit — pcs, kg, m, pair, box: your own word, printed after every count.
  • Reorder point — below this many units the product is flagged as low. Empty means "use the setting".
  • Order size — how many you buy at a time. This is what makes the restock list useful rather than arithmetically correct (see Restocking).
  • Archived — hides a product from the shelf without touching its history, so a discontinued line still explains last year's sales.

What a movement is

Six kinds, and they are not interchangeable:

KindEffectCarries
Receivedadds unitsunit cost, plus any freight as an extra cost
Soldremoves unitsunit price, plus commission/shipping as an extra cost
Customer returnadds units backthe price being refunded
Return to supplierremoves units
Written offremoves units
Stock-takesets the count

Each also carries a date, an optional channel (the shop, a marketplace, a market stall) and an optional reference (a purchase order number, an order id).

A stock-take is the one kind whose quantity is absolute. Every other row says how many moved; a stock-take says how many are there. You counted the shelf and found five. The tracker works out the adjustment that makes the running total five and records the difference as shrinkage. Recording the difference instead would lose the fact that a human actually looked — which is the only reason a stock-take is worth anything.

Average cost, and why it moves

Each product's movements are replayed in date order, carrying two running numbers: how many units are on the shelf, and how much money is tied up in them. The average cost is the second divided by the first.

  • A delivery adds its units at what that delivery cost — including the freight you entered as an extra cost. Twenty mugs at 4.00 with 20.00 of shipping is 100.00 for twenty units, so those units cost 5.00 each, not 4.00. This is landed cost, and leaving it out is the most common way a small seller overstates their margin.
  • A second delivery at a higher price moves the average. Sixty candles at 5.00 and forty at 6.80 do not make a shelf of 5.00 candles.
  • A sale removes its units at the average at that moment. Not at the latest price, not at the first. This is the weighted-average method, and it is what makes the reported margin an actual margin.
  • A write-off costs the same average and is never counted as a sale. It appears as money lost, in its own figure.
  • A customer return puts the unit back at what the shelf currently costs, and takes back both the revenue and its cost of goods. A refund that returned only the revenue would quietly raise your margin every time something came back.

Ties are broken by the order rows were entered, so a delivery and a sale dated the same day replay the way they actually happened.

The shelf versus the period

Two different questions, deliberately kept apart:

  • The shelf — how many are there, what they cost, what they are worth — is cumulative. It is computed from every movement ever recorded, and the date filter does not touch it.
  • The period — revenue, cost of goods sold, margin, units sold, how fast something is moving — is measured only inside the window you chose.

Conflating the two is how a dashboard ends up claiming last year's sales as this month's. A product with 50 units left and 40 sold last summer shows 50 on hand and, for "this month", zero sold.

The four words for a shelf

Every surface — the list, the filters, the alerts, the analytics — agrees on one status per product, decided in one place:

  • Out of stock — nothing left.
  • Low — at or below its reorder point.
  • Not selling — has sold before, but not for longer than your dead-stock window.
  • In stock — none of the above.

The order matters. Nothing on the shelf beats everything else, because you cannot sell it either way. And low beats not-selling: a product that is both needs buying, not culling. Telling someone to drop a line that is merely out of stock is the classic inventory-dashboard mistake.

A product that has never sold is not "not selling" — it may have arrived yesterday.

How long it lasts, and the date it runs out

Velocity is units sold in the window divided by the days in the window. Cover is what is on the shelf divided by that. The run-out date is today plus the cover.

So a line that sold thirty units across ninety days is moving a third of a unit a day; twenty left is about sixty days, and the date says so. This is a straight-line estimate from what actually happened, not a forecast — it does not know about a season, a promotion or a supplier's lead time. It is a rank, and its job is to tell you which shelf to look at first.

A product that has not sold in the window has no velocity, so it has no run-out date, and it sorts to the bottom in both directions: never running out is neither the soonest nor the latest.

Restocking

A product is on the purchase list when it is at or below its reorder point. The quantity suggested is the gap to that point — or your order size, whichever is larger. Nobody orders eight mugs to clear a threshold; they order a box of sixty. A list that is arithmetically correct and practically unusable is not a list.

It is grouped by supplier, not sorted by urgency, because nobody places eleven orders — they place one per supplier. Each group carries its own total, out-of-stock lines sit first, and the whole thing exports as a CSV you can send.

Orders you have placed, and what is already coming

An order is a document, not a movement. Nothing has moved: the goods are still at the supplier. So an order changes no count — and that matters, because the count here is the sum of the movements and nothing is allowed to change it without a row to show for it.

What an order does change is the purchase list. Units you have already ordered are subtracted from what the list asks you to buy, so a box of sixty mugs on its way stops the list telling you to buy sixty mugs every day until it arrives. Acting on that kind of wrong means paying twice.

Receiving is the step that touches the shelf, and it asks how many arrived now rather than the new total, because "twenty of the sixty turned up" is what a delivery note actually says. A part-delivery is the normal case: the order stays open with the rest still outstanding, and closes only when every line is in. Freight or duty entered with a delivery is split across its lines by value, so the expensive line carries the larger share of the shipping.

An order with a promised date that has passed is marked late. An order with no promised date is never late — they did not say.

Suppliers: where to send the order

The purchase list tells you what to buy and from whom. The supplier directory is what makes it something you can send: contact details, payment terms, and how long delivery usually takes.

It is a lookup by name, not a fixed list you have to maintain first. The supplier on a product stays free text, so a product whose supplier is not in the directory still saves, and an import of three hundred lines never fails on a name nobody has entered. Filling a card in adds an email and payment terms to the purchase list; leaving it out changes nothing.

The list of suppliers is driven by your products, not by the directory — a name you buy from and have never filled in is exactly the row worth showing, because it is the one with no address on the day something runs out.

Where a supplier's usual delivery time is known, each line also gets an order-by date: the day the product runs out, minus that delivery time. It appears only when both are known; a date built from a product that does not sell would be worse than no date.

⚠ The name is the link. Renaming a supplier on their card does not rename them on the products — change it on the products instead.

Turnover and days of inventory

Turnover is cost of goods sold in the window divided by the value of the stock you are holding. Two means you sold twice what is on the shelf. Days of inventory is the window length divided by turnover: how long the average unit sits before it leaves.

One honesty note: the textbook formula divides by the average stock value across the period, which requires a record of what the shelf was worth on every past day. That is not recorded, so the closing value is used instead. Dressing up a number we never measured as an accounting ratio would be worse than the approximation — and for a shelf that is not swinging wildly, the two are close.

ABC analysis

Products are ranked by revenue in the window and split by cumulative share: A is the first 80%, B the next 15%, C the tail.

This is the number a small seller almost never has, and the one that changes what they buy. In most catalogues, class C is most of the product list and a rounding error of the income — while the A lines, usually a handful, pay for everything. Seeing which is which turns "what should I reorder" from a feeling into a decision.

Two details that matter: only products that actually sold are ranked, because something with no revenue has no share of it. And the biggest earner is always class A, even when its own share crosses the line on the first row — a shop where one product is 96% of revenue should not have its single best line filed as the tail.

Best earners, by profit

The "best earners" ranking is by profit, not by units, and they are rarely the same list. A sticker sheet can outsell everything three to one and still earn less than a mug. Ranking a shelf by volume is how people end up restocking the thing that keeps them busy instead of the thing that pays them.

Multi-currency

A product stores its own currency, and its movements default to it. Every figure that adds products together converts to the currency you are viewing the site in, at live rates. Conversion happens before the averages are computed, not after: a €5 batch and a $5 batch are not a "5.00 average" of anything. The forms always show and save the raw values, so a converted number is never written back.

Making things: recipes and production

For the seller who does not resell what they buy — jam, candles, soap, baked goods, assembled kits.

A recipe says what one batch of a product is made of and how many finished units that batch yields. The quantities are per batch, because that is how a recipe is actually written: "this makes 12 jars, and needs 3 kg of sugar". A component can be anything except the product itself — including another made product, so a gift set built from jars that were themselves built works and nests correctly.

Production is not a new kind of record. Making ten jars adds ten jars and removes their materials, each as an ordinary movement against its own product: a build row and one consume row per component, tied together by a batch reference. The count is the sum of the movements, and nothing may change a count without a row to show for it — so a production run can be read back, and reversed, exactly like anything else.

What a made unit costs is the point of the whole thing, and it is what a spreadsheet cannot tell you. A sheet can note that a run happened and move the quantities; it cannot say what the jar cost, because that needs the average cost of the sugar, the fruit and the lid at the moment you made it. Here the run is priced from those averages — freight included, so a lid that cost 0.30 on the invoice and arrived with 20.00 of shipping across 100 lids counts as 0.50 — and the resulting unit cost is written onto the build movement. From then on the finished product has a real cost of goods: sell it and the margin is the margin, not a price somebody typed once.

  • Labour or overhead entered on the run is part of what the batch cost, exactly as freight is part of what a delivery cost. It lands in the unit cost the same way.
  • A consumed material is neither a loss nor a sale. Its money moved onto another shelf. Counting it as a write-off would make every maker's profit figure wrong, so it is reported separately and never touches revenue or write-offs.
  • Short stock is reported, never blocked. People make things with materials they have not entered yet. The page says which components are short and by how much, and lets you record it anyway — the negative count that follows is visible and fixable, while a refusal just sends you back to a spreadsheet.
  • "How many can I make right now" is the whole-batch minimum across the components, which is the number a maker actually wants when they open the page.
  • The cost shown while you type is a preview. The run is priced on the server when it is recorded: a build is the one figure here that cannot be corrected by reloading, so it is never taken from a page that may be minutes stale.

Item typeproduct (you sell it), material (it goes into something) or consumable (neither: cleaning spray, office paper). Analytics that mixes ingredients into "what earns" is lying about both, and no recipe can name an ingredient that cannot be marked as one.

Keeping one shelf with somebody else

A shelf can be shared — with a business partner, an assistant, a bookkeeper, whoever actually touches the stock. What you keep on your own is untouched by this: personal products stay personal, and the two are never summed or shown together. A figure that belongs to a shared shelf is labelled as one.

Three roles, and they differ in what they are allowed to decide.

  • A viewer sees everything and changes nothing. Useful for an accountant, or for the person who only needs to know what is left.
  • An editor records what happens: deliveries, sales, write-offs, stock-takes, production runs, orders and supplier cards.
  • An admin decides what the shelf IS — adding, editing and archiving products, and setting the currency and what counts as low.

The split is not arbitrary. A product is the container everything else hangs off: its movements inherit its scope automatically, so a movement can never end up filed against the wrong shelf. Changing what the shelf is made of is a different kind of decision from recording what happened to it.

Everybody pays for themselves. Writing into a shared shelf needs your own subscription; looking never does, so a viewer needs nothing. If a subscription lapses, that person becomes read-only — nothing is hidden and nothing is deleted.

Every row is signed. Anything somebody else added carries their name — on products, on movements, on orders and on supplier cards. Your own rows are not labelled: signing your own is noise.

What does not happen automatically: joining a shelf does not move any of your own products onto it, and leaving does not take anything away from the people still there. Nothing is merged, ever. The demo shelf is yours alone and is never shared.

Exporting the whole shelf is free for everyone, on every plan, in every role — including a viewer, including after a subscription ends. Data you put in is data you can take out.

What it does not do

Said plainly, because finding out later is worse:

  • It does not connect to a shop, a till or a marketplace. What is in it is what you put there, by hand or by import. Nothing arrives from an order feed.
  • It is weighted average only — not FIFO, not LIFO, not per-unit serial tracking. For a shelf of interchangeable goods this is the method that answers "what did the units I sold cost me"; for serialised, perishable or batch-traced goods, it is the wrong tool.
  • It does not do variants as a structure. A t-shirt in three sizes is three products with three SKUs, not one product with a size axis.
  • It is not an accounting system. It tells you what your stock is worth and what your goods cost; it does not post journal entries, handle tax, or reconcile with a ledger.
  • The run-out date is arithmetic, not a forecast. It assumes the last period repeats. It has no idea that December is different.
  • There is no work-in-progress, no routing and no capacity. A run is instantaneous: materials out, finished units in, on one date. A workshop that needs to track half-made goods through stages needs a manufacturing system, not a stock tracker.
  • A supplier card is contact details, not an account. There is no ordering by email from here, no portal, no price list and no invoice matching: it holds what you need in order to place the order yourself.
  • A negative count is allowed on purpose. If you record more sales than you ever received, the tracker shows the shelf as negative rather than silently clamping it to zero — the number is wrong, and hiding that would be worse than showing it.

Your data

Everything exports: products, movements and the derived counts as one CSV, plus the restock list on its own. Export is free on every plan and complete — every field the forms collect. The tracker can also be run as a shared shelf, where a partner or an assistant works on the same numbers with their own role, and every row shows who added it.

Guide

Guide pratiche che usano questo strumento· in inglese

Tutte le 4 guide

Usiamo i cookie per mantenerti connesso. Informativa sui cookie