← Back to blog

Cash register shortfalls: what causes them, and how to catch it same-day

25 June 2026 · 6 min read

  • cash management
  • operations

“The register was $18 short tonight.” If you run a restaurant, you’ve said or heard that line dozens of times, and most of the time it ends the same way: a look around, “must have been a change error,” and a note that’s forgotten by next time. The problem isn’t the $18. The problem is that you don’t know why, and what isn’t explained repeats. Eighteen dollars three times a week is over $2,500 a year, and that’s only the shortfalls you noticed.

This article covers where cash variance in a restaurant actually comes from, why the only useful way to measure it is per shift and per register, not at month end, and how to set up a close that catches the problem the same day, while everyone’s memory is still fresh.

Where the variance actually comes from: the five causes

Cash variance is simple by definition: what you count in the drawer minus what the system says should be there. The causes, though, are few and specific, and worth knowing in order of frequency, because that order is the reverse of what most people assume.

1. Change and keying errors. The most common and the most innocent cause. Change given from a $50 as if it were a $20, an amount rung as $31.50 instead of $13.50, a payment logged as cash when it was card (or the reverse). That last one is sneaky: the total register “balances,” but cash is short and card is over. Unless you count the two separately, you’ll never see it.

2. Comps and voids that don’t get logged. The coffee for the regular, the “on the house” dessert for the table that waited too long, the plate that came back and went out again. None of this is theft, it’s hospitality and normal operations. But if it isn’t rung as a comp or a void with a reason, the system expects revenue that never arrived, and the shift closes “short” when it was simply generous. Worse, it muddies the picture so a real problem doesn’t stand out when one occurs.

3. Orders that never got rung up. The handwritten pad during a packed lunch, the “ring it up later” that never happens. The damage here is double: revenue is missing and stock is missing, the portion already left the kitchen. That’s why cash variance should be read alongside stock variance: when both are missing, you’re looking somewhere different than when only one is.

4. Errors in the opening float and cash movements. The shift opened with $150 but got logged as $200, a supplier got paid out of the drawer with no receipt logged in its place, small change got “borrowed” from one register to another. No bad intent, but at close, all of it shows up as an unexplained gap.

5. Theft. We left it last on purpose: it’s the rarest cause but the most costly while it stays invisible, because it isn’t random, it’s a pattern. Unrung sales with the cash pocketed, voids processed after payment, change “rounded.” Its signature is consistency: small amounts, specific shifts, specific conditions. And that consistency is exactly what makes it detectable, if you’re measuring correctly.

Why “per shift”, not at month end

This is the key to the whole topic. A −$18 variance tells you almost nothing. A −$18 variance on Friday’s evening shift, on register 2, for the third Friday in a row tells you almost everything.

Per-shift variance means every shift is a closed box with its own start and end: opening float, sales by payment method, comps, voids, cash movements, closing count. When the box doesn’t balance, you know when (a window of hours, not weeks), where (which register), and who was there. The conversation happens the same day: “we were $18 short tonight, does anyone remember anything odd with change?”, and most of the time someone does, because hours passed, not months.

Compare that to the monthly “we’re losing money somewhere”: 60 shifts, four people on the register, hundreds of transactions, no chance of attribution, and all that’s left is a diffuse suspicion that poisons the team. Precision in timing isn’t a luxury, it’s what makes the variance explainable, and fair. Per-shift variance protects the honest staff first: when the numbers come out clean every day, nobody’s living under blanket suspicion.

Two rules make the count trustworthy:

  • Cash and cards, always separate. The combined total “balancing” hides half the problem, as we saw, the wrong-payment-method error cancels itself out in the total.
  • Blind close: whoever counts the drawer doesn’t see what the number “should” be first, they enter the count and then the system shows the variance. When you know the target, the temptation to round is human; blind close removes it from the equation and keeps your history honest.

What “catching it the same day” looks like in practice

With a manual close, all of this is possible, and exhausting: count, spreadsheet, compare against the Z report, dig through voids. Half an hour to an hour every night, which in practice means it happens “when we get to it,” which is rarely.

The automated version flips the effort. The system already knows every transaction, every payment method, every comp and void from the shift. At close, the only human step is counting the drawer, everything else is ready:

  • Expected versus counted, cash and card separately: at the moment of close, not tomorrow, not at month end.
  • An automatic alert when the variance passes a threshold you set (say, ±$10 or a percentage of shift revenue): a notification to your phone the moment the shift closes, whether you’re on-site or not.
  • Patterns instead of isolated incidents: which shifts show a consistent variance, how it correlates with comps and voids, whether the problem is “a little everywhere” (process) or “a lot somewhere” (targeted).

In Galadier the register closes itself and tells you within a minute whether you’re over or short, cash and card separately, per shift and per register. Comps and voids are rung with a reason and belong to the shift, so the variance you see is the real one, and the reporting shows you where cash isn’t balancing and where stock is leaking, together, in the same view, so the cause stands out from the noise.

Set it up this week

  1. Establish a per-shift close, not per-day: with a mid-shift count on any register handover.
  2. Separate cash from card on every close, no exceptions.
  3. Give comps and voids a button and a reason. Anything unlogged poisons the number.
  4. Set a tolerance threshold (fixed amount or % of revenue) and a rule: any breach gets discussed the same day, calmly, with the data in front of you.
  5. Keep history. The power isn’t in one close, it’s in the line of 30 closes that shows the pattern.

One last note on the right expectation: the goal isn’t zero. A few dollars of variance now and then is normal noise from a live cash register. The goal is for the variance to be small, rare, and always explainable, and when it isn’t, to learn about it that same night, not on the year-end statement.

If you want to see what your own close looks like when it happens automatically, per-shift variance, cash and card separated, an alert to your phone before the shift even ends, book a demo. Bring a recent Z report and we’ll build the flow on your own numbers.


Related posts