Ledgr/Documentation/Inventory
Inventory
Stock that stays honest across locations, with a movement history you can trace back to the document that caused it.
Inventory is included from Business upwards.
Products and variants
- Inventory → New product
Name, SKU, category, unit, buy price, sell price and VAT rate.
- Add variants if the product has them
Capacity, colour, size — each variant carries its own SKU and price and holds its own stock. A laptop in 16GB/512GB and 32GB/1TB is one product with two variants, not two products.
- Choose a costing method
FIFO, LIFO or weighted average, set per product. This decides what cost of sales is posted when a unit is sold, so change it only at a period boundary.
Locations and transfers
Stock is held per location, not as a single global number. Create a location for each place you actually hold stock, then move units between them with a transfer — which records an out at the source and an in at the destination so the total never drifts.
Reorder points, per branch
A product's reorder point compares the total on hand against one number. That is the right check for one shop, and the wrong one for two: 40 units in Johannesburg and none in Cape Town reads as perfectly healthy right up until the Cape Town counter cannot fill an order. The stock is real, it is just in the wrong province.
Open Stock Levels and any branch shortfall appears at the top. Use Thresholds on a row to say what each location should hold, and optionally how much to bring in when it drops — Ledgr keeps the trigger and the order size separate, because plenty of businesses know the first without having decided the second.
Two rules worth knowing. A location with no threshold of its own falls back to the product's reorder point, so nothing changes for a single-location business. And a branch is only reported short of something it is meant to carry — either it holds stock of it, or you set a threshold there. Otherwise every branch would be told it is short of every product it has deliberately never stocked, and a warning list nobody can read is a warning list nobody reads.
Batch tracking
Where it matters who supplied a unit and when it expires, receive stock in batches. A batch holds its id, received date, supplier and expiry date. Movements record the batch, so a recall or a short-dated line can be traced to the customers who received it.
Recipes and assemblies
If you buy parts and sell something made of those parts, a recipe records what one run consumes and a build turns the parts into the finished product. Ledgr costs the finished units at what the components actually cost, not at their list prices — which is why the gross margin on something you made can be trusted.
- Inventory → Assemblies → New recipe
Choose the finished product, list the components, and say how many units one run produces. If one mix makes twelve, put 12 there — the component quantities are then per mix, not per unit, so nothing has to be rounded.
- Add scrap where there is waste
A workshop cutting 2.4m from a 2.5m length consumes the whole length. Enter that as scrap and Ledgr consumes what you really use, so purchasing stops under-ordering.
- Add labour and overhead per run, if you cost them
These are capitalised into the finished stock — debited to Inventory, credited to Direct Labour and Purchases — because the value moved onto the shelf rather than leaving the business. Leaving it unposted would overstate the month's costs and understate closing stock.
- Build
The build sheet shows what the run needs, what is on hand, what it will cost per unit, and the most you could make right now. Components come off the shelf through the same costing method a sale uses, and the finished units are received at the total the build genuinely cost.
A recipe cannot contain the product it makes, directly or through a sub-assembly — Ledgr refuses it and shows the chain, because the cost would never resolve. A component that has its own recipe is flagged on the build sheet, so a shortfall you could build doesn't look like one you have to buy.
Short of stock, the build still records. The workshop assembled the thing, and refusing to put the finished goods on the books because the figures disagree is a bigger error than a component going negative — so Ledgr names what ran short and tells you that part of the cost is estimated. Reversing a build returns the components at the cost the build charged for them and takes the finished units back off, so reversing and rebuilding leaves stock value where it started.
Serial numbers and warranties
A batch answers what a unit cost and when it expires. A serial answers where one particular unit is, who has it, and whether it is still under warranty — the question a customer asks while standing at your counter holding the thing.
- Switch it on per product
Tick Track serial numbers when you add or edit a product, and set a warranty in months if the product carries one. Serialise the laptops, not the HDMI cables: turning it on for everything makes the till unusable.
- Capture a serial for each unit you receive
On the receipt screen, enter one number per unit — the count has to match the quantity, because nine numbers for ten units leaves one unit permanently untraceable. Stock that arrives numbered in a run can be generated from a prefix and a starting number instead of typed. Scanning the same unit twice is reported by number rather than silently skipped.
- Sell as normal
When a serialised product goes out on an invoice, Ledgr attaches the oldest unit in stock and marks the pick as automatic. If the customer took a different one, confirm the right serial against the invoice and the automatic flag comes off. Nothing is ever blocked for want of a serial — an invoice you cannot raise is worse than a unit you have to identify afterwards.
- Answer the warranty question
Inventory → Serials → Look up a unit: type or scan the number and you get the product, the receipt it arrived on, the invoice and customer it went to, and the days of cover left. The warranty runs from the date of sale, not the date you received the stock.
Returns and write-offs are separate on purpose. A return puts the unit back on the shelf and ends the warranty, because the guarantee never ran its course — but it keeps the customer and invoice on the record. A write-off retires the unit for good. A sold unit cannot be deleted, because that record is somebody's warranty.
The Serials tab also reports two mismatches rather than hiding them: units on hand with no serial captured, which happens when you switch tracking on for existing stock, and serials on file for units the stock ledger does not have. Neither stops you trading; both tell you what to fix.
Movement history
Every product has a movement log: date, type, quantity in or out, the document behind it and the running balance afterwards. When a stock take shows a variance, this is where you find out what happened.
Stock takes
- Inventory → Stock take → New
Choose the location and, if you want, restrict it to a category.
- Count
Enter counted quantities against the system quantities. On a phone you can scan barcodes instead of typing SKUs.
- Review the variance
Ledgr shows the difference per line, in units and in value.
- Post the adjustment
Approving the stock take writes the adjustment to the ledger and updates the on-hand quantities. The stock take stays on file as the reason.
Barcodes
The scanner opens from the product list and from the stock take screen. Scan to find a product, add it to a document, or count it during a take. Barcode scanning uses the device camera, so it is a mobile feature.
Inventory on invoices
Products added to an invoice as product lines carry their price and VAT rate across. When the invoice is sent, the stock movement is recorded and cost of sales is posted using the product's costing method — which is why the income statement's gross margin can be trusted without a manual journal at month end.