
The problem · The drawer never balances
Why the drawer never balances, and what to do about it
Closing time. You count the cash, open the M-Pesa statement, open the MoMo or Airtel one, look at the notebook, and the four of them disagree by a few thousand shillings.
Sometimes it is over. Sometimes it is short. Either way nobody can explain it, so it gets written off as 'small errors' and the shop opens tomorrow from a position nobody verified.
Do that for a month and the position has drifted far enough that an honest mistake and a deliberate one look identical.
What an unexplained variance really costs
The money itself is usually the smaller half. A few thousand shillings a week is real, and it compounds, but the expensive part is what an unreconciled till does to everything built on top of it.
You cannot tell a float error from a missed sale from a redirected payment, so you cannot respond to any of them. You cannot hold a cashier to a number, because the number has never been reliable — which means a genuinely careful cashier and a careless one are judged the same way, and the careful one notices.
And the day's takings feed the day's profit, which feeds every decision about reordering and pricing. A takings figure that is approximately right is a profit figure that is approximately meaningless.
- Small daily differences compound into a monthly figure nobody can explain
- Honest errors and deliberate ones become indistinguishable
- No reliable baseline means no fair way to hold anyone accountable
- Every downstream number inherits the uncertainty
The six reasons, roughly in order of frequency
A till that does not balance almost never has one cause. It has a handful of small, ordinary ones that each account for a little and together account for the gap.
What they share is timing: in every case the record is made later than the event, by someone relying on memory. Everything in the fix is about collapsing that gap to zero.
- The float was not counted at open, so the shortfall was already there before trading
- A sale was taken during the rush and rung up afterwards, or not at all
- A mobile money payment landed and was never tied to the sale it paid for
- Change was given from the drawer for a wallet payment, mixing the two rails
- A refund or a void was done informally, with nothing recorded
- Petty cash left the drawer — transport, a repair, lunch — against no entry
Step by step
How to make the drawer balance
Count the float at open, every single day
Declare a starting amount and count it. Without a known opening position there is no such thing as a shortfall — there is only a number that looks wrong, which is why shops that skip this step can never close a single day cleanly.
Ring the sale before the goods leave
Not after, not at the end of the queue. The discipline is unpopular for about a week and then becomes invisible, and it removes the single largest source of difference: sales that happened in the shop but never happened in the record.
Record the payment method on every sale
Cash, M-Pesa, MoMo, Airtel, card, or on account. At close, the day splits by rail and you compare each rail to its own statement — four small, decidable comparisons instead of one large undecidable one.
Attach the mobile money reference to the sale
Two seconds at the counter, by the person who watched the confirmation arrive. It converts your end-of-day reconciliation from matching two unrelated lists into checking whether two totals agree, and it makes a redirected payment immediately visible.
Make refunds, voids and discounts need a manager
Every one of them should require approval and record who gave it. These three actions are how a completed sale becomes invisible after the goods have gone, and they are the only part of this list that is about deterrence rather than accuracy.
Close the till per shift, not per day
Count at every handover so a variance belongs to one person and a few hours. A day-long variance across three cashiers is information nobody can use; a shift variance is a conversation you can actually have.
What you get
What sell.ke does about it
Shift open and close, with a declared float
Each shift starts from a counted float and ends with a counted drawer. The variance belongs to a shift and a person rather than to a day and everybody.
Payment method on every sale
Cash, each mobile money rail, card and on-account, totalled separately at close — so each rail is checked against its own statement instead of all of them against one pile of money.
References tied to sales
The mobile money reference is recorded against the specific sale it paid for, which is what turns reconciliation from reconstruction into a check.
Authorised reversals only
Voids, refunds and discounts behind a manager PIN, each leaving a named, timestamped entry. A reversed sale is a movement in the record, not a gap in it.
Cash movements in and out
Petty cash, bankings and drops recorded as what they are, so money legitimately leaving the drawer stops looking like a shortfall.
It still works offline
The till keeps selling, printing and recording with no connection and syncs when the line returns. A dropped network does not become a gap in the day's record.
Questions
The drawer never balances — questions
My cashier gives change from the drawer when someone pays by M-Pesa. Is that the problem?
It is one of them, and it is easy to fix. A wallet payment with cash change given is a mixed-rail transaction, and if only the payment is recorded, the drawer is short by the change with no explanation. Record it as what it was — the full amount on the rail, the change out as cash — and the day reconciles.
How small a variance should I worry about?
Worry about an unexplained one of any size, and stop worrying about an explained one of any size. A 500-shilling difference nobody can account for is a worse signal than a 5,000 one that turns out to be a recorded petty cash payment, because the first one means your process cannot see what is happening.
Should I make cashiers pay for shortfalls?
Not until the count has been reliable for a while — it is unjust and it backfires. A cashier held responsible for a number produced by a broken process will start hiding differences rather than reporting them, which removes the only early signal you had. Fix the measurement first; the question usually becomes much smaller once you do.
We take four different wallets. Does that make this harder?
Only if the day is reconciled as one lump. Recording the method on each sale means close produces a figure per rail, and each is compared with its own statement. Four small comparisons that each either match or do not are far easier than one comparison that is always approximately wrong.
What if the internet goes down mid-shift?
The till keeps taking sales, printing receipts and moving stock offline, then syncs when the connection returns. Anything inherently online — an M-Pesa STK push, an eTIMS submission, the web shop — needs a live link, but the local record of what you sold never depends on it.
Does it work with M-Pesa?
Yes, at both ends of the business. At the counter a cashier sends an STK push and the customer approves it on their phone; the sale will not close until the confirmation lands. Merchants without Daraja API access can take a paybill or till payment and confirm the reference manually. On the online shop, M-Pesa is a checkout option like any other. The shortcode is the merchant's own, so the money lands in the business's account without sell.ke sitting in between.
Do I need internet?
Not to keep selling. Offline mode lets the till take sales, print receipts and reserve stock while the connection is down, then syncs everything when it returns. You do need connectivity for the parts that are inherently online: an M-Pesa STK push, an eTIMS submission and the online shop all need a live link.
Can I stop staff from giving discounts or deleting sales?
Yes. Discounts, voids and refunds sit behind a manager PIN, and every one of them records who authorised it and when. Staff accounts carry role permissions, so a cashier can sell without seeing cost prices, editing products or opening reports. A void that reverses stock is a movement in the audit trail, not a gap in it.
The problems that travel with this one
These rarely arrive alone. Fixing one usually exposes the next.
Stock going missing
Why shrinkage is almost never one big theft, and what actually closes the gap.
Not knowing your profit
Takings are not profit. The gap between them is where most small shops quietly fail.
The second shop
The second branch is where most retail businesses discover their systems were held together by the owner.
The features that do the work
Selling at the counter
Split payments, held orders, manager-gated discounts and a drawer count that reconciles.
Reports and real accounting
Double-entry books — trial balance, P&L, balance sheet — not a CSV export to somebody else's software.
Branches, staff and control
Shared catalogue, separate stock, transfers that are movements, and permissions per branch.
If you are outside Kenya
The same problem, under the rails and the revenue authority you actually deal with.
Fix it on your own numbers
Fourteen days, no card. Import your product list or let Amina build it from a photo of your price list, and see what the reports say about your own shop.