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.
Last updated 12 May 2026

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.

The 11 root causes — a diagnostic table
| # | Root cause | Direction | Diagnostic question | Fix |
|---|---|---|---|---|
| 1 | UPI marked success but failed | Short | Does UPI app dashboard match POS UPI total? | Cross-check UPI app daily before close |
| 2 | Cash refund without POS entry | Over | Are refunds equal in count to PCV refund slips? | Use POS refund button always; never just hand cash back |
| 3 | Petty spend without voucher | Short | Is voucher count plausible for the day? | Voucher every outflow over ₹0; staple receipts |
| 4 | Float drift (no fixed float) | Both | Is there a fixed float number on the drawer? | Set float; reset every shift open |
| 5 | Counting error | Both | Was a denomination sheet used? | Use the denomination sheet, count twice |
| 6 | Discount applied after payment | Over | Are discount entries clustered after cash collection? | Apply discounts before payment in POS |
| 7 | Aggregator COD logged as Swiggy revenue | Over | Did Swiggy/Zomato deliver any COD orders today? | Separate COD line on close sheet |
| 8 | Tip vs sale confusion (card) | Variable | Are card tips logged distinctly? | Train staff on tip vs total field on POS |
| 9 | Staff meal not punched | Over | Was anything consumed off the line by staff? | Staff meal punched as ₹0 sale OR logged on muster |
| 10 | Skim — small, repeated | Short | Is variance pattern consistently negative on one cashier's shifts? | Review by cashier; CCTV check; rotate shifts |
| 11 | Wrong opening float | Both | Was 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.
- Direction first. Note whether the variance is short or over. Half the causes are eliminated immediately.
- 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.
- 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.

Cause #10 — Skim, small and repeated
The hardest cause to confirm and the one most operators jump to first. Skim usually has three signatures:
- Pattern by shift / cashier. Variance correlates with one person's shifts.
- Magnitude. ₹50 to ₹200 typical — too small to investigate without the pattern, too consistent to be coincidence.
- 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.
| Date | Cashier | Cash sales | Variance | Cause # | Reason |
|---|---|---|---|---|---|
| 14-May | Ravi | 18,400 | −40 | 1 | UPI app showed ₹40 mismatch |
| 15-May | Ravi | 17,200 | 0 | — | Clean |
| 16-May | Sunil | 22,100 | +120 | 7 | Swiggy COD not on close sheet |
| 17-May | Ravi | 16,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.

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.
Related on Restaurant Daily
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
Daily cash reconciliation restaurant — POS, drawer, deposit (India)
Daily cash reconciliation for Indian restaurants — three-way tie between POS Z-report, drawer count, and bank deposit, with thresholds and a printable form.
Restaurant cash close process — end-of-day reconciliation playbook (India)
The restaurant cash close process used by disciplined Indian outlets — 7 steps from drawer count to bank deposit, variance thresholds, and the 60-second nightly check.
Restaurant cash management software India — 6 options compared (2026)
Restaurant cash management software in India compared — Petpooja, Posist, Khatabook, Vyapar, Restaurant Daily, manual Excel — pricing, features, support, fit.
Denomination sheet restaurant cash count — Excel template + how to use it
Free denomination sheet for Indian restaurant cash counts — Excel + printable PDF, with auto-totals, variance row, and the right way to count a drawer in 2 minutes.
Cash deposit slip format restaurant — free fillable bank deposit template
Bank cash deposit slip format for Indian restaurants — fillable template covering denomination split, outlet code, cashier sign, and reconciliation back to DSR.