Inventory
Food cost

Restaurant Stock Movement Report: Trust Every Line at Month-End

What a Stock Movement Report Shows Across Every Site

A restaurant stock movement report shows how stock changed at one location over an accounting period. It starts from opening stock, adds what came in, subtracts what went out, and lands on closing stock. Read across sites, it tells a finance team where value moved, what it was consumed on, and which figures they can trust.

The value of that report is timing. Most teams meet their real food cost only at month-end, once every number has been reconciled by hand. By then the period is closed and nothing can be changed. A movement report read through the period turns that month-end surprise into a figure you watch as it moves.

Supy generates five inventory movement reports: stock movement between two counts, all stock movements, variance, item activity, and stock value. Each one is tied to your business-date calendar, so a report for a period matches the days you actually trade. It sits alongside the other numbers a group reviews on a schedule, covered in the inventory reports every multi-site group should review weekly. The table below shows what each report answers.

ReportWhat it answers
Stock movement between two countsHow stock changed from one count to the next
All stock movementsEvery stock-affecting event over a period, in one list
VarianceWhere counted stock differs from the system figure
Item activityThe full movement history for a single item
Stock valueWhat the stock on hand is worth at period end

Start With Opening Stock: The Figure Everything Else Trusts

Opening stock is the first line and the one every other figure leans on. It is simply last period's closing stock carried forward. If the two do not match, every number below inherits the error. The variance line at the bottom then looks wrong for a reason that has nothing to do with real loss.

So read opening stock first. Confirm this period's opening value equals last period's closing value at every site. A gap here usually means a count was reopened, a late invoice landed after close, or an item's cost was changed after the books were locked.

In the worked example, one branch opens the period at $42,800. That figure is not typed in fresh each month. It is the closing balance the previous period ended on, which is why a period that closes cleanly makes the next one easier to trust.

Diagram showing opening stock carried forward from last period's closing balance across three steps

Purchases, Transfers and Production: Every Way Stock Comes In

Stock comes in three ways, and the report shows each on its own line. Purchases are the goods you receive from suppliers. Transfers in are stock moved from another site or a central kitchen. Production is what a prep kitchen makes and books into stock.

Reading them separately matters because they behave differently. A purchase raises stock at a supplier cost you can check against the invoice. A transfer should carry its cost from the sending site, so the value follows the stock. Production converts raw items into a prep item at a costed yield.

Every one of these events is written to a single auditable ledger: goods receipts, production runs, and inter-branch transfers alike. That is what lets you drill from a line on the report to the exact events behind it. In the example period, purchases bring in $61,500, transfers in add $4,200, and production adds $3,600.

Bar chart of stock received this period by source: purchases, transfers in and production

Cost of Sales and Closing Stock: What You Actually Consumed

Cost of sales is the line finance teams close the month on. It is what the period actually consumed, valued at cost. On a movement report you do not estimate it from sales. You read it from the stock that moved.

The arithmetic is one line. Opening stock, plus everything that came in, minus what went out other than sales, leaves closing stock. Cost of sales is the consumption inside that: the value that left as sales rather than as wastage or a transfer.

Closing stock is the mirror image. It is the value still on the shelf at period end, and it becomes next period's opening figure. Supy's restaurant analytics software produces Sales and cost-of-sales reports at group, location, and menu-category level. You read the consumed value one site at a time, instead of rebuilding it in a spreadsheet. The table below works the full movement through for one branch.

Movement lineValue
Opening stock$42,800
Purchases+$61,500
Transfers in+$4,200
Production+$3,600
Transfers out-$2,600
Wastage-$1,900
Cost of sales-$58,300
Closing stock$49,300

Recorded vs Unrecorded Loss: Reading Variance You Can Trust

Variance is the last line and the one people distrust most. It is the gap between the closing stock the system expects and the closing stock a physical count actually finds. A trustworthy variance line separates loss you already recorded from loss you did not.

Recorded loss is stock you logged on purpose: wastage, staff meals, a transfer out. It is already on the report, so it should never surprise you. Unrecorded loss is the rest: a miscount, an un-logged transfer, or theft. It also covers a stale cost, set once and never updated, so value drifts while no stock moves.

Read variance by drilling into it, not by accepting the total. In the example, a count finds $48,500 against a system figure of $49,300, a variance of -$800 (-1.6%). Drilling in, $500 turns out to be a transfer and a wastage log posted late, which leaves $300 of genuine unrecorded loss to chase.

Because every stock event sits on one ledger, you can trace each part of that gap to a cause. That is the difference between a variance number you argue about and one you act on. For the full method, see investigating stock variance across sites.

Diagram splitting a stock variance into recorded loss posted late and unrecorded loss to chase

Read the report in that order and the month-end number stops being a surprise. Start at opening stock and confirm it carries from last period. Work down through purchases, transfers and production, then cost of sales and closing stock. Finish on variance, and split recorded from unrecorded before you act.

One number to watch as you go is cost of sales against sales. In the worked example that is $58,300 on $195,000 of sales, a food cost of 29.9%. A healthy range for most operations is 28-32%. If your movement report puts you above it, check the variance line first. Unrecorded loss is where a healthy-looking purchase figure quietly turns into a high food cost.

Book a Demo with Supy - reading your restaurant stock movement report

Ready to optimize your restaurant operations?

Blog

Our operational insights

No items found.

Your questions 
answered

Everything you need to know about Supy — from setup to integrations, pricing, and daily use. If it’s not covered here, just ask.

What is a restaurant stock movement report?
+

A restaurant stock movement report shows how stock changed at one location over an accounting period. It opens with the stock you started with, adds purchases, transfers in and production, then subtracts transfers out, wastage and cost of sales to reach closing stock. Read together, those lines explain where value moved and what the period consumed. Because each line is built from recorded stock events, a finance team can trace any figure back to the receipts, counts and transfers behind it, rather than trusting a single month-end total they cannot check.

How do you read a stock movement report?
+

Read a stock movement report top to bottom, in order. Start with opening stock and confirm it matches last period's closing figure at every site, because everything below depends on it. Work down through the ways stock came in, purchases, transfers and production, then the ways it left, transfers out, wastage and cost of sales. That leaves closing stock. Finish on the variance line, where a physical count meets the system figure. Reading in this order means each number is checked before it feeds the next, so the final variance is one you can act on.

Why does opening stock matter so much on the report?
+

Opening stock matters because every other line leans on it. It is last period's closing stock carried forward, not a fresh number. If this period's opening figure does not equal last period's close, the error flows into cost of sales, closing stock and variance, and the variance line looks wrong for a reason that has nothing to do with real loss. A gap usually means a count was reopened, a late invoice arrived after close, or an item's cost changed after the books were locked. Checking opening stock first saves hours of chasing a phantom variance.

What is the difference between recorded and unrecorded loss?
+

Recorded loss is stock you logged on purpose, such as wastage, staff meals or a transfer to another site. It already appears on the report, so it should never surprise you. Unrecorded loss is everything else that widened the gap between the system figure and a physical count: a miscount, an un-logged transfer, theft, or a cost set once and never updated so the value drifts. Splitting the two is the point of reading variance carefully. Recorded loss is explained, while unrecorded loss is what you investigate, and only the second signals something in the operation needs fixing.

How is cost of sales calculated on a stock movement report?
+

On a stock movement report, cost of sales is read from the stock that moved, not estimated from sales. Take opening stock, add everything that came in during the period, then subtract everything that left other than sales, and you are left with closing stock. The consumption inside that movement, the value that left as sales rather than as wastage or a transfer, is cost of sales. Because it is built from recorded events, you can drill from the number into the receipts, counts and production runs behind it, and read it one site or one menu category at a time.

How often should a multi-site group review the stock movement report?
+

A multi-site group should read the stock movement report through the period, not only at month-end. The whole value of the report is timing, because teams that meet their real food cost only when the books close have no chance to act on it. Reviewing it weekly, or even daily for high-value items, turns a month-end surprise into a figure you watch as it moves. It also makes month-end faster, because the lines have already been checked. Reading it per site, rather than as one group total, is what lets an operator see which location is driving a variance.

Can a stock movement report replace manual reconciliation in a spreadsheet?
+

Yes. Many groups still export sales and consumption into a spreadsheet and reconcile them by hand at month-end, which is slow and easy to get wrong. A stock movement report built on a single event ledger does that reconciliation continuously, because every goods receipt, count, transfer and production run is already recorded against the right site and period. That removes the manual export step and gives every line a trail you can follow. The report becomes the source finance closes on, so the spreadsheet is no longer where the numbers are rebuilt, only where they might be presented.

Ready to transform your operations?

Join 3500+ restaurant operators cutting costs, streamlining operations and making smarter decisions with Supy.