Back to blog
P1 — Cash close

Cash variance in restaurant — 11 root causes and the fix for each

Cash variance in restaurants explained — 11 root causes from UPI failures to skim, with the diagnostic question and concrete fix for each. India operator-grade.

Restaurant Daily editorial· Operator-grade research desk 15 May 2026 8 min read

Last updated 12 May 2026

Cash variance in restaurant — 11 root causes and the fix for each

About this piece. When the drawer is short ₹120 on a Tuesday night, the cashier shrugs and says "kabhi kabhi ho jata hai." Sometimes that's true. Most of the time it's one of eleven specific things, and each of those eleven has a specific fix. This is the diagnostic. Print it, stick it inside the cash safe, run down the list the next time variance shows up.

What "variance" means and why it's useful

Cash variance = actual drawer cash − expected drawer cash. Expected = opening float + cash sales − cash refunds − petty-cash outflows.

A variance of zero means the close ties. A variance of −₹X means the drawer is short by ₹X. A variance of +₹X means it's over.

Counter-intuitive truth: variance over is worse than variance under. A short drawer usually means a missing receipt, a small skim, or arithmetic. An over drawer almost always means a sale wasn't rung up — which means it doesn't show in the GST filing, doesn't show in the daily sales record, and doesn't show in your COGS analysis. Under is loss. Over is invisible revenue, and invisible revenue rots faster.

Public benchmarks put unrecovered cash leakage at Indian SMB restaurants between 3% and 8% of revenue (Crisil F&B SME 2023, NRAI 2024). Variance is the early signal. Run the diagnostic.

Indian restaurant cashier reviewing variance log under counter lamp
Indian restaurant cashier reviewing variance log under counter lamp

The 11 root causes — a diagnostic table

#Root causeDirectionDiagnostic questionFix
1UPI marked success but failedShortDoes UPI app dashboard match POS UPI total?Cross-check UPI app daily before close
2Cash refund without POS entryOverAre refunds equal in count to PCV refund slips?Use POS refund button always; never just hand cash back
3Petty spend without voucherShortIs voucher count plausible for the day?Voucher every outflow over ₹0; staple receipts
4Float drift (no fixed float)BothIs there a fixed float number on the drawer?Set float; reset every shift open
5Counting errorBothWas a denomination sheet used?Use the denomination sheet, count twice
6Discount applied after paymentOverAre discount entries clustered after cash collection?Apply discounts before payment in POS
7Aggregator COD logged as Swiggy revenueOverDid Swiggy/Zomato deliver any COD orders today?Separate COD line on close sheet
8Tip vs sale confusion (card)VariableAre card tips logged distinctly?Train staff on tip vs total field on POS
9Staff meal not punchedOverWas anything consumed off the line by staff?Staff meal punched as ₹0 sale OR logged on muster
10Skim — small, repeatedShortIs variance pattern consistently negative on one cashier's shifts?Review by cashier; CCTV check; rotate shifts
11Wrong opening floatBothWas the float counted at open?Open count is mandatory before first sale

If your variance investigation doesn't fit any of the eleven, the twelfth cause is usually wrong POS configuration — for example, a tax line being included or excluded inconsistently. That's a one-time fix with the POS vendor.

How to use the diagnostic on a variance night

Run down the table in this order. Stop at the first cause that fits.

  1. Direction first. Note whether the variance is short or over. Half the causes are eliminated immediately.
  2. Magnitude. Under ₹50, almost always counting error or a tiny PCV miss. ₹50–₹500, look at UPI / refunds / discounts. Over ₹500, look at POS configuration or skim.
  3. Pattern. If today's variance is similar to two prior variances in the last 14 days, you're looking at a process problem, not an event. Process problems have process fixes.

A composite operator we work with in NCR caught a 4-month skim in two weeks once she started running this diagnostic nightly. The pattern: −₹80 to −₹150, only on Tuesday and Saturday late shifts, only when one specific cashier closed alone. CCTV review confirmed. The discipline didn't catch the skim — the visibility did. Variance has to be measured nightly to be useful.

Cause #1 — UPI marked success but failed

This is now the #1 source of "small recurring variance" at most Indian outlets, because UPI is the dominant non-cash mode. Workflow:

  • Customer scans QR, types ₹420, hits pay.
  • The merchant's POS / phone shows "pending" or doesn't show anything.
  • The customer thinks it succeeded and walks out. Sometimes the bank reverses 4 hours later.

Diagnostic: Open the PhonePe Business / Paytm for Business / Razorpay dashboard at close. Compare the UPI total there against the POS UPI total. If they don't match, the UPI total in your books is wrong.

Fix: Wait for the success beep before letting the customer leave. Cross-check daily. Reconcile against the settlement, not against memory.

Cause #4 — Float drift

If the drawer doesn't have a fixed float that resets every shift open, you have no reference number against which to compute variance. The "expected" half of variance = expected − actual is undefined.

Diagnostic: Walk to the drawer. Is there a label inside that says "Float: ₹3,000"? If not, you have float drift.

Fix: Set the float using the F = D × p × s formula (read the imprest piece). Stick the label. Reset the float every shift open. Now variance is computable.

Cash drawer interior showing fixed float label with denomination separators
Cash drawer interior showing fixed float label with denomination separators

Cause #10 — Skim, small and repeated

The hardest cause to confirm and the one most operators jump to first. Skim usually has three signatures:

  1. Pattern by shift / cashier. Variance correlates with one person's shifts.
  2. Magnitude. ₹50 to ₹200 typical — too small to investigate without the pattern, too consistent to be coincidence.
  3. Time-of-day. Late shifts more than morning shifts. Weekends more than weekdays. (Not because honest staff get less honest after dark — because supervision is thinner.)

Diagnostic: Pull the last 30 days of close sheets. Tag variance by cashier. If one cashier is responsible for 60%+ of negative variance and only worked 33% of shifts, you have a pattern.

Fix: Three steps in order — increase visible supervision (manager present at close), rotate shifts, review CCTV at the till for one randomly chosen variance night. If pattern persists after two weeks of visible supervision, you have your answer. Confront with evidence, not accusation.

The variance log — a 1-row-per-day artefact

Keep this in a notebook or a spreadsheet. One row per day. The pattern is what matters.

DateCashierCash salesVarianceCause #Reason
14-MayRavi18,400−401UPI app showed ₹40 mismatch
15-MayRavi17,2000Clean
16-MaySunil22,100+1207Swiggy COD not on close sheet
17-MayRavi16,800−80?Investigating

After 30 rows, the diagnostic causes should drop to 2–3 dominant ones. Those are your process improvement targets for the next month.

Operator reviewing 30-day variance log on tablet with weekly pattern emerging
Operator reviewing 30-day variance log on tablet with weekly pattern emerging

What variance is not

A few things often blamed for variance that almost never explain it:

  • "Notes were stuck together." Real, but accounts for ₹10–₹50 once a month. Not a pattern.
  • "Customer gave wrong change and we didn't notice." Possible. Usually one-shot.
  • "The new cashier is still learning." True for the first week; if it persists into week three, the cashier isn't learning, the process isn't being taught.
  • "It's just kitchen staff taking food." That's a separate issue (cause 9 — staff meal not punched). It shows up as drawer over, not under.

If your standing explanation for variance is one of these, the process diagnostic hasn't been run.

Where this fits in the daily-ops loop

Variance is the symptom; the daily close is the test that produces it. The fixes live in the related pieces:

  • Imprest float — fixes float drift (read)
  • Cash close process — produces the variance number (read)
  • Daily reconciliation — ties POS + drawer + deposit (read)

When all three run, variance becomes signal. Without them, variance is noise. The point of Restaurant Daily is to automate the loop; the diagnostic still holds without software.

What to do this week

Tonight, after the close, look at the day's variance and run down the eleven causes. Find the first one that fits. Write the cause number on the close sheet. Do this for seven nights and the dominant pattern will declare itself.

The pattern is what tells you which fix to invest in first.

Weekly

One operator playbook a week, in your inbox.

Cash close, petty cash, payroll, compliance, unit economics — sent every Monday morning. No spam, no upsell drip. Unsubscribe in one click.

Sent from noreply@restaurantdaily.ai. We never share your address.

Related reading