Docs / Operations
Inventory: what is on the shelf, and where
How many there are and which bin they are in — quantity on hand from a movement ledger, allocated against available, bins you can search and pick by, stocktakes, adjustments and valuation.
Inventory gives the products in your catalog a quantity on hand and keeps it honest: every change is a movement in a ledger, shipping an order takes the goods out, confirming one reserves them, and a reorder point tells you when to top up.
Turn it on per item — services and made-to-order work usually stay untracked and behave exactly as before.
Items and Inventory are two screens over the same rows
They answer different questions, and it is worth knowing which one you are on.
Items is the catalog: what a thing is called, what it costs and sells for, its variants, its photographs, its barcode, its tags. It is the screen you open to decide what to charge.
Inventory is the shelf: how many there are, which bin they are in, what open orders have claimed, what is running low, what it is all worth, and when somebody last physically looked. It is the screen you open standing next to the stock.
Nothing is duplicated between them. Inventory carries no prices and no photographs; Items carries no bin. Each row on Inventory links straight through to its item when the question turns out to be a catalog one.
One thing worth knowing about the shape of the list: a row is a thing on a shelf, not a catalog entry. A product sold in three sizes is one item and three inventory rows, because the size is what sits in a bin and what somebody counts.
Three sections sit under it:
- On the shelf — the list itself, with filters for what is low, what is oversold, what has no bin yet and what has never been counted.
- Movements — the ledger behind every quantity, workspace-wide.
- Stocktakes — the physical counts.
Bins
A quantity on its own is half an answer. I have ten of these is not much use at four o'clock on a Friday; I have ten of these and they are in bin A3 is the whole thing.
A bin is free text. Type whatever is actually written on the shelf edge —
A3, top shelf, left, the crate under the bench, by the window.
OrderDen never parses it, never validates it and never renumbers it, because
the only bin scheme that gets used is the one already in the room.
Where a location is the coarse where — the studio, the lock-up, the van, and every stock movement names one — the bin is the fine one. Most workspaces have exactly one location and never think about it, and use bins for everything. That is the intended shape.
One thing, several bins
A run rarely fits on one shelf. Type them comma-separated —
ABC, CDG, WER — and the item reads as being in all three.
The list is the whole answer, and typing it again replaces it. To drop a bin,
delete it from the line; to add one, type it on the end. Blanks and repeats are
dropped, so a stray comma costs nothing and ABC, abc is one bin, not two.
Twenty in one place is the cap — a shelf list longer than that is a
spreadsheet, not a bin scheme.
There is no quantity per bin, on purpose
This is the one thing worth understanding about bins, because it is the question everybody asks second.
OrderDen will tell you 175 on hand, in ABC, CDG and WER. It will not tell you 25 in ABC, 50 in CDG, 100 in WER, and it is not going to.
Counting stock per bin sounds like a small addition and is not. It would mean naming a bin every time anything happened — receiving a delivery, shipping an order, a production run taking materials off the shelf, every adjustment and every count. Moving a box from one shelf to the next would stop being a thing you just do and become a transfer you have to record. Every stock report would grow a bin column. That is a warehouse system, and it is a different product for somebody with a warehouse and staff to keep it honest — see what OrderDen is.
So bins answer where to look, and the ledger answers how many there are. Walking to ABC and finding it empty costs you ten seconds and CDG is right there; keeping three per-bin counts truthful all year costs you every day. If your shelves have genuinely outgrown that, say so and it can be looked at as its own decision — but it is not a setting hiding somewhere.
Setting them
Three places, all of them the same field:
- The inventory list, in the Bin column: click it, type, press Enter. This is the one to use — it is where you are already looking when you notice a thing has moved shelf.
- The item page, on the Stock card, which is where you land after a search.
- The API, at
PUT /inventory/bins.
Clearing the box clears them all. Nothing about a bin is a quantity, so changing one moves no stock and writes no movement: it renames where a thing lives. The change does go on the item's history, because where something lives is shared information and the next person to walk to that shelf is relying on it.
An item sold in variants carries its own bins per variant, not one set for the
family — the family is not what is on the shelf. With more than one location
each place keeps its own set, and the list shows them together
(Studio: ABC, CDG · Shed: B1); filter by location to edit one place's,
since a label typed into a combined cell would not know which shelf it belonged
to.
Finding things by bin
Bins are searchable everywhere a thing is:
- The inventory list's search box matches the bin as well as the name, number, SKU and barcode.
- The header search bar, on any screen: type
A3and you get what lives in A3. Somebody standing at a shelf reading a label has exactly that and nothing else. - Show → No bin yet on the inventory list is the gap: everything nobody has told OrderDen the location of. Closing that list is what makes a pick list worth printing.
Where they show up
| Where | What it does |
|---|---|
| The inventory list | Its own sortable column, edited in place. |
| The item page | On the Stock card, beside the quantity. |
| Pick lists | The whole point: the sheet is sorted by each line's first bin, so picking an order is one lap of the room instead of four. A line in two bins names both and you take from whichever has them. |
| The packing slip | Only if you turn Print bins on (Company Settings → Documents). Off by default — the slip goes in the box, and where a thing lives in your workshop is nobody else's business. |
| The CSV export | A Bin column, and a Locations column beside it. |
Pick lists
Pick list on any order prints the sheet you walk the shelf with. It is deliberately not the packing slip:
| Packing slip | Pick list | |
|---|---|---|
| Who reads it | The customer | You |
| Where it ends up | In the box | On the bench |
| Sorted by | The order the lines were typed | Bin |
| Shows | Prices, the gift message, your thank-you note | Bin, quantity, and what the shelf says it holds |
It lists what is still to go out — ordered less shipped less cancelled — so a part-shipped order never gets picked twice. Lines with no bin recorded go at the bottom rather than into the middle of the walking order, and the sheet says how many there were, because that is the list worth closing.
Only goods appear. A deposit applied, a tip, a late fee and an hour of labour are all real lines on an order and none of them is on a shelf.
Tracking an item
On the item form, tick Track stock and optionally set a reorder point (the level that counts as low) and a reorder quantity (how much you normally top up by, shown beside the alert as a suggestion). Then, on the item page, Set opening stock: the quantity you have right now, what each unit cost you, and the date of the count. That writes the first entry in the item's ledger.
Opening stock
Nobody starts trading on the day they start using an app. Opening stock (from Inventory, or Items) is the whole shelf on one screen: every product and material, a box for what you counted and a box for what each one cost you, and one date at the top for when the count was taken.
Fill in the lines you have counted and leave the rest blank — a blank box is "not counted today", never "there are none", so a workshop with sixty materials can do the eight that matter and come back for the others. Each line you fill in writes one opening movement to the ledger, and turns tracking on for that item if it was off: counting something is exactly the moment you decide to start tracking it.
Counting again later is safe. Setting a balance a second time books the difference as a further opening movement, so the shelf lands on your new count rather than doubling up.
Leave the unit cost empty when you are re-counting, which is what a stocktake wants: the quantity changes and what the stock is valued at does not. A cost you type there is not the price of the units you counted today — it replaces the cost basis of everything you hold, so every unit on hand is revalued and the margin already reported on past work moves with it. That is the right thing when you are deliberately re-basing (the old figure was wrong, or the stock was written down), and the wrong thing when you simply know what the last box cost. Both screens leave the box empty on anything that has been counted before, and warn — naming the old figure and the new one — if a different cost goes in it. The item's history records the replacement the same way, so a valuation that moved can be traced to the count that moved it.
Back-dating matters. Give the date the count was actually taken and a valuation report run for any date after it gives the answer it would have given then.
Counting on a spreadsheet instead
A shelf with two hundred things on it is faster counted on a clipboard and typed into a spreadsheet than clicked through a screen, so the importer takes the count as a CSV under Opening stock. One row per thing: the item number or SKU (a variant by its own SKU), what you counted, optionally what each one cost, the date, and — if you have more than one — which location the count was of.
It goes through exactly the path this screen does, which buys the two things that matter:
- Re-importing a corrected count books the difference, never a second balance. A count that was wrong is fixed by fixing the file and importing it again, not by working out an adjustment.
- Counting the lock-up never books the studio's stock away. Name a location and the balance is that shelf's; leave it blank and it is your default location's.
A location name that matches nothing is a rejected row rather than stock quietly filed in the wrong place, and the message lists the locations you do have. Nothing is created by this import, so there is nothing to undo — putting a balance back is importing the count that was right.
The other half of an opening balance is the money owed to you — see unpaid historical invoices, which the importer also takes as a CSV under Open invoices.
The Stock card
The item page's Stock card shows five figures:
- On hand — what is physically there: the sum of every movement.
- Allocated — what you have set aside for named order lines. Nothing has left the shelf; those units are simply spoken for.
- Available — on hand less allocated, less anything still curing or quarantined: what you can still promise.
- Short — open order quantity with neither an allocation nor stock behind it. This is the "we need this many more" figure.
- Average cost — the weighted-average unit cost of the stock on hand, and the value it comes to.
Quantities carry three decimals (a kilogram of filament, a litre of resin); document lines still use two.
Items sold in variants
Where a product has variants, the stock is the variant's: each size and scent has its own quantity on hand, its own average cost and its own movements. The product's figures are the roll-up — on hand is the sum, and the average cost is weighted by what each variant holds. An adjustment or an opening balance on such a product has to say which variant it is for.
Kits
A kit has no stock of its own. What it can supply is the smallest number of whole kits its components allow, and shipping one writes a movement per component rather than one for the kit.
The movement ledger
Nothing edits the quantity on hand directly. Instead the Movements tab on the item page lists every entry, newest first, and on hand is their sum:
| Reason | What it records |
|---|---|
| Opening stock | The balance when tracking began — or a later reset (see below). |
| Adjustment | A manual correction with a reason: damaged, gift, sample, shrinkage, found… |
| Shipment | Goods that left with a recorded shipment (one entry per line). |
| Shipment voided | The reverse, when a shipment is voided. |
| Receipt | Goods booked in against a purchase, at what they landed at. |
| Materials consumed | What a production run took off the shelf to make something. |
| Production output | The finished batch a production run put on the shelf, at what it cost to make. |
| Waste | Material spoiled on a run — poured short, cut wrong, spilled. An adjustment, so it is never a cost of goods sold. |
| Return | Goods a client sent back (see below). |
| Sale | Goods handed over against an order or invoice. |
Every movement also names where it happened — see locations, next.
Inventory → Movements is the same ledger for the whole workspace rather than for one item: every entry, newest first, filtered by item, place, reason or date, with the totals in, out and net for whatever you filtered to. It is the screen for the afternoon when a figure looks wrong and the question is simply what happened here? — and it exports to CSV.
Nothing on it writes, and nothing ever will. The ledger is append-only: a mistake in it is corrected by a further movement, never by an edit. That is the whole reason the figures can be trusted a year later.
Locations
A quantity on hand is only half an answer. Twelve candles is not the same fact as twelve candles in the studio, twelve in the lock-up down the road, or twelve in a crate in the back of a van. Selling the second lot from the first is how a maker oversells.
So stock has a place. Every workspace has exactly one to start with — a Studio — and if you never open the page you will never notice: every movement lands on it, availability is its availability, and the item page shows one row.
Company Settings → Locations is where you add more, when you have them:
| Kind | What it is |
|---|---|
| Studio | Where the work is made and stock normally lives. |
| Storage | A lock-up, a second room, the shed. Stock, no making. |
| Van | The vehicle, for a maker who keeps stock in one. |
Exactly one location is the default: it is where stock lands and documents are picked from unless something says otherwise. You cannot switch the default off or delete it — make another one the default first.
Once you have two, the item page grows a table showing where its stock is, what open orders claim at each place and what is free. An order carries a location too, so it commits the stock on the shelf it will actually be picked from.
A location that has ever held stock cannot be deleted — the ledger points at it. Switch it off instead: it stops being offered without breaking history.
Moving stock between two of your own places is two adjustments: one off the shelf it left, one onto the shelf it reached. Reports → Stock by location shows the whole picture: quantity and value at every place.
Counting stock
The ledger is a very good book-keeper and a poor witness. It knows every sale, receipt and production run; it does not know about the candle that went home as a sample, the jar that broke in the van, or the two nobody wrote down.
A stocktake is how the difference stops being a slow drift nobody notices and becomes a recorded fact with a reason on it.
Inventory → Stocktakes → New stocktake. Pick what to count:
| Scope | When |
|---|---|
| One location | The useful count — a shelf you can actually walk. |
| One category | Everything under a category and its children, wherever it is. |
| Items with a tag | A spot check on whatever the tag means. |
| Everything tracked | Thorough, and a long afternoon. |
Kits are never counted — they hold no stock of their own — and neither is anything with tracking switched off. There is nothing about them to be wrong.
Freezing what the books say
On by default, and worth understanding. Counting takes a while, and things sell during it. If the count is compared against the live figure, every one of those sales reads as stock going missing. So OrderDen writes down what the ledger said the moment you started, and the review shows the movements since then on their own line: two sold since this count began, not two missing.
Turn it off only for a count taken with the doors shut.
Counting
The counting screen is built for a phone held in one hand at a shelf:
- Search at the top, focused, because finding the line is the slow part.
- Big steppers either side of the number. Nobody types on a phone while holding a jar.
- Not found is one tap — a count of zero is the most common surprising answer, and making somebody type it is how lines get skipped instead.
- Hide counted narrows the list as you go, and a progress bar says how far through you are.
Several people can count at once. The last number typed for a line wins, and the line remembers who typed it and when — so who said there were four? has an answer.
Rest are zero marks everything nobody found as zero, for the end of a shelf-by-shelf sweep. It is deliberately a button rather than something posting assumes: "we never got to the back room" and "the back room is empty" are different facts, and only a person knows which one happened.
Reviewing, then posting
The review lists the differences worst by value first. A hundred missing washers matter less than one missing table, and a list sorted by units puts the washers on top and buries the thing worth looking into.
Post the count writes one Stock count movement per line that differs, all in one transaction, with the reason you typed on it. Lines that matched write nothing. From then on the count is frozen: correcting it is a fresh adjustment, not an undo.
One subtlety worth knowing: the variance is measured against the frozen figure, but the movement is measured against what the shelf holds now. A candle sold during the count already left the ledger on its own Sale movement, and booking the variance against the frozen number would take it off twice.
Curing and quarantined stock is counted like anything else — it is physically there — and posting never touches those figures. What is still curing is a question the production run answers.
The item page shows when each thing was last counted. A figure nobody has checked in a year is a figure, not a fact.
Where the shrinkage is
Reports → Stocktake variance reads the same counts two ways: line by line for what was wrong on the day, and per item across the period for the question that matters over a year — which things go missing. Shrinkage is almost never spread evenly; it is the small expensive thing near the door, and this is the table that says so.
Barcodes and labels
A barcode is not paperwork. It is the difference between counting a shelf in twenty minutes and counting it in two hours.
Giving things a code
Every item and every variant can carry one — an item's on its Barcodes tab, a variant's on its row in Variants. Two kinds turn up:
A supplier's, off the box — a thirteen-digit EAN-13 or a twelve-digit UPC-A. Type it in. OrderDen checks the last digit, which is a checksum over the others, and tells you if one is mistyped rather than letting you print a sticker that will not scan.
Your own, for the things you make, which have no retail barcode and never will. Press Generate and you get the item number itself —
EO-LAV-200, so the sticker on the jar says what the jar is. It is derived from the number rather than a counter, so running it twice gives the same answer and a sticker reprinted next year still reads as the same thing. Items → Generate barcodes does the whole catalog at once.Generated codes used to be prefixed
ON-. Labels printed under that scheme still scan: a code that startsON-is looked up with and without it, and nothing already stored is rewritten.
Generating never overwrites. A manufacturer's code on a bought-in material is worth far more than a made-up one.
A product sold in variants carries no code itself — the variant does. The family is not what is on the shelf.
A code belongs to exactly one thing. Try to give a second thing a code that is already in use and OrderDen names what has it, because "that barcode is taken" tells you nothing and "the Lavender 200g tin already has it" tells you what to do.
Printing them
The Barcode labels card on an item page prints onto either:
| Avery 5160 | 30 to a sheet of Letter, 2⅝ × 1in — the address label already in the drawer. |
| 2 × 1in thermal | One per page, for a Dymo, Zebra or Brother roll printer. |
Start at is the field that pays for itself. Nobody's print run uses a whole sheet of thirty; the part-used sheet goes back in the drawer, and next time you start at slot 9 and use the other twenty-two instead of binning them.
The name goes under the bars, and the price too if you tick it — leave it off for anything a customer will see, since a price on a sticker is a price you have to peel off when it changes.
Scanning
Three kinds of scanner, and OrderDen does not care which you own:
- A USB or Bluetooth scanner — the £30 kind — presents itself to the computer as a keyboard. It types the code and presses Enter, and every screen below listens for it. Nothing to set up, no permission to grant, and it works on a laptop at a bench with no camera involved.
- The camera on an Android phone, using the browser's own reader.
- The camera on an iPhone, using a reader OrderDen ships itself. It is loaded the first time you open the camera and never before, and it comes from OrderDen rather than anybody else's servers.
Where it works, and what a scan does:
| Screen | A scan |
|---|---|
| Counting a stocktake | Adds one to that line. |
| Receiving a purchase | Counts one in against its line. |
| Shipping an order | Puts one in the box. |
| The item form | Fills the barcode box, so a supplier's thirteen digits are read rather than typed. |
| The search bar | Finds the item, on any screen. |
On the counting, receiving and shipping screens the match is made in the browser rather than by asking the server — the stockroom is exactly where the signal is worst, and a lookup that hangs for four seconds an item is a scanner nobody picks up twice.
A code that matches nothing says so. It never quietly does nothing.
Scanning also falls back to SKUs and item numbers, because a great many boxes have only those printed on them and a reader will read either quite happily.
Curing stock
Some things cannot be sold the day they are made: soap, candles, cheese, spirits. Set Curing days on the item and every batch a production run finishes gets a date it becomes sellable.
Curing stock is on hand — counted, valued, insured — and not available:
available = on hand − allocated − curing − quarantined
Wherever on hand is shown, curing is shown beside it with the days remaining, so nothing is promised before it is ready.
Adjust on the Stock card records a manual movement: choose remove or add, the quantity, a reason (the list suggests the usual ones; any text works) and an optional note and date. Adding stock can carry a unit cost, which moves the average; removing stock never changes it.
Reset opening stock on an item that already has movements books the difference between the count you enter and what was on hand, so the ledger still adds up, and a unit cost given here replaces the average outright — a fresh cost basis rather than a blend.
Every movement is also written to the item's History as a plain sentence — "Stock adjusted −3 (damaged): 47 on hand" — with who did it.
Orders and shipments
- Confirming an order claims no stock by itself. Ten orders come in and there are five candles on the shelf: you decide who gets them, on the order's Stock allocation card on its Fulfilment tab, and until you do the shelf stays free.
- Allocating sets a quantity aside for one line, optionally naming the shelf it comes off. Nothing moves — allocated stock is still on hand, counted and valued — it simply stops being available to anybody else. Type the quantity the line should end up with (not an amount to add), and clear the box to hand it back.
- Sending an order back to draft, cancelling it, completing it or deleting it releases everything it held. Closing short, or editing a line's quantity down, releases whatever the line can no longer take.
- Shipping takes the shipped quantity out of stock (a Shipment movement) and uses up the promise behind it in the same breath. Voiding a shipment puts the goods back on the shelf, but free — whether this order still gets them is your call again.
- The order page shows, under each tracked line, how much is available right now, and how far short the line is: what it still waits for that is neither set aside for it nor free on the shelf. It is a warning only — nothing is blocked; the stock simply goes negative until you adjust it or goods arrive.
- Items that don't track stock are ignored throughout.
Average cost and valuation
The average cost is a weighted average: when stock comes in with a known cost, the new average weighs what was on hand at the old average against the incoming quantity at its cost. Stock going out leaves at the average and never changes it; stock coming in without a cost is assumed to cost the average. Every movement also records what it was worth at the time, so the value of the stock on any date is a sum over the ledger rather than a replay of it — which is what lets the inventory valuation and the cost-of-goods statement be run for a date long past and give the answer they would have given then. On hand × average cost is the item's value, and the valuation report totals it across the catalog — with each item's last purchase price beside the average, so you can see at a glance where a supplier's prices have moved ahead of what your stock is valued at.
Most of that cost data arrives on its own: receiving a purchase adds stock at what the goods landed at, freight and tax included, which is what keeps the average honest. An item nobody has costed by hand adopts the average as its unit cost on the first receipt; one you priced yourself keeps your figure, with the average shown beside it.
Low stock
When on hand falls to or below the reorder point, the item is flagged:
- a Low stock badge on the Items list (filter Stock → Low stock to see only those; the list's summary line counts them) and on the item page;
- the Low stock dashboard widget, lowest available first, and the Inventory value metric's secondary figure;
- a low-stock alert that stays open, once, until stock climbs back above
the point — the alert history is on the API at
GET /api/v1/stock/alerts.
Changing the reorder point re-checks the item straight away; turning tracking off clears its alert.
From an alert to a purchase
Draft purchases for low stock on the Inventory page turns every open alert into draft purchases — one per preferred vendor, each line at the price and unit that vendor last charged, with a suggested quantity (the item's reorder quantity, or enough to get back above the point). The Draft a purchase button on an item's Stock card does the same for one item. Both raise drafts only; see Vendors & purchasing for how the preferred vendor and the remembered price are set.
The daily digest
Every morning at 07:00 in the workspace's timezone (Company Settings → Profile), OrderDen emails every member the list of items at or below their reorder point — number, name, on hand, available, the reorder point and the suggested reorder quantity — with a link to each item. Nothing is sent on a day with no low stock.
Each member chooses for themselves under Personal Settings → Notifications; it is on by default. The digest is sent by OrderDen, not through your own mail server, so it works whether or not you have connected SMTP. (It needs the background worker running with the platform mailer configured, which a hosted OrderDen always is.)
The lists, and the reports
Inventory is the shelf list: number, name, bin, on hand, allocated, available, value, and — hidden by default — SKU, reorder point, average cost and when it was last counted. Sort on any of them, pick your columns, save a view, and export the filtered set to CSV with the columns you chose.
The Show filter is the useful part:
| Show | What you get |
|---|---|
| Everything tracked | The whole shelf. |
| Low stock | At or below the reorder point. |
| Oversold | On hand or available below zero — promised more than you have. |
| No bin yet | Nobody has said where these live. |
| Never counted | No posted stocktake has ever touched them. |
The Items list keeps On hand and Available (both sortable) and, hidden by default, Committed, Reorder point and Average cost, so a catalog question that happens to need a quantity does not send you to another screen. Untracked items show a dash. It carries no bin: that is a shelf fact, and it lives on Inventory.
Reports under Reports:
- Inventory valuation — what the stock is worth as at any date: on hand, curing, unit cost, value and the price it last cost you to buy, totalled by materials and finished goods. A sum over the ledger, so any past date works.
- Stock movements — the ledger over a period, for every item or one item (the item picker), with the units that came in, went out and the net.
- Stock by location — a snapshot of what is where: quantity and value per item at each studio, storage unit and van.
- Stocktake variance — what the physical counts found, and which items keep coming up short.
- Production summary and Materials usage — what you made and what it got through, if you make what you sell; see Production.
- Cost of goods sold — at year end, what the things you sold actually cost you, worked out from this same ledger; see Tax time.
See Reports. Both are on the API, as are the item's stock figures, its movements, the adjustment and opening-stock actions and the alert list — see the API reference.
Returns and quarantine
Goods a client sends back arrive through a credit note, and what happens to them depends on what state they came back in — asked per line, because three of four coming back fine and one coming back cracked is an ordinary return:
- Resalable goes straight back on the shelf, at the cost it left at, and is available to sell again.
- Damaged goes into quarantine: on hand, counted in your inventory value, and held out of available until somebody decides whether it is repairable, a second, or scrap. Exactly the treatment curing stock gets, for the same reason — it is here, and it is not yours to promise.
- Scrapped never comes back at all. Stock that was sold has already left the ledger, so there is nothing to take out again; the credit note is what records that the goods are gone.
Returns show on the item's movement history as Return movements, and in the stock movements report.
Everything on this page is in the free tier — one person, the whole product, no card.
Start free