If your margins feel mysteriously worse, the culprit is often not COGS - it's untracked voids, comps, and price overrides. This practical guide shows how to set simple reason codes, approval thresholds, and a weekly coaching loop that improves accuracy without slowing checkout.
Most margin leaks are not dramatic. They are quiet.
When owners talk about shrinking margins, the conversation usually starts with supplier costs, rent, and labor. Those are real. But there is another category that quietly wrecks profit without showing up as a single line item you can negotiate: voids, discounts, comps, and price overrides that are not tracked with intent.
This is not an accusation. In most small businesses, these adjustments happen for perfectly normal reasons: an item was mis-rung, a customer changed their mind, a promo was applied late, a manager wanted to smooth over a mistake. The problem is not that adjustments exist. The problem is that they are invisible or unstructured.
The fix is not "be stricter". The fix is to make adjustments measurable and coachable.
If you are building a cleaner operational backbone, start with the register system that captures who did what and why. M&M POS is designed for fast checkout and clear reporting, which is exactly what you need when you want to reduce overrides without turning the counter into a bureaucracy. You can download M&M POS to test an override policy in a safe environment before you roll it out.
Why reason codes beat surveillance
Many owners try to solve this problem with a camera and a vibe check. That is backwards. Cameras can help investigate a specific incident, but they do not fix process. Reason codes fix process.
A reason code is simply a short label you pick when you do an adjustment. The code turns an emotional moment ("I had to void it") into data ("Void: customer changed mind"). Once you have that data, you can improve training, menus, and workflows.
Start with a small set of codes (do not overbuild)
The best small-business reason code list is short enough that staff will actually use it. Here is a starter set that works in both retail and food service:
Void reason codes
- Customer changed mind
- Mis-ring / wrong item
- Duplicate entry
- Out of stock
- Manager decision
Discount reason codes
- Promotion / coupon
- Employee discount
- VIP / loyal customer
- Damaged item / quality issue
- Price match
Comp reason codes (especially restaurants)
- Kitchen mistake
- Service recovery
- Long wait
- Manager courtesy
Price override reason codes
- Incorrect shelf/menu price displayed
- Bundle/pack pricing adjustment
- Custom work / custom order
- Manager-approved exception
Notice what is missing: 40 codes and a taxonomy nobody remembers. Keep it tight.
Set approval thresholds that match your team size
One of the easiest ways to slow down checkout is requiring manager approval for every tiny thing. One of the easiest ways to lose money is allowing unlimited discounts with no friction. The sweet spot is thresholds.
A simple policy that works well:
- Discounts under 10%: cashier allowed with a reason code.
- Discounts 10% to 25%: supervisor PIN required.
- Discounts above 25%: manager approval required.
- Voids after payment: manager approval required.
The exact numbers are less important than having any structure.
Engineer the register flow so mistakes are less likely
From a systems perspective, most overrides are symptoms of upstream friction. Before you blame staff, look for these root causes:
- Confusing item names: two items that look the same on the screen.
- Too many open price items: anything that requires typing a price invites inconsistency.
- Promos not configured: staff manually discount because the POS is not set up for the deal.
- Modifier chaos: staff rings the wrong variant, then has to void.
Every time you see a cluster of the same reason code (for example, "mis-ring"), treat it like a bug report. Fix the catalog, not the cashier.
The weekly coaching loop that actually works
This is the part most owners skip. They either never review the data, or they review it angrily once a month. Neither builds a system.
Try this instead:
- Pick one day per week to review void/discount/comp reports (15 minutes).
- Look for patterns (not individual blame): same item, same shift, same cashier, same code.
- Choose one improvement for next week: rename an item, add a preset discount button, retrain a script, adjust a price sign.
- Share one learning at pre-shift: "We saw a lot of mis-rings on Item X. We renamed it. Use the new button."
When staff see that the data leads to fixes (not punishment), they participate.
Scripts that keep the counter calm
Two scripts make this whole system feel human:
- When discounting: "I can do that - I just need to select a reason." (Then pick the code.)
- When needing approval: "I can do that - let me grab a manager to approve it quickly."
No drama. No suspicion. Just process.
What to do when the numbers look scary
If you implement reason codes and your override totals look huge, do not panic. Often, the overrides were always happening. You are simply seeing them clearly for the first time.
Use that clarity to prioritize:
- If it is mostly "mis-ring": fix the POS catalog and screen layout.
- If it is mostly "service recovery": fix the operational bottleneck causing complaints.
- If it is mostly "price match": fix shelf labels and pricing discipline.
Use M&M POS to make adjustments measurable (and keep checkout fast)
The point of a POS is not just to take money. It is to turn chaos into data you can improve. If you want a system that supports fast checkout and better control over voids and discounts, start with a clean register setup and a short reason-code list.
You can explore M&M POS and download M&M POS to build a practice configuration, test thresholds, and ship a policy your team can follow without slowing the line.
Quiet margin leaks are fixable - but only if you can see them.