Free · Excel and Google Sheets · No macros, no sign-up
A free inventory tracking template that keeps a history.
Most inventory spreadsheets have one quantity column that people type over. This one records every delivery, job, sale, transfer and count as its own row, and works everything else out from those rows: stock on hand by location, a reorder list that fills itself, purchase orders and a stock count sheet.
Everything a small stockroom needs, and nothing it doesn't.
Nine sheets. Blue column headings are where you type; grey ones are calculated. It opens with a small plumbing and electrical stockroom as an example, so you can see every sheet working before you replace it with your own items.
| Sheet | What it does | You type in it? |
|---|---|---|
| Start here | Setup steps, daily routine and the rules that keep the numbers right | Read it |
| Items | One row per item: SKU, cost, supplier, reorder point and the level to reorder up to | Yes |
| Movements | Every delivery, job, sale, transfer, damage and count, one row each | Yes |
| Stock on hand | Quantity per location (up to five), total, stock value and status | No, calculated |
| Reorder | Items at or below their reorder point, with a suggested order and its cost | No, calculated |
| Purchase orders | What you ordered and what arrived; open orders count as “on order” | Yes |
| Stock count | Pick a location, type what you count, see each difference and its value | Counted column only |
| Suppliers | Contacts, lead times and payment terms | Yes |
| Lists | Locations, movement types, categories and units for the drop-downs | Yes |
Why this one doesn't drift.
Quantities are never typed. Each change is a row on Movements with an In or an Out, and every stock figure is a sum of those rows.
When a spreadsheet stores a single quantity per item, a wrong number has no explanation: it was overwritten, and the old value is gone. Here the quantity is never stored at all. It's calculated:
- On hand is every In minus every Out for that SKU, across all locations.
- On hand at a location is the same sum, limited to rows for that location.
- On order is what Purchase orders say was ordered and hasn't arrived yet.
- Reorder lists an item when on hand plus on order is at or below its reorder point, and suggests ordering enough to get back to its “order up to” level.
So when a number looks wrong, you filter Movements by that SKU and read down the column: every unit that came in or went out is there, with who it went to and who entered it. A mistake is fixed by adding a correcting row, never by editing an old one, so the history stays complete.
This is the Reorder sheet as it opens, with the example data:
| SKU | Item | On hand | On order | Reorder point | Order up to | Suggested order |
|---|---|---|---|---|---|---|
| TE-25-100 | Twin and earth cable 2.5mm, 100m | 2 | 0 | 3 | 8 | 6 |
| DL-LED-6W | LED downlight 6W | 22 | 0 | 30 | 90 | 68 |
The ball valves aren't on it, even though only 8 are left against a reorder point of 10: 22 more are already on an open purchase order.
Four steps, then it runs.
About fifteen minutes for a few dozen items.
- Lists: name your locations (up to five: a shop, a warehouse, each van), your categories and units.
- Suppliers: add who you buy from, with their lead time in days.
- Items: delete the example rows, then add one row per item with its SKU, cost, reorder point and the level you restock to. Don't type any quantities here.
- Movements: delete the example rows, then enter your opening stock as “Counted” rows, one per item per location. From that moment every figure in the file is live.
What to enter, and when.
Each event is one new row on Movements. The Type column has a drop-down with these exact names.
| When | Type | Quantity goes in | Job / customer / PO |
|---|---|---|---|
| A delivery arrives | Received | In | Purchase order number |
| Parts go out on a job | Issued to job | Out | Job number or customer |
| Something is sold over the counter | Sold | Out | Customer or invoice |
| A customer or job sends stock back | Returned | In | Job number or customer |
| Stock moves to a van or another site | Transfer out, then Transfer in | Out at one, In at the other | Where it went |
| Damage, loss or theft | Adjusted | Out | The reason, in Note |
| A count finds a difference | Counted | In if more, Out if less | Count date, in Note |
To count, pick a location at the top of Stock count and type what you find in the Counted column. It shows each difference and what it's worth; post each one to Movements as a “Counted” row. You can also print the sheet and count on paper.
Open it in Google Sheets.
The file uses only functions that both Excel and Google Sheets understand, so nothing needs converting by hand.
- Download the template.
- In Google Drive, choose New → File upload and pick the file.
- Open it, then choose File → Save as Google Sheets. Edit the copy that opens.
The formulas, drop-downs and highlighting use only features Google Sheets supports. Share the Google Sheets copy with anyone who records stock, and everyone works in the same file.
Where any spreadsheet runs out.
A spreadsheet is the right first inventory system. These are the places it stops.
- Size — 500 items and 5,000 movements; a busy stockroom fills that in months
- Permissions — anyone who can edit can change costs, delete rows or break a formula
- Who did what— only as good as people filling in “Entered by”
- Phones — counting and issuing from a van is awkward in a spreadsheet app
- Alerts — the Reorder sheet waits for you to open it; nothing tells you
- Ordering — purchase orders are a log, not something you send to a supplier
For the longer version, with what each failure costs, read inventory management in Excel: where it breaks.
The same idea, as an app.
We're building an inventory app that starts from this file: upload it, match the columns once, and keep going with phones, permissions, alerts and purchase orders you can send.
Before you ask.
- Is it really free?
- Yes. No email, no sign-up, no watermark. Use it and change it for your own business.
- Does it work with a barcode scanner?
- USB and Bluetooth scanners type the code into whichever cell is selected, so they work in both Excel and Google Sheets. Movements find items by SKU, so if you want to scan into Movements, use the barcode as the item's SKU.
- How many items and locations does it hold?
- 500 items, 5,000 movements, 1,000 purchase order lines and five locations. Rename the example locations on the Lists sheet; the Stock on hand columns follow.
- Which currency does it use?
- Any. Costs are plain numbers with two decimals, so they read as dollars, pounds or rupees alike.
- What happens to stock that's on order?
- Lines on Purchase orders that haven't been fully received count as “on order”. An item only reaches the Reorder sheet when stock on hand plus stock on order is at or below its reorder point, so you don't order the same thing twice.
- Can two people use it at once?
- In Google Sheets, or in Excel through OneDrive or SharePoint, yes. What no spreadsheet gives you is per-person permissions or a record of who changed what. The Entered by column is there for that, but it relies on people filling it in.