Inventory Reports
Stock on hand, what actually left the shelves, what is not moving, and what your stock is worth — with the two different cost bases Kassly uses.
8 min read · Updated 26 Sep 2026
On this page
Kassly has two families of stock report and they sit behind two different add-ons. Knowing which is which saves a lot of hunting.
Owners and Managers only, with one exception noted under Goods Consumed.
| Report | Where | Needs |
|---|---|---|
| Inventory Summary | Reports → Inventory Summary | Free: it's a snapshot of your stock right now |
| Goods Consumed | Dashboard, and the Ingredients page | Free for today. Any other range needs Business Reports |
| Slow-Moving Stock | Reports → Slow-Moving Stock | Business Reports |
| Valuation | Inventory → Valuation | Inventory Pro (₱400 per branch each month) |
| Reorder Suggestions | Inventory → Reorder | Inventory Pro |
| Expiring Items | Inventory → Expiry | Inventory Pro |
| Food Cost Analysis | Reports → Food Cost Analysis | Inventory Pro |
Day-to-day stock work — looking a product up, receiving a delivery, counting a shelf — is not in this part. See Stock levels, Receiving stock and Stock counts.
Two cost bases, and when each is used
Almost every complaint about inventory figures comes down to this, so it is worth reading before the reports themselves.
| Cost basis | Meaning | Used by |
|---|---|---|
| Current cost price | The cost sitting on the product record right now | Inventory Summary, Slow-Moving Stock, the dashboard's stock value |
| Weighted average cost | Averaged across every cost-bearing receipt of that product at that location | Valuation |
| Cost at the moment of movement | What the item cost when it actually moved | Goods Consumed |
| Cost at the moment of sale | What the item cost when it was sold | Profit reports |
They will not agree, and none of them is wrong. Current cost price is a snapshot; weighted average is a history; cost-at-movement is a fact about one event. If you have just changed a supplier price, expect Inventory Summary to move immediately and Valuation to move gradually.
Inventory Summary
Four figures, computed live. This report takes no date range at all — it is always "right now".
| Figure | Counts |
|---|---|
| Total SKUs | Stock records at the selected branch |
| Total Value | Quantity × the product's current cost price |
| Low Stock | At or below reorder point, but not yet at zero |
| Out of Stock | At or below zero, including oversold items below zero |
Two rules to keep in mind:
- Low Stock excludes anything already at zero. A product that has run out completely moves to Out of Stock and leaves the Low Stock count. Watching only Low Stock will therefore miss the things that most need ordering.
- An oversold item pulls Total Value down. Its quantity is below zero, so quantity × cost is negative. Valuation (below) leaves oversold items out instead, so the two totals differ by that amount until you recount. See When stock goes below zero.
- With no branch selected, Total Value includes your warehouses. Pick a branch and it becomes that branch's shelves alone. This is deliberate — the ledger books warehouse-bound deliveries as inventory, so leaving warehouses out of the store-wide figure would understate it against your books. A manager restricted to specific branches never sees warehouse stock in this total. See Warehouses.
Goods Consumed
This is the stock-depletion report. It answers "how much stock actually left the building", in units and at cost, over a period. It appears as a card on the Dashboard and in full on the Ingredients page.
It reads the stock ledger and sums every outflow, whatever caused it:
- sales, including the per-ingredient deductions a recipe writes at sale time
- transfers out to another branch or a warehouse
- negative adjustments, and count corrections that reduced stock
- production and job-order consumption
- waste and spoilage written off
That is the whole scope. There is no filter by movement type — if it left, it is counted.
Recipes are already expanded, so you never see the dish. A sold burger appears as beef, bun and lettuce, in their own units. It never appears as "1 burger". This is why the report is genuinely useful for a kitchen and why its units look nothing like your sales report. See Ingredients and recipes.
A few more rules:
| Rule | Detail |
|---|---|
| Voided sales are excluded | Both halves — the original deduction and the put-back. A voided sale never consumed anything, so it does not inflate the figure |
| Value uses the cost at the time of the movement | Falling back to the product's current cost, and to zero if neither exists |
| Dated by when the movement was written | Not by the sale's business day. A sale that syncs late lands on the day it synced |
| Branch scope | With no branch selected the total spans branches and warehouses. Pick a branch and warehouse movements drop out |
| Ingredients only | A toggle that narrows to ingredients — meaning anything flagged as an ingredient or used in any of your recipes. The flag alone is not enough, because most kitchens never set it |
| List length | The list shows at most 200 items. The summary line above it — distinct items, total units, total value — is always computed over everything, not just the visible rows |
Figures are cached for 60 seconds, so a fresh movement takes up to a minute to appear.
The one exception to Owner-and-Manager access: a staff member on a custom role that can view recipes can open Goods Consumed, but they are always forced to ingredients-only. They never see store-wide consumption. See Custom roles.
Slow-Moving Stock
Products that still have stock on shelves and sold nothing at all in the lookback window. Pick 30, 60 or 90 days from the selector.
| Rule | Detail |
|---|---|
| Zero sales, not low sales | One unit sold in the window removes a product from this list |
| Per branch | Judged for each (product, branch) pair. Something selling in Makati but not in Cebu appears for Cebu only |
| Stock-tracked products only | Services and non-tracked items are never listed |
| Stock on hand required | Something at zero has nothing sitting on a shelf, so it is not listed |
| Valued at current cost price | Not at weighted average |
The lookback counts back from today, not from your date range. The date picker at the top of the page does not affect this report. "Last 60 days" always means the 60 days ending now.
You can narrow the list to one category from the filter bar.
Valuation
Per-SKU stock value at weighted average cost, listed for every branch and every warehouse, with a store-wide total.
The weighted average for a product at a location is built from every cost-bearing inflow ever recorded there — stock-ins, returns and transfers in. It is a lifetime average, not a rolling one, so a single unusual purchase price keeps a small influence indefinitely. Where a product has no cost history at that location at all, Kassly falls back to the product's cost price.
Kassly values stock one way. There is no FIFO or LIFO option to choose.
Only quantities above zero are valued. An oversold item (below zero) does not appear here at all, where the Inventory Summary counts it as negative value.
Because this is the figure that ties to your books, it is also the one to reconcile against Financial statements. If they disagree, the usual causes are stock received without a cost, or adjustments made without one.
Reorder Suggestions and Expiring Items
Reorder Suggestions lists everything at or below its reorder point, grouped by the product's preferred supplier, so one screen turns into one purchase order per supplier. Items with no preferred supplier are grouped under No Supplier. Link a product to its supplier on the product form or in the import sheet — see Suppliers.
Each row shows the current stock, the reorder point and an Order Qty: the reorder quantity you set for that branch, or enough to climb back to the reorder point when none is set.
Create PO on a group opens a new purchase order with the supplier, branch and every line already filled in — see Purchase orders. It appears for users who can manage purchase orders.
Expiring Items has two lists: batches expiring inside the next 30 days (adjustable), and batches that have already expired. Expired batches are listed until you deal with them — they do not age out. Batch tracking has to be on for the product for anything to appear here.
Food Cost Analysis
One row per menu item that has an active recipe: selling price, cost per serving, food cost percentage, and the peso margin.
| Status | Food cost |
|---|---|
| Healthy | 30% or less |
| Watch | Over 30% |
| High Cost | Over 40% |
The summary above the table counts how many items are above your target. Target defaults to 35%.
Items without a recipe are absent — not zero-cost, absent. A menu built out half-way will show a food cost for the half that is built.
Export streams the whole table as a CSV, honouring the category filter and with no row limit. See Exporting reports.
What is not here
- Stock movement history for one product is on the product itself, not in a report. Open the product and read its movement list.
- Variance from a count is in the count record. See Stock counts.
- What a dish can still be made from is a POS-side availability calculation, not a report. See Recipe-derived stock.