Discover 8 sales report examples and templates for your business. Analyze key KPIs and make data-driven decisions for your point of sale.
You close the register at 8:30 p.m. The day's total "looks good." Even so, you don't know if you improved compared to last week, if the average ticket went down, or if frequent customers stopped coming back. That is solved with a well-structured sales report — and with examples that you can copy, not with theory.
What is a sales report
A sales report is an organized summary of what you sold in a period, with enough context to make decisions. It is not just the cash register total. It includes, at a minimum:
Period (day, week, month)
Revenue (MXN)
Tickets / transactions
Average ticket
Mix (category or product)
Comparison (vs yesterday, vs same previous week, vs goal)
A good sales report example answers three questions: how much came in?, why did it change?, and what do I adjust tomorrow?
In a physical cafe or restaurant, the report also wins if it links customer and loyalty: who returned, who redeemed points, and which channel brought the purchase. With a CRM like Swirvle, those fields come from history instead of loose sheets.
Sales report example: cafe (filled tables)
Use these numbers as a template. Change them for yours; the structure is what matters.
1) Daily example (Tuesday — office cafe)
Concept | Value |
|---|---|
Date | Tuesday, Sep 9 |
Gross sales | $18,450 MXN |
Tickets | 142 |
Average ticket | $129.93 |
Drinks | $12,100 |
Food | $5,200 |
Retail / merch | $1,150 |
Discounts granted | $680 |
Point redemptions | 11 |
Identified customers (CRM) | 96 (68%) |
Day goal | $17,000 |
Vs goal | +8.5% |
Quick read: goal met. Food weighed little vs drinks → opportunity for a breakfast combo tomorrow. 11 redemptions = good time to push a second purchase with points, not with an extra discount.
2) Weekly example (same coffee shop)
Day | Sales (MXN) | Tickets | Avg. ticket | % CRM customers | Notes |
|---|---|---|---|---|---|
Mon | 16,200 | 138 | 117.39 | 64% | Weak on food |
Tue | 18,450 | 142 | 129.93 | 68% | Cold brew promo |
Wed | 17,800 | 149 | 119.46 | 70% | More tickets, lower ticket |
Thu | 19,100 | 151 | 126.49 | 71% | Good pastry mix |
Fri | 22,400 | 168 | 133.33 | 66% | Office peak + takeaway |
Sat | 14,900 | 110 | 135.45 | 55% | Less volume, better ticket |
Sun | 11,200 | 82 | 136.59 | 48% | Short brunch |
Total | 120,050 | 940 | 127.71 | 64% | Weekly goal $115,000 |
Reading: Wednesday "sold tickets" but diluted ticket size. Saturday/Sunday protect margin with fewer people. The week closed +4.4% vs goal.
3) Monthly example (executive summary)
Indicator | This month | Previous month | Δ | Goal |
|---|---|---|---|---|
Sales | $498,200 | $472,800 | +5.4% | $480,000 |
Tickets | 3,820 | 3,710 | +3.0% | — |
Average ticket | $130.42 | $127.44 | +2.3% | $128 |
Recurring customers (2+ visits) | 1,140 | 1,020 | +11.8% | — |
% sales with customer ID | 66% | 58% | +8 pp | 70% |
Estimated food cost | 31% | 33% | −2 pp | ≤32% |
Loyalty redemptions | 286 | 210 | +36% | — |
Reading: you grew more due to recurrence and ticket size than "more random people". Identification in CRM rose → better campaigns next fortnight.
4) Example by category (week)
Category | Sales (MXN) | % sales | Units | Est. margin | Action |
|---|---|---|---|---|---|
Hot coffee | 38,400 | 32% | 920 | High | Maintain; upsell size |
Cold drinks | 29,800 | 25% | 610 | Medium | Combo with pastry |
Bakery | 22,100 | 18% | 740 | Medium-high | Push on slow mornings |
Food / bowls | 18,600 | 15% | 210 | Medium | Review portion/cost |
Desserts | 7,850 | 7% | 190 | High | Cross-sell 4–6 p.m. |
Other | 3,300 | 3% | — | Variable | Clean up dead SKUs |
5) Example by branch (fortnight)
Branch | Sales | Tickets | Avg. ticket | Recurrence* | Diagnosis |
|---|---|---|---|---|---|
Downtown | $186,000 | 1,420 | $130.99 | 41% | Volume engine |
Plaza | $142,500 | 980 | $145.41 | 48% | Best ticket and loyalty |
University | $121,200 | 1,150 | $105.39 | 29% | Depends on promo; retain |
*Customers with ≥2 purchases in the fortnight / unique customers.
Rule: do not reward only the branch with the highest revenue. Plaza may be healthier even if it sells less.
How to read historical data (without fooling yourself)
Historical data turns a single sales report example into a trend. Read it in this order:
Same comparison baseline. Tuesday vs Tuesday; not Tuesday vs Saturday.
Three layers: day (I correct today) → week (is it a trend?) → month (seasonality and price).
Separate volume from ticket size. More tickets with a lower average ticket is not always good news.
Look at retention alongside sales. If the month goes up but recurring customers drop, you are buying expensive volume.
Note the context: rain, long weekend, espresso machine failure, local promo. Without a note, the number lies.
Mini weekly reading checklist (15 minutes)
Sales vs previous week and vs goal?
Did average ticket go up or were there just more people?
Which category gained/lost weight?
Which branch dragged down the consolidated total?
How many CRM customers bought 2+ times?
Which campaign or redemption explained the peak (if there was one)?
To go deeper into the continuous board, check a sales dashboard. If the margin does not match the volume, cross-reference with how the cost of goods sold is determined.
Other useful breakdowns (without lengthening the report)
You don't need eight reports on day one. Start with period + category + branch. When that is clean, add:
Breakdown | What for | Warning sign |
|---|---|---|
By product | Buy and display better | High volume, low margin |
By customer / segment | Loyalty and reactivation | Frequent customers who lengthen the cycle |
By campaign / channel | Commercial budget | Clicks without attributed tickets |
MoM / YoY comparison | Direction | "Growth" that is just price inflation |
Avoid repeating product paragraphs in each breakdown: a well-used CRM feeds all reports from the same source (customer, branch, ticket, campaign). Swirvle fits right there: history, segments, and attribution without rebuilding Excel every Friday.
Errors that make the report useless
Only the day's total. Without tickets or average ticket, you don't know if you grew or gave away margin.
Comparing different days without context. A long weekend or a soccer match distorts naive MoM comparisons.
Ignoring discounts and redemptions. "High" sales with a 15% discount can be worse than a normal day.
Not identifying the customer. Without a CRM ID, recurrence history is just cash register anecdote.
Eight reports on day one. Start with daily + weekly + category; add the rest when the routine can handle it.
Minimum template to print (daily closing)
Field | Today | Yesterday | Goal |
|---|---|---|---|
Sales MXN | |||
Tickets | |||
Average ticket | |||
% Customer ID | |||
Loyalty redemptions | |||
Category #1 | — | — | |
1 decision for tomorrow |
Fill this out for 10 consecutive days. After that, the weekly report almost builds itself.
From example to routine
Choose a breakdown (daily + weekly) and set it on the calendar.
Copy one of the tables above and fill it out for 4 consecutive weeks.
Close each review with a written decision: stock, hours, promo, or message to inactive customers.
Increase customer identification at the register (goal: >65%) so the loyalty history is reliable.
If you want the sales report to stop being just a cash drawer close and start being a decision on recurrence and margin, get to know Swirvle: it centralizes customers, branches, campaigns, and dashboards for SMBs with physical stores.
Related Blogs

Oct 6, 2026
Which campaigns work to fill a restaurant during the week?

Oct 5, 2026
Does Excel work as a CRM for a small business, or is it better to use a software?

Oct 4, 2026
How to organize my client information if I have a small business? Guide

Oct 3, 2026
What message should I send on WhatsApp to win back a customer who is no longer returning?

Oct 2, 2026
Grocery Store Software: 2026 Comparative Guide

Oct 1, 2026
Omnichannel CRM for Physical Businesses in 2026
Try Swirvle for free
No card required · 30 days free
Start your free trial
