Answers · bookkeeping
How can I tell if an employee is stealing cash at the register by voiding sales, ringing fake refunds or opening the drawer with no sale, and how do I stop it?
Last updated
TL;DR: Look for the pattern, not the single event. A cashier who pockets cash usually has to make the register agree with the drawer, so the theft shows up as voided or deleted sales after payment, refunds with no matching sale or customer, cash refunds on card sales, heavy discounts or comps, and drawer opens with no sale, and it concentrates in one person, one shift or the hour before close. Give every employee their own passcode (a shared team passcode can't tell you who did what), require a manager to approve voids, refunds and no-sales, and each week compare each person's void, refund, discount and no-sale counts with everyone else's. Count each drawer at close against the POS's expected cash, deposit daily, and keep a copy of each day's sales and exceptions somewhere the staff who run the register can't edit. The ACFE's 2026 study puts the median loss from skimming and from cash larceny at $45,000 each, and small organisations have the highest median fraud losses of any size.
What should I check, step by step?
1. Give each employee their own POS login or passcode and stop using shared ones. Square, for example, says its shared team passcode can't track sales, time or activity by team member.
- Limit who can void a completed sale, issue a refund, apply discounts above a set level, or open the drawer without a sale. Make those actions need a manager's passcode, and don't let one person both ring and approve their own refund.
- Require refunds to be linked to the original sale, and card sales to be refunded to the same card, not in cash.
- Each week, run void, refund, discount and comp, and no-sale reports by employee and by hour. Flag anyone at two or three times the team average, refunds just under the approval limit, and clusters near shift change or close.
- Count each drawer at close and compare it with the POS's expected cash, including paid-ins and paid-outs. Record the variance and who counted. Small variances that keep coming out exactly even after a void or refund are a warning sign too.
- Make the deposit daily and match the bank deposit to the day's cash sales report. Keep the bank statement coming to you directly.
- Save each day's sales summary and exception list (voids, refunds, no-sales, paid-outs, variances) outside the POS, somewhere the manager and cashiers can't edit, or seal it to a ledger with no edit route.
- Check inventory against sales for high-value items. Stock that disappears without a sale, or comes back via a refund nobody can link to a customer, points the same way.
- If you find a pattern, don't confront anyone on the register data alone. Preserve the reports, camera footage and deposit records, and talk to your accountant or a lawyer about next steps.
How do employees hide cash theft at the register with voids and refunds?
Skimming means taking cash before a sale is recorded: the sale is never rung, or it's rung for less. Cash larceny means taking cash after it's been recorded, so the drawer comes up short unless something covers it. Register disbursement schemes cover it with a false entry, typically a fake refund or a void, so the drawer balances.
- That's why the evidence is in the exceptions. A sale voided after the customer has gone, a cash refund with no receipt or customer details, a refund to a card that wasn't used for the sale, a 100% discount, or a drawer opened with no sale shortly before a cash payment is pocketed.
- Most POS systems record these events with a time and the logged-in user. Square's API, for instance, distinguishes no-sale drawer events, cash tender payments, cash refunds, paid-ins and paid-outs on each drawer shift. The record is only as good as the logins: if staff share a passcode or a manager approves with their code left in the terminal, the who is lost.
How much do skimming and cash register fraud cost small businesses?
In the ACFE's Occupational Fraud 2026: A Report to the Nations, skimming made up 9% of cases with a median loss of $45,000, cash larceny 8% with a median loss of $45,000, and register disbursements 3% with a median loss of $14,000. Organisations with fewer than 100 employees had the highest median loss of any size, $126,000.
- The longer a fraud runs, the more it costs, so the goal of weekly exception reviews is to cut the time to detection, not to catch every dollar on day one.
Why keep a copy of POS sales reports that staff can't edit?
Anyone with a manager or full-access role in the POS can often change settings, edit items and sometimes delete records, and the same person may be the one doing the daily close. Square notes that giving someone full access also makes them an authorised representative of the account.
- Keep the owner role yourself, and keep a daily copy of the sales and exception reports outside the POS. If a day's report later doesn't match what the POS shows for that day, you know something was changed after the fact, and when.
How do I ask Rightshold about this (free, no key)?
Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “Is anyone actually using Rightshold's duplicate (mirror) ledger to seal their daily money records, and what kinds of entries are being sealed?”
{
"tool": "duplicate_ledger_status",
"arguments": {}
}- Free, no key. It returns counts only: mirror ledgers opened and entries sealed by type on live accounts. Entry contents and business identities are never published.
- The mirror ledger itself is a REST API with an API key you hold: POST /v1/mirror-ledgers opens one under a neutral label, and POST /v1/mirror-ledgers/{id}/entries seals a payment, adjustment or dispute_note entry as it happens, in integer cents with your own references. There's no edit or delete route, so a correction is a new entry.
- GET /v1/mirror-entries/{id} is free and needs no account: the entry as sealed, its chain check and its Bitcoin anchor status, so your accountant can check a day's close without your login.
Rightshold doesn't connect to Square, Clover, Toast or any POS, read your sales, count cash or detect theft. A mirror entry proves what you sealed and when; it can't show a sale that was never rung, and it doesn't stop anyone changing the POS. Exception reviews, permissions and cash counts are steps you run. Not legal, HR, audit or accounting advice.
What are the sources?
- ACFE: Occupational Fraud 2026: A Report to the Nations
- ACFE press release: Key findings from Occupational Fraud 2026
- Square Support: Create and edit permission sets (team passcode can't track activity by team member; full access = authorized representative)
- Square API reference: CashDrawerEventType (no sale, cash tender, cash refund, paid in, paid out)
Related
- Signs someone is hiding theft in your bank reconciliation
- How to keep a copy of your business books that your bookkeeper can't edit
- How to spot a ghost employee on your small business payroll
- How to prove small business books weren't edited after the fact
Not legal advice. JSON · Markdown · All answers
Get a free API key in one call
No card and no email needed. 100 free credits; the license and policy checks stay free without a key.
curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_... # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
-H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'
