How to stop void and refund fraud at the counter
iotoms team · September 19, 2026 · 5 min read
A building-supplies distributor running four retail counters across two depots had a cash variance problem that never showed up where anyone was looking for it. The daily cash-up matched, shift after shift. The POS end-of-day report balanced. Nobody flagged anything for three months, until the owner's brother-in-law, doing an unrelated stock count, noticed that one counter's gross sales had been drifting down for weeks while foot traffic looked the same as ever on the security cameras. Sales were down. Cash was fine. Those two facts shouldn't both be true.
The gap between "balanced" and "correct"
A daily cash reconciliation only checks that the cash in the drawer matches what the register says should be there. It says nothing about whether the register's own total is honest. That's the blind spot a specific kind of counter fraud lives in: a cashier rings up a full-price sale, takes cash from the customer, hands over a receipt, and then — after the customer walks out — voids the transaction or processes it as a refund. The register now shows a lower total. The drawer, holding the cash the cashier pocketed, still matches that lower total exactly. Nothing looks wrong from the till.
At this distributor, one counter clerk had been doing this a handful of times a shift, always on transactions between eight hundred and two thousand rupees — big enough to be worth the risk, small enough that a manager glancing at the day's numbers wouldn't notice one missing sale in a hundred. Spread across three months and four counters where the same pattern eventually turned up in a smaller way at a second location, the loss ran into the low lakhs before anyone added it up. The owner's first instinct was to blame the POS software. It wasn't the software. The software had faithfully recorded every void, with a timestamp and a clerk ID, exactly as instructed. Nobody had ever pulled that report and looked at it.
Why it grows before anyone notices
Void and refund fraud is patient by design. A single fake void costs a business almost nothing to catch if anyone is watching for it — the giveaway is always the same: a sale voided or refunded after the customer has already left, with no item physically returned. But most small and mid-size counters don't watch for it, because nothing in the daily routine surfaces it. The manager's report is a sales total. The cashier's report is a drawer count. Void and refund activity sits in a sub-report nobody has a habit of opening, and the moment it goes unreviewed for one week, it goes unreviewed indefinitely — there's no trigger that ever brings it back to anyone's attention.
It also grows because the incentive is asymmetric. A clerk testing the waters with one small void a week and getting no reaction learns exactly how much room they have. The fraud doesn't need to be clever. It just needs to be quieter than whatever threshold triggers a look.
The turning point: treating voids as a report, not an event
Once the pattern surfaced, the fix the distributor put in place wasn't a new tool — it was a change in what got reviewed and who could authorize what. Four changes did most of the work:
Every void and refund requires a reason code, chosen from a fixed list, not free text. "Customer changed mind," "wrong item rung up," "price correction," "duplicate entry." A reason that doesn't fit any of those categories is itself a flag.
Voids and refunds above a set value need a manager's approval at the time of the transaction, not after. A clerk can't complete a Rs. 1,500 void alone; a supervisor has to authorize it on the spot, which is exactly the friction that makes the after-the-customer-leaves version of this fraud impractical.
Someone reviews a void-and-refund-by-cashier report every week, not every quarter. The report doesn't need to be sophisticated — clerk name, count of voids, total value, time of day. A clerk with a void count meaningfully higher than their peers, or whose voids cluster right after close-of-sale rather than during checkout, is the pattern to chase down. This is the single habit that would have caught the building-supplies distributor's problem in week two instead of month three.
Voids get cross-checked against inventory, not just cash. A legitimate void or return puts the item back on the shelf or reverses a stock deduction. A fake void doesn't — the item already left the store with the customer. Comparing voided-sale line items against actual stock movement catches exactly the fraud that a cash reconciliation can't, because the cash was never short in the first place.
None of these require new hardware or a forensic audit. They require the void and refund report to be something a human actually opens on a schedule, and a threshold above which one clerk can no longer authorize their own reversal.
What to check at your own counter
- Pull a void-and-refund-by-cashier report for the last 60 days and sort by count, then by value. One name meaningfully ahead of the rest is worth a conversation before it's worth an accusation.
- Check whether your POS requires a reason code on every void and refund, and whether "no reason given" is even possible to submit. If it is, fix that first.
- Set a rupee threshold above which a void or refund needs a second login to approve, not just the original cashier's.
- Cross-reference voided transactions against stock movement for the same SKU on the same day — a void with no matching stock reversal is the clearest signal there is.
- Look at when voids happen, not just how many. A void logged two minutes after the sale, during checkout, is usually legitimate. One logged at end of shift, in a batch, is the pattern worth escalating.
- Rotate which counter or till each clerk works, especially where one person has staffed the same register for months without a schedule change — familiarity with a blind spot is what makes it exploitable.
iotoms logs every void and refund with a mandatory reason code and the authorizing login, gates any reversal above a configurable threshold behind manager approval, and surfaces a void-and-refund-by-cashier report alongside the daily cash-up — so the pattern shows up in a weekly report instead of a stock count three months later.