Your food cost is 31.4% and it should be 29%. You have re-costed recipes, tightened portions, switched a produce vendor, and stood over the line watching plate-ups. The number will not move. Nothing in the kitchen explains a gap that size, because the leak is not in the kitchen at all — it is in the terminal at the server station, in the four hundred small adjustments nobody reads at the end of a week.
Here is what makes that gap so stubborn. Voids, comps, and discounts do not appear anywhere in your P&L as a line item. They subtract themselves from revenue before revenue ever gets recorded, so a restaurant losing $3,100 a month to ticket adjustments sees a slightly disappointing sales number and a slightly ugly food cost percentage and concludes it has a slightly disappointing month. Meanwhile the food that was comped still got cooked, still got carried, still came out of your walk-in. The cost stayed; only the revenue vanished.
At $1.4 million in annual sales, the typical spread between a controlled restaurant and an uncontrolled one on these three categories runs $28,000 to $56,000 a year. That is a full-time employee, or the entire profit of a slow quarter. What follows is how to read the report that exposes it, what thresholds to enforce, and how to tell a training problem from a theft problem before you accuse the wrong person.
Three Categories That Look Alike and Behave Completely Differently
Most operators lump these together in conversation, which is exactly why the leak survives. Each one has a different cost profile and needs a different control.
| Type | What happened | Food cost incurred? | Primary control |
|---|---|---|---|
| Void | Item removed before it was made or delivered | No — if it is a true void | Timing rule: before vs. after fire |
| Comp | Item made and given away at no charge | Yes — fully | Manager approval + reason code |
| Discount | Price reduced on an item or check | Yes — partially recovered | Promo code discipline |
Voids: the timing is the whole story
A void performed before the item fires to the kitchen costs you nothing. A guest changes their mind, a server mis-keys a modifier, the item disappears and no food was touched. Those voids should be frictionless — making a server hunt down a manager to fix a typo just teaches everyone to work around the system.
A void performed after the item fires is a different animal entirely. That plate exists. Somebody made it, and it either went in the trash or went to a guest who is not paying for it. Every post-fire void is a comp wearing the wrong label, and if your report does not distinguish the two you cannot see the difference between a $40 mistake and a $40 giveaway.
The most expensive void of all is the post-tender void — an item removed after the check was paid. There is almost no legitimate reason for one. It is the single highest-value alert you can set, and most operators have never looked at it.
Comps: real food, real cost, real reason required
Comps are a legitimate tool. A recovery comp on a 40-minute entree buys back a guest worth thousands over the next five years, and refusing to comp when you should have is its own kind of expensive. The problem is not that comps exist — it is that most restaurants log them with a reason code like "Manager" or "Other" that carries zero information.
Build a short, specific reason list instead: Long Ticket Time, Wrong Item Fired, Quality Issue, Guest Recovery, Staff Meal, Marketing/Influencer, Owner Table. Seven codes is enough. Suddenly a monthly total of $2,400 in comps decomposes into $1,100 of kitchen ticket-time failures, $600 of wrong items, and $700 of everything else — and now you have a kitchen problem to fix rather than a comp problem to nag about.
Discounts: the category that grows quietly
Discounts feel harmless because each one is small and authorized. Then you count them. Industry discount programs, employee meals, happy hour price levels, loyalty redemptions, and third-party promo codes stack until 8% of gross sales is being given away by policies nobody has revisited in three years. Discounts belong in the same report as voids and comps precisely so their cumulative weight becomes visible. Trimming them without touching the guest experience is the same exercise covered in cutting restaurant costs without cutting quality.
Exception data is only useful if someone actually sees it. KwickView surfaces voids, comps, and discounts by employee, reason, and shift — without exporting anything.
See how KwickOS tracks exceptions →Reading the Report: Six Patterns Worth Stopping On
A raw exception log is thousands of rows and no meaning. What turns it into a tool is knowing which shapes to look for. These six account for the overwhelming majority of real findings.
- Employee concentration. Rank staff by void dollars as a percentage of their own sales, never by raw dollars — your highest-volume server will always top a raw list unfairly. Anyone sitting above roughly three times the house average deserves a conversation, not an accusation.
- Post-tender voids. Any adjustment after a check is closed. This is the cash-skim signature and should trigger an alert the same day, every time.
- Cash correlation. Voids that cluster on cash-paid checks while card-paid checks stay clean. Card transactions leave a trail the employee cannot alter; cash does not. A 4:1 cash-to-card ratio on voids is not a coincidence.
- Time-of-day clustering. Adjustments concentrated in the last 30 minutes of a shift, during a manager's break, or in the closing hour when supervision thins out.
- Round numbers and repeats. The same item voided at the same price over and over, or comps landing on suspiciously tidy totals. Genuine mistakes are messy; manufactured ones are tidy.
- Reason-code monoculture. One employee whose adjustments are 90% a single code while the rest of the staff spreads across six. That is someone who found the code with the least follow-up.
Now the part operators skip: most of what you find will be process failure, not theft. Ticket times blowing past 22 minutes on Friday, a POS button layout that puts "void" next to "send," a new hire nobody trained on modifiers. Fix those first — they are cheaper to solve and account for the larger share of the dollars. The genuinely dishonest cases are rarer and, once you have the clean patterns above, much easier to isolate. For the harder cases, a structured approach to preventing employee theft covers the documentation and process side.
Daniel Bergstrom owns a 140-seat neighborhood grill in Madison, WI. Food cost had drifted from 29.8% to 33.1% over eight months with no vendor price increases that explained it. "I fired a prep cook over it. I still feel bad about that, because it wasn't him."
Pulling six months of exception data with employee and timestamp attached changed the picture in about twenty minutes. Voids ran $4,780 for the period. One bartender accounted for $2,910 of it — 61% of all void dollars on 14% of the sales — and 83% of his voids landed on cash checks after tender, most between 10:15 and 11:00 p.m.
But the second finding was bigger in dollars. Comps coded "Long Ticket Time" totaled $6,340, almost all on Friday and Saturday between 7:00 and 8:30 p.m., traced to a single undersized sauté station. "The theft was the story everyone wanted. The kitchen bottleneck cost me more than double and I'd been paying for it for a year."
Six months after adding a station and setting post-tender void alerts, food cost was back to 30.2% and total exceptions had fallen 64%.
Setting Thresholds That Hold Up on a Busy Friday
Controls that fight service get bypassed within a week. The goal is friction placed exactly where the money is, and nowhere else.
- Pre-fire voids: no approval. Server-level, unlimited, logged. Do not spend manager attention on typos.
- Post-fire voids: manager approval plus reason code. The food exists, so somebody senior owns the decision.
- Post-tender voids: manager approval, written reason, daily alert. Treat every one as an incident until proven routine.
- Comps above $25: manager approval. Below that, let a shift lead handle it so guest recovery stays fast.
- Unique manager PINs, no shared cards. A shared override code makes the entire audit trail worthless, and it is the most common control failure I see.
- Auto-logout after 60 seconds. A terminal left open under a manager's login is an unlocked till.
Then set the targets you will actually measure against: voids under 2% of gross sales, comps under 1%, discounts tracked separately with their own budget because they are a marketing decision, not an exception. Post those numbers where the team can see them. Visibility alone typically cuts adjustments 20–30% in the first month, before you change a single rule — the same effect that makes employee productivity metrics work when they are shared rather than hoarded.
Building the Weekly Ritual
The report is worthless if it lives in an export nobody opens. Make it a fifteen-minute standing block, same time every week:
- Scan the totals. Voids, comps, and discounts as a percentage of gross, against last week and the same week last year.
- Sort by employee, normalized. Adjustment dollars divided by that person's own sales. Look at the top three.
- Sort by reason code. Which operational failure is costing the most? That is next week's fix.
- Check the alert log. Every post-tender void from the week, individually, with a name attached.
- Close one loop. Pick a single finding and act on it — a conversation, a station change, a retrained modifier screen. One per week compounds; a list of twelve findings does not.
Fifteen minutes weekly beats a three-hour quarterly audit by a wide margin, because a pattern caught in week one costs a week and a pattern caught in month three costs a quarter. This is the same argument for watching operations continuously rather than retrospectively that runs through real-time versus end-of-day reporting, and the exception review slots naturally into whatever daily restaurant report template you already run.
Making Exceptions Visible Without the Export Ritual
Every field this analysis needs is already captured on the ticket: the employee, the timestamp, the item, the reason code, the payment type, whether the check was open or tendered. The obstacle is never data availability — it is that assembling it means exporting a CSV, building pivot tables, and repeating that chore every week until you quietly stop.
KwickView reads exception data directly from your KwickOS POS and keeps voids, comps, and discounts ranked by employee, reason, daypart, and payment type, with post-tender voids flagged as they happen. The weekly ritual above becomes a screen you glance at instead of a spreadsheet you rebuild — and the deeper mechanics of the analysis are covered in our guide to comp and void analytics.
Frequently Asked Questions
What is the difference between a void and a comp in a restaurant POS?
A void removes an item before it was made and delivered, so no food or labor was consumed and nothing leaves inventory. A comp removes the charge for an item that was actually produced and given to the guest, so the food cost is real and the revenue is gone. Because a comp always has a physical cost behind it and a void should not, the two need separate reason codes and separate approval rules.
What percentage of sales should voids and comps be?
A reasonable target for most full-service restaurants is voids at or below 2% of gross sales and comps at or below 1%, with promotional discounts tracked separately because they are a marketing decision rather than an exception. Quick service usually runs lower on both. What matters more than the absolute figure is the spread between employees: if one server sits at three times the house average, investigate that person regardless of where the overall number lands.
How do restaurant employees steal using voids?
The classic pattern is the post-payment void. A server collects cash for a check, then voids one or more items after the guest leaves, closes the ticket at the lower total, and pockets the difference. Variations include voiding an entire cash check, ringing an item on an open tab and voiding it after payment, and using a manager card left logged in at the terminal. All of them share a signature: voids performed after a check was tendered, concentrated on cash payments, at one employee.
Should managers be required to approve every void?
Requiring approval for every void slows service down and trains managers to swipe reflexively, which destroys the control you were trying to build. A better structure is to let servers void freely before an item is sent to the kitchen, require manager approval for any void after the item fires, and require both a manager and a written reason for any void on a closed or tendered check. That way approval still means something when it happens.
How often should I review the voids and comps report?
Review exceptions weekly at minimum, and set automated alerts for the highest-risk events such as post-tender voids or any single comp above a dollar threshold you choose. Monthly review is too late, because a pattern that runs for four weeks can cost thousands and the staff involved have already learned that nobody is watching. A five-minute weekly scan with alerts in between catches almost everything a monthly deep dive would.
The money is already leaking; the only question is whether anyone sees it this week or next quarter. Put voids, comps, and discounts on a screen you check in five minutes.
Learn more about KwickOS reporting →KwickOS Ecosystem
© 2024-2026 KwickOS. All rights reserved.