Back to blog
P1 — Cash close

Daily sales report restaurant Excel — free DSR template (India)

Free daily sales report Excel + Google Sheets template for Indian restaurants — 18 fields covering tender modes, GST splits, refunds, advances, and weekly rollup.

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

Last updated 12 May 2026

Daily sales report restaurant Excel — free DSR template (India)

About this piece. A Daily Sales Report (DSR) is the single most important record an Indian restaurant keeps. It's the input to GST filing, owner P&L, variance investigations, and any conversation with a lender. Most outlets either don't keep one or keep one in three different WhatsApp threads. This piece gives you the format, the fields, and a free Excel + Google Sheets template you can copy in 60 seconds.

What a DSR is for

The DSR is the day's row of truth. One row per day per outlet. Across a year that's 365 rows. Across a 5-outlet group that's 1,825 rows. Every report you ever run on the business — GST, P&L, food cost trend, day-of-week revenue, festive uplift — pulls from this table.

If your DSR is in WhatsApp messages or in the cashier's head, you don't have a queryable record. You have anecdotes.

The good news: the format is small. 18 fields. Most outlets fill it in 90 seconds at the end of the close.

The 18 fields the DSR captures

Group them into five blocks. Print them in this order on the form.

BlockFieldSource
HeaderDatecalendar
Outletpreset
Day of weekcalendar
Manager on closepersonnel
Sales by tenderCash sales (gross)POS Z-report
UPI sales (gross)UPI dashboard
Card sales (gross)EDC settlement
Swiggy pre-paid (gross)aggregator portal
Zomato pre-paid (gross)aggregator portal
Aggregator COD receiveddrawer
AdjustmentsRefunds (cash)POS
Refunds (UPI/card)POS
Discounts appliedPOS
Service charge collectedPOS
Tax + outflowGST collected (5% line)POS
GST collected (18% line)POS
Petty cash outflowvoucher pad
Salary advances paidadvance ledger
ReconciliationVarianceclose sheet

Three calculated fields fall out of these:

Net revenue        = sum of all sales − refunds − discounts
Bank deposit       = cash sales − cash refunds − petty cash outflow − salary advances + COD
Total receivables  = Swiggy pre-paid + Zomato pre-paid + card sales (T+1 to T+7)

Excel daily sales report template open on laptop with Indian restaurant counter behind
Excel daily sales report template open on laptop with Indian restaurant counter behind

The Excel layout

One sheet, frozen header row, one row per day. Columns A through R for the 18 fields, columns S through U for the calculated fields, columns V through Z for notes and signatures.

A: Date
B: Outlet
C: Day of week
D: Manager
E: Cash sales
F: UPI sales
G: Card sales
H: Swiggy pre-paid
I: Zomato pre-paid
J: Aggregator COD
K: Refunds (cash)
L: Refunds (UPI/card)
M: Discounts
N: Service charge
O: GST 5%
P: GST 18%
Q: Petty cash outflow
R: Salary advances
S: Net revenue (calc)
T: Bank deposit (calc)
U: Variance (close sheet)
V: Notes

Conditional formatting:

  • Variance |U| > ₹100 → cell turns red
  • Net revenue below 70% of trailing 14-day average → cell turns yellow
  • Petty cash outflow > 5% of net revenue → cell turns yellow
  • Salary advances > ₹2,000 single day → cell turns yellow

These four flags are what turn a static log into a working dashboard.

Why these 18 fields and not 30

The tempting move is to add more — table count, cover count, average bill, food cost % per day. Resist it.

A typical 30-cover dhaba in tier-2 city operator runs the 18-field DSR for 6 weeks before adding any field. The reason: the DSR fails not because it captures too little, but because it captures too much for a tired cashier at 11pm. Fields that aren't filled accurately are worse than fields that don't exist. The 18 above are the load-bearing ones; everything else is a separate report off the same data.

A composite operator we work with runs cover count and average bill weekly in a separate sheet, not daily. Reason: cover count is best collected from the KOT printer roll, not from the cashier's memory at midnight. Daily DSR is for inputs that exist as artefacts at close time. Weekly rollups can pull from richer sources.

Weekly and monthly rollups (auto)

Set up a second sheet with these formulas. The DSR sheet is the input; everything else is a calculated view.

RollupFormula sketch
Net revenue WTDSUMIFS(DSR!S:S, DSR!A:A, ">=" & week_start)
Cash mix %SUM(cash − cash refunds) / net revenue
Aggregator share(Swiggy + Zomato pre-paid + COD) / net revenue
Petty cash %SUM(petty cash) / net revenue
Variance abs totalSUMPRODUCT(ABS(variance column))
GST 5% liabilitySUM(O:O) − input credits (separate sheet)
GST 18% liabilitySUM(P:P) − input credits (separate sheet)

The weekly rollup is what you look at on Sunday morning over chai. Five minutes. Six weeks of disciplined daily entry and the patterns are visible — best day, worst day, festive uplift, aggregator drift.

Owner reviewing weekly DSR rollup sheet on tablet with chai and notebook
Owner reviewing weekly DSR rollup sheet on tablet with chai and notebook

How to fill the DSR — order of operations

The DSR is filled after the till close, not during. The close produces the inputs; the DSR is the consolidated output.

  1. Close the till (14-step checklist)
  2. Open the DSR sheet (laptop, tablet, or printed form)
  3. Copy the close sheet header — date, outlet, manager
  4. Tender modes from sources — POS for cash, UPI app for UPI, EDC for card, aggregator portals for Swiggy/Zomato
  5. Adjustments — refunds, discounts, service charge from POS
  6. Tax — GST splits from POS
  7. Outflow — petty cash from voucher total, advances from advance ledger
  8. Variance — copy from close sheet
  9. Save — autosave is the friend

Time: 90 seconds for an experienced operator on a clean night.

Five common DSR mistakes

  1. Filling DSR before the close is signed. The close numbers may move. Always: close first, DSR second.
  2. Treating Swiggy COD as Swiggy revenue. It's both. Swiggy revenue (for the order) AND drawer cash (for the COD). Two columns, not one.
  3. Skipping refunds. A refunded order is not a deleted order. The sale happened, GST was charged, the refund reversed it. Both lines exist on the DSR.
  4. Inconsistent service charge logging. CCPA 2022 guidelines require service charge to be voluntary and clearly disclosed. If you collect it, log it; if you don't, don't have the column.
  5. No notes column. The notes column is where "Holi off-peak", "AC broken from 7pm", "manager left at 9 (sick)" lives. Six months later, those notes are what explains the outlier days.

What good looks like — a Wednesday in May

Date: 15-May-2026
Outlet: Lajpat Nagar
Manager: Ravi
Cash sales: ₹18,400
UPI sales: ₹14,200
Card sales: ₹6,800
Swiggy pre-paid: ₹9,600
Zomato pre-paid: ₹7,400
Aggregator COD: ₹1,200
Refunds (cash): ₹200
Refunds (UPI/card): ₹0
Discounts: ₹450
Service charge: ₹0
GST 5%: ₹2,420
GST 18%: ₹1,680
Petty cash outflow: ₹850
Salary advances: ₹0
Net revenue: ₹56,950
Bank deposit: ₹18,550
Variance: −₹40
Notes: clean Wednesday, normal footfall

This is what a clean DSR row looks like. Forty rows like this and you have a queryable, defensible, accountant-ready record of the month.

Clean DSR Wednesday row with signature and clipped Z-report stub
Clean DSR Wednesday row with signature and clipped Z-report stub

Where this fits in the daily-ops loop

The DSR is the consolidated output of the close. It feeds:

  • GST filing — monthly, from the GST 5% / GST 18% columns
  • Owner P&L — weekly margin check, from net revenue
  • Variance pattern — monthly review, from variance column
  • Lender / investor decks — from rolling 90-day net revenue

It's fed by:

  • Till close (14-step checklist)
  • POS Z-report — tender splits, GST splits
  • Petty cash voucher pad (format)
  • Salary advance ledger — outflow side

This is the loop Restaurant Daily digitises. The Excel template is the manual version of the same loop.

What to do this week

Copy the field list above into a Google Sheet on Sunday afternoon. Set up the conditional formatting. Brief the manager on Monday morning. Run it for 14 days.

By day 14 you'll have your trailing-2-week baseline, and the conditional flags will start surfacing the days worth looking at. The DSR is the foundation; everything else builds on it.

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