Your shop is busy from opening to closing. Money comes in all day, in cash and on M-Pesa. Yet when the rent is due, the drawer is thin and you can't say where the money went.
Busy is not the same as profitable. Here is how to work out what your shop really makes, step by step, with the numbers of a made-up duka.
The whole method in three lines
- Sales − cost of goods sold = gross profit. What customers paid, minus what you paid for the goods they took.
- Gross profit − running costs = real profit. What is left after rent, wages and everything else it takes to open the doors.
- Real profit − drawings = what stays in the business. Drawings are what you take out for yourself.
If that last number is below zero, the shop is shrinking, however busy it looks.
Step 1: Add up every sale
Sales are everything customers bought in the period:
- Cash, counted at closing.
- M-Pesa, taken from your statement or messages, not from memory.
- Credit (deni): goods taken now and paid for later. These are sales, but the money is not in your hands yet, so keep a list of who owes what.
Leave out money that is not a sale: savings you put in, a loan, money a relative sent, or transfers between your own lines.
Step 2: Work out what the goods you sold cost you
Cost of goods sold is what you paid for the stock that left your shelves as sales. It is not everything you bought this month. Stock still on the shelf is not a cost yet.
Count your stock at buying price at the start and the end of the month. Then:
Stock at the start + stock bought − stock at the end = stock that left the shelves
Some of that stock left without being sold. It expired, broke or went missing. Take it out and list it as spoilage under running costs, where you can see it. What remains is your cost of goods sold.
A mark-up is not a margin. Buy at Ksh 100 and sell at Ksh 125: the mark-up is 25%, but only Ksh 20 of every Ksh 100 you take is gross profit.
Step 3: List your running costs
Running costs keep the doors open whether you sell a lot or a little:
- Rent, and wages for staff and casuals.
- Transport: boda or matatu trips to the wholesaler, and deliveries.
- Electricity tokens, and airtime and data used for the business.
- M-Pesa charges. Since August 2026, Buy Goods payments of Ksh 500 or less are free for the business and larger ones cost 0.55%, capped at Ksh 200, The Standard reported. Your statement shows what you actually paid.
- Spoilage: expired milk and bread, broken eggs, stock that went missing, all at buying price.
- Turnover tax, if you are registered for it. As of November 2026, KRA's turnover tax page puts it at 1.5% of sales for businesses selling more than Ksh 1 million and not more than Ksh 25 million a year.
- Yearly costs such as your county business permit, divided by 12.
Step 4: Keep your own drawings apart
Drawings are anything you take for yourself or your family: cash for the house, school fees, airtime for home, flour and soap from the shelves. They are not running costs. Mixed in with costs, they hide the shop's real profit. Not written down at all, they make money vanish without a trace.
Write every drawing down, including stock you take home, at buying price. Then compare total drawings with real profit each month. If you take out more than the shop makes, you are eating your stock money. Risiti keeps personal spending apart from business costs, so your drawings don't hide among the shop's expenses (how it works for shops).
A worked example: a duka in Nakuru
This is a made-up shop with an owner and one shop assistant, over a 30-day month. Every number is an example.
| Sales | Ksh |
|---|---|
| Cash | 84,000 |
| M-Pesa | 210,000 |
| Credit (deni, not yet paid) | 6,000 |
| Total sales | 300,000 |
The owner bought Ksh 257,000 of stock, but Ksh 4,500 of it went home for the family. That is drawings, so Ksh 252,500 counts for the shop.
| Cost of goods sold | Ksh |
|---|---|
| Stock at the start (buying price) | 120,000 |
| Plus stock bought for the shop | 252,500 |
| Minus stock at the end | 130,000 |
| Stock that left the shelves | 242,500 |
| Minus spoilage (moved to running costs) | 2,500 |
| Cost of goods sold | 240,000 |
Gross profit: 300,000 − 240,000 = Ksh 60,000, or Ksh 20 of every Ksh 100 sold.
| Running costs | Ksh |
|---|---|
| Rent | 12,000 |
| Wages (one shop assistant) | 18,000 |
| Transport to the wholesaler | 7,000 |
| Electricity tokens | 2,500 |
| Airtime and data | 1,000 |
| M-Pesa charges | 500 |
| Spoilage | 2,500 |
| Turnover tax (1.5% of 300,000) | 4,500 |
| Total running costs | 48,000 |
Real profit: 60,000 − 48,000 = Ksh 12,000.
Drawings: Ksh 19,500 in cash for the house and school fees, plus the Ksh 4,500 of stock taken home, makes Ksh 24,000.
What stays in the business: 12,000 − 24,000 = minus Ksh 12,000. Ksh 300,000 passed through this shop, and it ended the month smaller than it began.
The daily view and the monthly view
You can't count stock every evening, so use two views.
Every day, write down sales (cash, M-Pesa, credit), what you spent and what you took for yourself. Compare each day with last month's average. In the example, an average day looks like this:
- Sales: 300,000 ÷ 30 = Ksh 10,000
- Gross profit: 60,000 ÷ 30 = Ksh 2,000
- Running costs: 48,000 ÷ 30 = Ksh 1,600
- Real profit: 12,000 ÷ 30 = Ksh 400
- Drawings: 24,000 ÷ 30 = Ksh 800
On a Ksh 10,000 day, only Ksh 400 is profit, and the owner was taking Ksh 800. Rent and wages alone need Ksh 1,000 of every day's gross profit, slow days included.
Every month, count stock, work out the cost of goods sold, add every running cost and find the real profit. The monthly number tells the truth. The daily one warns you early.
Risiti can carry the daily side: sales come in from your staff's WhatsApp reports and M-Pesa messages, costs from receipt photos, and it shows what's left (sales minus costs) every day, week and month (how it works). The stock count is still yours to do.
Why a busy shop can feel rich and still run out of money
Back to the example. With every cost paid within the month, money in was 84,000 cash + 210,000 M-Pesa = Ksh 294,000. Money out was 257,000 for stock + 45,500 running costs (spoilage was stock already paid for) + 19,500 cash drawings = Ksh 322,000. So the drawer and the M-Pesa balance ended the month Ksh 28,000 lower:
- Ksh 12,000 because the owner took out Ksh 24,000 from a shop that made Ksh 12,000
- Ksh 10,000 sitting on the shelves as extra stock (130,000 − 120,000)
- Ksh 6,000 in customers' pockets as deni
The habits behind that are common:
- Treating sales as income. Ksh 10,000 a day feels like Ksh 10,000 earned. Here it was Ksh 400.
- Shopping from the shelves without writing it down.
- Paying yourself whatever is in the drawer, instead of a fixed amount below profit.
- Forgetting month-end bills on good days. Put aside the daily share of rent and wages as you go.
- Overstocking. Every extra shilling on the shelf is a shilling you can't spend.
- Letting deni grow without a list and a date to pay.
- Ignoring spoilage, so the same losses repeat every month.
- Old prices. When the wholesaler's price goes up and yours doesn't, your margin shrinks quietly.
What to do today
- Count your stock at buying price this week and write down the date. That is your starting figure.
- Start a drawings list, for cash and stock, next to your sales book.
- Add up your fixed monthly costs and divide by the days you open. That is what each day must cover before any profit.
- Put a name and a date on every deni.
- At month end, run the four steps. For what to keep and for how long, read our guide to record keeping for small businesses in Kenya.
Sources
- The Standard, Safaricom halves M-Pesa merchant fees in CBK-led move, 2 August 2026
- Kenya Revenue Authority, Turnover Tax (TOT), accessed November 2026