Inventory
Stock in Tamra is always somewhere — a location inside a warehouse — and every change to it is a move with a document behind it: a receipt from a supplier, a delivery to a customer, a return, a transfer, an adjustment, a manufacturing order. Quantities and values follow the documents; nothing is typed straight into a stock figure. Inventory on the left rail holds it all.
Warehouses and locations
A warehouse is a physical site with a code (auto-generated, WH-002, if you leave it blank), an address and an active switch. Each warehouse holds locations: internal locations where stock lives (a shelf, a bay, a floor), and the special ones Tamra uses to account for movement — supplier (where receipts come from), customer (where deliveries go), adjustment (where counted differences are booked against). Most businesses start with one warehouse and its default internal location; add locations when you want to know where in the building something is.
On hand
On-Hand shows every product's quantity by warehouse and location, its unit cost and value, with reserved quantities (committed to confirmed orders) separated from available. Search, filter by warehouse or category, export. The Stock availability marker on sales lines reads the same figures, in the product's unit — a line in cartons is checked in pieces. Until the stock has loaded, pickers and markers show no figure rather than 0.
Receipts and deliveries
Covered in Buying and Selling: a receipt validates goods into stock at the order's net price per piece — after the line's discount, in your currency at the order's exchange rate, a carton's price shared over its pieces — against Goods Received Not Billed; a delivery validates goods out at the stock's own cost and posts exactly that as the cost of goods sold. Both live here and follow the same states — Draft → Ready → In progress → Done — with Validate as the moment stock moves. Both ask for lot or serial numbers on tracked products.
A receipt or delivery made from an order carries the order's goods only, each line for its order line; services stay on the order. Validated short, Create backorder for missing qty decides what happens to the rest: ticked, it waits on a backorder; unticked, the rest of each short line is closed on the order — not coming, or not going — and the order can finish. The order says so line by line, and Reopen the rest there brings it back. A delivery never closes what the shelf couldn't cover: that waits on a backorder either way, and it never closes a sales order line below what the order's posted invoices bill — credit the difference first, or keep the backorder. Cancelling the receipt or delivery that closed a line opens its rest again.
Returns
Goods going back to a supplier. A return is created from the debit note raised against the bill (see Buying); it appears under Returns as Ready, and Validate ships the goods out, from the warehouse they arrived in: stock decreases and the value leaves inventory at the stock's own cost — the average; under FIFO, what the goods cost on their own bill (the layers its receipts brought in, oldest first, then the oldest on the shelf for anything those no longer hold); or the standard — against Goods Received Not Billed at the debit note's price; any difference between the two posts to price variance. Goods carried at 0.00 go back with nothing to book. The (i) on the return says exactly that. Returns are validated only here — wherever a return is opened from, it opens in Returns — and only when the goods are still on the shelf they leave from.
Internal transfers
Moving stock from one location to another — a shelf to a shelf, or across warehouses. Set the route (from → to) once at the top, list products and quantities, and either Create pending (saved so the goods can be physically moved first; on-hand changes only when someone validates) or Create & validate in one go. Because the goods stay yours at the same cost, no accounting entry is written — only quantities per location change. Available shows live on-hand at the from location as you type; a transfer can't take more than the from location holds — validating it then is refused with what is there, and Create & validate stops before creating it. Creating a transfer needs the Transfers — create right; validating one needs Transfers — edit.
Adjustments and counts
When the shelf and the system disagree. Adjustments → New: choose the warehouse, add the products, enter the counted quantity against the system quantity (or re-read on-hand to refresh the system side), give each line a reason (damage, shrinkage, count correction — apply this reason to all matching lines saves typing), and complete. The difference moves in or out of stock and its value posts to the inventory adjustments account: a gain comes in at the cost you enter on the line (the product's cost if you leave it blank) — a standard-cost product always at its standard — and a loss leaves at the stock's own cost. Adjustments are Pending until completed, so a count can be entered over a day and applied at the end — but a loss can't take a shelf below zero: if stock left the shelf after the count, completing is refused and the line wants a recount.
Opening stock
Moving from another system? Settings → Move to Tamra → Stock on hand brings each item's quantity and value at the cut-over from the old system's stock valuation report (Excel or CSV): rows are matched to your products by code, barcode or name, you choose the warehouse, and the stock comes in on one adjustment dated the day before the cut-over, at the value it had there. One journal entry puts each product's stock account against Opening Balance Equity. Lot-tracked items need their lot; serial items come one row per serial number. An item that already has stock in that warehouse, or whose opening stock was brought in there before (even if it has sold out since), is skipped and the review says which, so running it again never doubles anything — correct a quantity with a count instead.
Lots and serial numbers
Products with tracking set to lot or serial ask for the numbers at receipt and at delivery. Lots & Serials lists every lot with its quantity on hand, location, and expiry where entered — with expiring within 30 days and expired filters for anything perishable — and every serial number with where it is and where it came from. Open a lot to see its full history of moves. A quantity going out that names no lot — at the till, on a delivery, transfer, count, spare-part withdrawal, production or vendor return — is taken from the product's lots on that shelf: the lot that expires first, then the oldest, one move per lot. A till refund puts the goods back into the lots they came from, and a cancelled spare-part withdrawal puts each part back under the lot or serial number it left with.
A product with serial numbers moves in whole pieces: its quantity fields step by 1 on receipts, deliveries, transfers, counts, returns, production and withdrawals, and a fraction is refused wherever stock moves — "…" has serial numbers, so it moves in whole pieces.
Reorder rules
A rule per product (and optionally per warehouse): a minimum (the reorder point), a maximum (the level to bring stock up to), and the quantity to order. When available stock falls to the minimum the product shows under Need reorder with the suggested quantity, and the replenishment policy on the product decides whether that becomes a purchase suggestion or a manufacturing one. Rules can be inactive without being deleted. A rule with no maximum never shows At Max.
The fulfilment queue
Open sales orders that need goods, ranked by what can ship now. Demand vs supply shows, per product, what's ordered against what's on hand and incoming; each order is Ready to ship, Waiting stock, or Short by named SKUs. Useful for the morning decision of what leaves today. A short product that has a recipe offers Create MO to make the rest.
Moves history
Every stock move ever — date, product, from, to, quantity, cost, and the document that caused it. When a figure on hand looks wrong, this is where the answer is.
Valuation
Every receipt writes a layer — so many units at so much — and everything that takes stock out takes it from those layers by the product's costing method:
- Average (the default) — on-hand value ÷ on-hand quantity. 100 at 10 plus 100 at 12 → average 11; sell 50 → cost of goods sold 550, value left 1,650.
- FIFO — the oldest layers go first. The same two receipts, sell 50 → 500 (from the units at 10), value left 1,700.
- Standard — everything comes in, goes out and is made at the standard you set; what you actually pay differs, and the difference goes to price variance. The standard changes only with Revalue on the product, which moves the stock on hand to the new standard.
Deliveries, the till, spare-part withdrawals, manufacturing, counts, scrap, vendor returns and receipt corrections all take stock the same way, and the books post exactly what the valuation released, to the cent. A till refund, a cancelled withdrawal or a cancelled delivery puts back exactly what left. Layers keep whole fils: Revalue on a FIFO product spreads the cost you type so the layers add up to what the books post, and under average cost the last of a layer takes its value with it, so no value is left on stock that has gone. Freight and duty ticked as landed cost on a bill join the goods they were paid for (see Buying). No period-end batch — the cost is settled the moment goods move.
Inventory → Valuation lists each product with its method, the units and value its layers still hold, and its unit cost; a layer with no units left counts for nothing there. Each product posts to its own inventory account (or its category's, or the company's), spare parts to MRO inventory.
Health check
Inventory → Valuation → Health check compares what should agree, in four steps. It only reads: nothing changes until you press a button on a row and confirm.
Products — each product's valuation should hold the units its shelves hold, at a believable cost. Listed are only the products that don't: shelves and valuation differ, value with no units behind it, below zero, or a cost five times above or below the last purchase price. Align brings the valuation to the shelves — units added at the product's cost or taken out at the cost they carry, value with no units cleared — and posts no entry, because the books already recorded the goods moving. Revalue sets a believable cost (it starts from the last purchase price). A shelf below zero wants a count first: Count… opens Adjustments.
Stock accounts — each stock account's balance in the books against the valuation of the products that post to it. Correct posts one entry that brings the books to the valuation, against the account you choose — Inventory revaluation unless you pick another. Align the products first: aligning changes the valuation, and with it these differences. Correct only when the valuation is right; if the books hold something that should stay (an opening balance posted by hand, say), bring that stock into the valuation instead.
Goods received not billed — once an order is fully received and billed, or cancelled, nothing should be left for it. Clear posts what is left against the account you choose — price variance unless you pick another. Orders still waiting for goods or a bill are expected to hold something; they are folded away under the list. An amount not tied to any order or bill (entries posted to the account by hand) is shown with a link to its ledger.
Orders waiting — purchase and sales orders still owed goods that no open receipt or delivery expects: most were validated without a backorder before 1.72, or had a receipt or delivery cancelled. Each row says what is owed, in the line's unit. Open order takes you there to choose Receive the rest (or Deliver the rest) or Close the rest. Nothing posts.
Reading the check needs the Valuation — view right (or the right to post journal entries); every correction needs the right to post journal entries.
The dashboard
Total value, units, receipts and deliveries this period, products below reorder, lots expiring, and the fulfilment queue at a glance.
Common questions
Stock shows in the wrong warehouse. Transfer it, don't adjust it — a transfer keeps the history honest.
On-hand is right but value looks wrong. A receipt was validated at the wrong price, or landed cost was ticked on a line it shouldn't have been. Moves history shows the layer. Revalue on the product sets the cost you type for the units on hand and posts the matching entry; the Health check shows whether the books and the valuation agree.
Can I sell below zero? No. A delivery ships what is on the shelf and keeps the rest open as a backorder (with nothing on the shelf it stays open as it is); transfers, counts, withdrawals, returns, receipt corrections and the till refuse to take a shelf below zero. Receive first.
I validated without a backorder by mistake. Open the order and press Reopen the rest: the goods are expected again and a receipt (or delivery) is made for them. If the receipt itself was wrong, cancel it instead: the rest opens again with it. A sales order already invoiced can't take its rest back — make a new order for it.
Two of us pressed Validate at once. The second one waits a moment and then sees what the first did: the same goods are never shipped twice, and a receipt is never received twice.
Why can't I change this product's unit, costing method or inventory account? Its history depends on them. The unit and type are fixed once the product is used anywhere; the costing method and stock accounts are fixed while stock is on hand. The cost of stock on hand changes with Revalue: type the new cost, and Tamra works out the amount from what the valuation holds and posts the matching entry.
Should I press Correct on every difference? No — first find out where it comes from. Align the products in step 1, then look at the account's ledger: a difference from a hand-posted entry that is right (an opening balance) is fixed by bringing the stock in, not by correcting the books.
How do I do a stocktake? One adjustment per warehouse, entered over the day, completed when the count is done. Freeze receipts and deliveries during the count.
Where are serial numbers on the invoice? On the delivery note, not the invoice; the invoice bills, the delivery ships.
If something goes wrong
- Validate refuses → the shelf doesn't hold enough (the message says what is there), every quantity is 0 (cancel it instead if nothing is coming), the picking is a vendor return (validate it in Returns), your role lacks the right for this kind of picking, a tracked product without its numbers, or a closed period.
- "Only … on … — can't take …" → someone moved or used the stock since the document was made. Check Moves history for the product, then lower the quantity or move the stock back first.
- A location won't change or delete → it holds stock (move it out first) or has stock history (it stays, for the record).
- A product doesn't appear on hand → it's a consumable or service, which carry no stock, or the receipt is still Ready.
- A banner says stock on hand didn't load → the figures are missing, not zero — usually a brief connection hiccup, and nothing has been changed. Try again (or Refresh data).
- Reserved quantities look stuck → a confirmed sales order was never delivered or cancelled. Find it in the fulfilment queue.
- Valuation and Books differ → open Valuation → Health check: it shows the difference for each stock account, the products that don't line up, and what is left in goods received not billed on closed orders. Usually an entry was posted to a stock account by hand; the account's ledger shows it.
- The health check says it needs a database update → the 1.71 update (inv_02 true cost) hasn't been run yet in Supabase.