Your Whole Day, Branch By Branch, Before You Sleep
At closing time UpeoRetail emails you one PDF: what every branch took, who sold it, who held the drawer, how it was paid, what is still owed, and the three or four things that need a decision before tomorrow opens.
It is not a dashboard you have to remember to open. It arrives.
07:28 → 18:51
| Nairobi | 108 sales | 406,046 |
| Mombasa | 62 sales | 208,150 |
| Kisumu | 46 sales | 184,579 |
| Nakuru | 31 sales | 108,924 |
A Real Report, End To End
This is the actual report our demonstration shop produced on Thursday 23 July 2026 - all six pages, nothing edited, nothing tidied for the website. 251 documents, 4 branches, 10 counter staff, and every check passed.
Hover any hour of the chart or any bar to read the figures behind it. On paper this is six A4 pages; the page breaks below are the real ones.
Thursday 23 July 2026
The day whole, then branch by branch, then person by person.
Branches 4 · Counter staff 10
Documents 251 submitted, 1 draft
Source demo.upeoretail.com
The day
251 documents went through the tills between 07:28 and 18:51 — 247 sales and 4 refunds — carrying 717 units across 494 lines and 38 distinct products to 51 named customers.
The shape of the day
Value taken each hour, stacked by branch. The busiest hour by count was 09:00 with 39 sales; the richest was 09:00 at KES 135,140 off 39.
hour of day · figures above each column are KES thousands · the smaller number below is the invoice count
Where the money went
Invoiced value against money actually in hand.
| Sales invoiced 247 sales | 907,700 |
| Refunds issued 4 credit notes against earlier sales | (10,162) |
| Net invoiced | 897,538 |
| Taken at the counter today against today's own invoices | 899,650 |
| Left owing 4 invoices still open at close | (8,050) |
| Refunds not yet paid back credit notes the shop still owes the customer | 10,162 |
| Money received today | 899,650 |
How customers paid
Money taken by mode, net of anything refunded back through the same mode. The bar colour marks the branch the till or account belongs to.
M-Pesa Till 555101 – Nairobi Nairobi | KES 236,855 | |
Cash Drawer – Nairobi Nairobi | KES 130,320 | |
M-Pesa Till 555202 – Mombasa Mombasa | KES 128,380 | |
M-Pesa Till 555303 – Kisumu Kisumu | KES 96,869 | |
Cash Drawer – Kisumu Kisumu | KES 78,778 | |
M-Pesa Till 555404 – Nakuru Nakuru | KES 67,427 | |
Cash Drawer – Mombasa Mombasa | KES 65,374 | |
Card / PDQ Nairobi | KES 36,668 | |
Cash Drawer – Nakuru Nakuru | KES 20,454 | |
Card / PDQ Nakuru | KES 18,316 | |
Card / PDQ Mombasa | KES 11,275 | |
Card / PDQ Kisumu | KES 8,932 |
| Mode of payment | Branch | Payments | Received | Paid out | Net taken |
|---|---|---|---|---|---|
| M-Pesa Till 555101 – Nairobi | Nairobi | 63 | 236,855 | — | 236,855 |
| Cash Drawer – Nairobi | Nairobi | 47 | 130,320 | — | 130,320 |
| M-Pesa Till 555202 – Mombasa | Mombasa | 37 | 128,380 | — | 128,380 |
| M-Pesa Till 555303 – Kisumu | Kisumu | 23 | 96,869 | — | 96,869 |
| Cash Drawer – Kisumu | Kisumu | 23 | 78,778 | — | 78,778 |
| M-Pesa Till 555404 – Nakuru | Nakuru | 21 | 67,427 | — | 67,427 |
| Cash Drawer – Mombasa | Mombasa | 26 | 65,374 | — | 65,374 |
| Card / PDQ | Nairobi | 4 | 36,668 | — | 36,668 |
| Cash Drawer – Nakuru | Nakuru | 9 | 20,454 | — | 20,454 |
| Card / PDQ | Nakuru | 2 | 18,316 | — | 18,316 |
| Card / PDQ | Mombasa | 1 | 11,275 | — | 11,275 |
| Card / PDQ | Kisumu | 1 | 8,932 | — | 8,932 |
| Money received today | 899,650 | ||||
Basket size
The average sale was KES 3,675.
Under 500 12 sales | KES 5,162 | |
500 – 999 26 sales | KES 19,476 | |
1,000 – 2,499 64 sales | KES 111,638 | |
2,500 – 4,999 77 sales | KES 292,262 | |
5,000 – 9,999 65 sales | KES 444,883 | |
10,000 and above 3 sales | KES 34,278 |
What sold
Value by product group.
Tyres & Tubes 52 units | KES 142,860 | |
Body Parts 81 units | KES 130,550 | |
Uncategorised 64 units | KES 114,600 | |
Engine Parts 107 units | KES 105,340 | |
Electrical 77 units | KES 91,960 | |
Accessories 66 units | KES 48,820 | |
Braking System 99 units | KES 47,590 | |
Lubricants 82 units | KES 42,090 | |
Drive System 35 units | KES 34,010 | |
Bearings 54 units | KES 24,680 |
| Product | Code | Group | Units | On invoices | Value | |
|---|---|---|---|---|---|---|
| 01 | Tyre 3.00-18 Tubeless | DM-TY-402 | Tyres & Tubes | 18 | 18 | 75,600 |
| 02 | Tyre 3.00-17 Assorted | DM-XX-950 | Uncategorised | 13 | 13 | 46,800 |
| 03 | Bull Bar Metal Frame | DM-BB-101 | Body Parts | 14 | 14 | 45,500 |
| 04 | Bull Bar Metal Frame Black | DM-BB-102 | Body Parts | 11 | 11 | 34,100 |
| 05 | Bull Bar Assorted Import | DM-XX-951 | Uncategorised | 11 | 11 | 31,900 |
| 06 | Kick Start Lever Chrome | DM-KS-302 | Engine Parts | 44 | 21 | 31,680 |
| 07 | Tyre 2.75-18 Rear | DM-TY-401 | Tyres & Tubes | 9 | 9 | 30,600 |
| 08 | Tyre 100/90-17 | DM-TY-403 | Tyres & Tubes | 7 | 7 | 27,300 |
| 09 | Clutch Plate Set | DM-CL-304 | Engine Parts | 20 | 20 | 27,000 |
| 10 | Chain & Sprocket Kit | DM-CS-901 | Drive System | 11 | 11 | 25,850 |
| 11 | Wire Harness Complete | DM-WH-203 | Electrical | 12 | 12 | 25,200 |
| 12 | Battery Assorted Import | DM-XX-952 | Uncategorised | 10 | 10 | 23,000 |
the 12 products that carried the most value today
| Customer | Branch | Invoices | Value | Owing | |
|---|---|---|---|---|---|
| 01 | Demo Walk-in Customer | Mombasa | 97 | 405,664 | — |
| 02 | Victor Omondi | Nairobi | 4 | 22,620 | 2,204 |
| 03 | Stephen Rono | Mombasa | 6 | 21,622 | — |
| 04 | Wilson Cheruiyot | Nairobi | 4 | 19,790 | — |
| 05 | Hassan Abdi | Nairobi | 4 | 18,978 | — |
| 06 | Alfred Otieno | Nairobi | 5 | 18,189 | — |
| 07 | Simon Maalim | Nairobi | 3 | 18,015 | — |
| 08 | Pius Kiplagat | Mombasa | 6 | 16,228 | — |
| 09 | Sarah Nekesa | Nakuru | 3 | 16,020 | — |
| 10 | Rachel Amondi | Nairobi | 3 | 15,834 | — |
largest customers of the day, by invoiced value
The branches
Nairobi carried 44.7% of the day's value on 108 sales, at an average of KES 3,760. Across the counters the average sale ranges from KES 3,357 to KES 4,013, so the counters are not simply large, medium and small.
Value by branch
Nairobi 108 sales · 44.7% of the day | KES 406,046 | |
Mombasa 62 sales · 22.9% of the day | KES 208,150 | |
Kisumu 46 sales · 20.3% of the day | KES 184,579 | |
Nakuru 31 sales · 12.0% of the day | KES 108,924 |
| Branch | Sales | Value | Share | Avg sale | Biggest | Lines | Units | Products | Customers | Staff |
|---|---|---|---|---|---|---|---|---|---|---|
| Nairobi | 108 | 406,046 | 44.7% | 3,760 | 9,489 | 223 | 333 | 38 | 46 | 3 |
| Mombasa | 62 | 208,150 | 22.9% | 3,357 | 11,275 | 121 | 178 | 37 | 31 | 2 |
| Kisumu | 46 | 184,579 | 20.3% | 4,013 | 11,774 | 87 | 118 | 37 | 2 | 2 |
| Nakuru | 31 | 108,924 | 12.0% | 3,514 | 9,326 | 63 | 88 | 29 | 21 | 2 |
| All branches | 247 | 907,700 | 100% | 3,675 | — | 494 | 717 | 38 | 51 | 10 |
refunds are excluded here and accounted for in the next table · customer and product counts are distinct within each branch and do not add across rows
What each branch earned
| Branch | Sold (net of VAT) | Cost of goods | Gross profit | Margin |
|---|---|---|---|---|
| Nairobi | 350,040 | 234,177 | 115,863 | 33.1% |
| Mombasa | 179,440 | 128,120 | 51,320 | 28.6% |
| Kisumu | 159,120 | 110,748 | 48,372 | 30.4% |
| Nakuru | 93,900 | 68,735 | 25,165 | 26.8% |
| All branches | 782,500 | 541,779 | 240,721 | 30.8% |
sold and cost are both net of VAT, because VAT sits inside the shelf price and a margin measured against money owed to KRA reads about 16 points too flattering · cost is the valuation that moved out of stock with the goods, the same figure that posts to Cost of Goods Sold
| Branch | Net invoiced | Collected | Still owed | Refunds | Drafts held | Draft value |
|---|---|---|---|---|---|---|
| Nairobi | 399,434 | 403,842 | 2,204 | 2 · 6,612 | 1 | 9,750 |
| Mombasa | 205,946 | 205,030 | 3,120 | 1 · 2,204 | 0 | 0 |
| Kisumu | 183,234 | 184,579 | — | 1 · 1,346 | 0 | 0 |
| Nakuru | 108,924 | 106,198 | 2,726 | 0 · 0 | 0 | 0 |
| All branches | 897,538 | 899,650 | 8,050 | 4 · 10,162 | 1 | 9,750 |
collected is what closed a branch's own invoices today; money received against older accounts is not tied to a branch till
The counter
10 people raised a sale today. Joseph Mutiso led on value with KES 232,789 from 57 sales.
Value sold, by salesperson
Joseph Mutiso Nairobi · 57 sales | KES 232,789 | |
Antony Kimani Nairobi · 35 sales | KES 128,400 | |
Eve Wangari Mombasa · 40 sales | KES 127,159 | |
Gladys Chepkoech Kisumu · 32 sales | KES 123,064 | |
Kelvin Mureithi Mombasa · 22 sales | KES 80,991 | |
Carol Atieno Nakuru · 13 sales | KES 62,698 | |
Josphat Otieno Kisumu · 14 sales | KES 61,515 | |
Bernard Mbugua Nakuru · 18 sales | KES 46,226 | |
Jemimah Wanjiku Nairobi · 16 sales | KES 44,857 |
| Salesperson | Branch | Sales | Value | Share | Avg sale | Biggest | Customers | Active | Drafts held | |
|---|---|---|---|---|---|---|---|---|---|---|
| 01 | Joseph Mutiso | Nairobi | 57 | 232,789 | 25.6% | 4,084 | 9,118 | 33 | 08:11–18:03 | — |
| 02 | Antony Kimani | Nairobi | 35 | 128,400 | 14.1% | 3,669 | 9,489 | 21 | 08:21–16:53 | — |
| 03 | Eve Wangari | Mombasa | 40 | 127,159 | 14.0% | 3,179 | 11,229 | 25 | 07:28–17:16 | — |
| 04 | Gladys Chepkoech | Kisumu | 32 | 123,064 | 13.6% | 3,846 | 11,774 | 2 | 09:32–18:16 | — |
| 05 | Kelvin Mureithi | Mombasa | 22 | 80,991 | 8.9% | 3,681 | 11,275 | 13 | 08:49–18:22 | — |
| 06 | Carol Atieno | Nakuru | 13 | 62,698 | 6.9% | 4,823 | 9,326 | 9 | 09:17–17:45 | — |
| 07 | Josphat Otieno | Kisumu | 14 | 61,515 | 6.8% | 4,394 | 9,118 | 1 | 08:32–16:02 | — |
| 08 | Bernard Mbugua | Nakuru | 18 | 46,226 | 5.1% | 2,568 | 7,598 | 14 | 08:36–18:51 | — |
| 09 | Jemimah Wanjiku | Nairobi | 16 | 44,857 | 4.9% | 2,804 | 7,192 | 11 | 08:39–17:25 | — |
| 9 salespeople | 247 | 907,700 | 100% | 3,675 | — | — | — | 1 · 9,750 |
customer counts are distinct names on that person's own invoices and do not add across rows · 1 of the drafts in the total were raised outside the counter and belong to no row above · Peter Gitau raised only refunds today and is listed with the refunds rather than as a seller
At the drawer
The person who sells is not always the person who takes the money.
| Cashier | Branch | Invoices handled | Value through the drawer |
|---|---|---|---|
| Francis Maina | Nairobi | 110 | 399,434 |
| Nelly Kirui | Mombasa | 63 | 205,946 |
| Esther Awuor | Kisumu | 47 | 183,234 |
| Moses Ndungu | Nakuru | 31 | 108,924 |
| All cashiers | 251 | 897,538 |
Refunds
Each credit note is raised against a named earlier sale and booked to whoever authorised it — which is why supervisors can appear here.
| Credit note | Against | Customer | Branch | Raised by | Value |
|---|---|---|---|---|---|
| ACC-SINV-2026-01219 | ACC-SINV-2026-00999 | Demo Walk-in Customer | Nairobi | Joseph Mutiso | (4,524) |
| ACC-SINV-2026-01220 | ACC-SINV-2026-01158 | Demo Walk-in Customer | Mombasa | Kelvin Mureithi | (2,204) |
| ACC-SINV-2026-01221 | ACC-SINV-2026-01048 | Mohamed Noor | Nairobi | Antony Kimani | (2,088) |
| ACC-SINV-2026-01218 | ACC-SINV-2026-00975 | Demo Walk-in Customer | Kisumu | Peter Gitau | (1,346) |
| Total refunded | (10,162) | ||||
What needs a decision
8 credit sales are still waiting for approval
These are real orders that stopped at the approval gate, so none has moved stock or reached the ledger. The largest is UR-SALE-2026-001056 for Wilson Cheruiyot at KES 11,554. Held credit is worth 3% of everything the shop invoiced today.
KES 2,726 of it is on one invoice, ACC-SINV-2026-01086 to Boda Riders Sacco
3 other invoices left the counter unpaid today.
Kisumu recorded only 2 customer names across 46 sales
Sales are being written to a small set of walk-in records, so the branch is selling well but capturing almost nothing about who is buying. Nairobi named 46 customers across 108 sales.
KES 114,600 of the day's sales sit on items with no product group
12.6% of the day's value is filed under "Uncategorised", which makes any product-mix question unanswerable for the largest slice of the business.
A document raised by Administrator is sitting in the live day
ACC-SINV-2026-01222 for "Alfred Otieno" at KES 9,750 was raised by the Administrator account rather than a counter user. Sales raised outside a named till cannot be attributed to a person or a shift.
How this was put together
- Read from demo.upeoretail.com at 08 Aug 2026, 15:50, covering posting date 2026-07-23 (all branches).
- Sales means submitted invoices. Drafts and unapproved credit sales are counted separately everywhere and never added into a sales figure — they have not moved stock or reached the ledger.
- Payment-mode totals are net of refunds paid back out, so they describe what is actually in the drawer or the account rather than what was tendered.
- Salesperson is the user who raised the sale; cashier is the user who held the drawer on the shift it was rung through. Refunds are attributed to whoever authorised them.
- Branch, salesperson, cashier and payment-mode breakdowns were each recomputed and checked to sum to the day's total, and money received to invoiced value less debt. All checks passed.
Every figure above came out of Upeo Retail Demo, unedited, on Thursday 23 July 2026. It is a demonstration shop — the branches, staff, customers and till numbers were invented for it. Your own report carries your own.
Five Numbers, Then The Whole Story
The report opens with the figures most owners need, and then earns them - section by section - so you can check any one of them without asking anybody.
Submitted invoices only. Held carts and unapproved credit are never in this number.
What actually reached a drawer or an account - net of refunds paid back out.
Invoices that left the counter unpaid today, and who they belong to.
Real orders stopped at the approval gate. No stock moved, no ledger touched.
What the day earned, not just what it sold - whole and branch by branch, net of VAT on both sides.
What Is Inside
The day whole, then branch by branch, then person by person.
The day
Everything that went through the tills between the first sale and the last, and the shape of the hours in between.
- Value taken each hour, stacked by branch
- Invoiced value traced step by step to money in hand
- Every payment mode, net of refunds paid back out
- Basket sizes, product groups and the products that carried the day
- The largest customers, and what each still owes
The branches
Each counter on its own line - not just who sold the most, but who sells differently.
- Sales, value, share of the day and average basket per branch
- Lines, units, distinct products and distinct customers
- Collected, still owed, refunded and held as drafts, by branch
- A colour per branch, carried through every chart and table
The counter
Who sold, who took the money, and who authorised what. They are rarely the same person.
- Value and volume per salesperson, with the hours they were active
- Biggest sale, distinct customers served and drafts left held
- A separate table for the cashier who held the drawer
- Refunds attributed to whoever authorised them, not to whoever sold
What needs a decision
The part most owners read first: what the day is telling you, in plain sentences.
- Credit sitting unapproved, and the largest order stuck at the gate
- Debt concentrated on a single invoice or a single customer
- A branch selling well while capturing almost no customer names
- Sales piling up on stock that has never been categorised
- Documents raised outside a named till, which belong to nobody
It Proves Itself Before It Sends
A daily total that is quietly wrong is worse than no report at all, because it gets believed. So the day is recomputed several independent ways and the answers are compared before anything reaches your inbox.
If a check fails, the report still arrives - with the failure printed at the top, in red, naming the two figures that disagree. Nothing is quietly rounded into place.
Every branch total is recomputed and summed. If it misses the day by a shilling, the report says so.
The league table is not a separate query with its own opinion - it has to reconcile to the same figure.
Cashier totals are checked independently of seller totals, so a mis-assigned shift shows up instead of hiding.
Cash, M-Pesa, card and bank must sum to what was actually received - after refunds paid back out.
The identity that catches a missing payment. It is the one that fails first when something is wrong.
Gross profit is worked out from the invoice lines, then held against the Cost of Goods Sold account those same lines posted to. A margin is the one number nobody can check by eye, so it is checked here instead.
Built On Real Multi-Branch Control
The report can only be this specific because the system underneath it knows which branch every sale, every till and every person belongs to.
A branch is a real thing
Its own warehouse, price list, walk-in customer, cost centre and short code - not a text field on a sale.
People belong to branches
Assign staff to one branch or several. What they can see, sell and report on follows automatically.
Tills belong to branches
Each cash drawer, till number and bank account is named against the branch that operates it.
Seller and cashier are separate
The person who rang the sale and the person who held the money are both recorded, and both reported.
Stock moves between branches
Transfers, receiving and per-branch availability at the till, so you can sell what the next shop is holding.
Scoping is enforced, not filtered
A branch manager cannot read the group by changing a dropdown. The limit is applied server-side, on every query.
The last page is the one people read twice
Every report closes with What needs a decision - a short list of what the day is actually telling you, written in sentences rather than left in a table for you to find.
Held credit is worth 18% of everything the shop invoiced today.
Most of what is owed sits on one invoice, to one named customer.
A branch selling well while capturing almost no customer names.
A quarter of the day sitting on stock nobody has ever filed.
Reports are branch-scoped: a branch manager receives their own counter, a group manager receives the branches they run, and an owner receives everything. See pricing for branch and user limits.
Questions People Ask About It
The same questions come up in every demo, so they are answered here rather than in a call.
Yes. The report carries gross profit for the day, whole and branch by branch: what was sold, less what those goods cost to put on the shelf. Both sides are net of VAT, because VAT sits inside the shelf price and a margin measured against money owed to KRA reads about 16 points too flattering. The cost is the valuation that moved out of stock with the goods - the same figure that posts to Cost of Goods Sold - and the report checks the two against each other before it sends.
More on what sits underneath it: all features, your industry and pricing.
See It On Your Own Shop
Book a demo and we will walk through a full trading day - branches, counters, tills and all.
