Why three numbers and not two
The first number is physical: how many litres the dispensers say went out, checked against tank dips and deliveries. This is the wet-stock side, and it belongs to your forecourt equipment. It answers "did the fuel leave the tank".
The second is the record: what the station says it sold, at what price, to whom, and on which shift. This lives at the counter. It answers "did we write it down".
The third is the money: cash counted, M-Pesa received, card settled, credit properly issued on an account rather than informally extended. It answers "did we get paid".
A gap between the first and second is a recording problem. A gap between the second and third is a money problem. A gap between the first and third with no visibility of the second is just a mystery, which is exactly where a lot of stations sit. The fix is not a more suspicious owner; it is a middle number good enough to split the difference into two answerable questions.
And the reason this matters commercially is the price cap. EPRA publishes maximum pump prices monthly, so your fuel margin per litre is not something you negotiate your way out of. A small unexplained loss eats a disproportionate share of a regulated margin, and it compounds quietly across a year.
- Litres dispensed, per pump, per shift, from the forecourt system
- Sales recorded, per attendant, per shift, from the point of sale
- Cash counted at handover, against the float
- M-Pesa received on the Till or Paybill for the same window
- Card settlement for the same window
- Credit issued to named fleet accounts, with an invoice behind each one
Want to see it running in your own business first?
Sign UpA daily variance tells you something is wrong. A shift variance tells you where to stand.
How to run a station reconciliation that actually closes
Six steps, in the order they have to happen.
- 1
Fix the shift boundary first
Reconciliation only works if everybody agrees when a shift starts and ends. Set a hard handover time, count the float at both ends, and make the outgoing attendant sign for their own window. Without a boundary, every variance can be pushed into somebody else’s shift and none of them are ever resolved.
- 2
Give every person their own login
One shared account turns a shift variance into a site variance, which cannot be investigated. Individual logins on the POS mean a gap attaches to a person and a window, and, just as importantly, it clears everybody else immediately.
- 3
Record the non-fuel sales properly
The minimart, the lubricants, the gas, the car wash and the air are where cash goes untracked most often, because they feel small. Run them through the same till as everything else. A car wash paid in cash into a pocket is a hole that no amount of pump-reading precision will find.
- 4
Reconcile M-Pesa against sales, not against memory
The Till or Paybill statement should be matched to the sales that generated it for the same shift. Doing this automatically at the point of sale turns an evening of comparison into a report. Our [M-Pesa reconciliation guide](/blog/mpesa-till-number) covers the mechanics in general terms.
- 5
Put credit on an account with an invoice behind it
Informal credit at the pump is the most common source of an unexplained shortfall at a Kenyan station, and it is rarely dishonest. A fleet driver fills up, a supervisor waves it through, and nobody records it. Every credit sale needs a named account and a compliant [eTIMS invoice](/blog/etims-for-petrol-stations-kenya), created at the moment of the sale.
- 6
Close the three numbers, then escalate what remains
Once litres, recorded sales and money are all present for the same shift, the residual gap is small and specific. A litre-side residual goes to your forecourt people for calibration and dips. A money-side residual goes to the supervisor with a name and a time attached. That is a manageable conversation. "We are short this month" is not.
What makes a station reconciliation fail
Reconciling monthly
By the end of a month nobody remembers which shift a gap came from, the people involved have worked fifty more shifts, and the trail is cold. A month-end reconciliation is a bookkeeping exercise, not a control. Daily and per shift is the only version that changes behaviour.
Treating every variance as theft
Calibration drift, temperature effects, a short delivery and an honest keying error all look like a shortfall at first. Accusing staff before splitting the physical side from the money side destroys trust and usually finds nothing. Split it first, then act on what is left.
Letting the shop float in and out of the till
Attendants taking shop money into the fuel drawer and back again makes both sides unauditable. One till, one record, one reconciliation, even when it feels slower during a queue.
No float discipline
If the opening float is approximate, the closing count cannot be exact. Count in and count out, with a signature, every single shift. It is the cheapest control on a station and the one most often skipped.
A worked example: splitting a shortfall
A hypothetical Thika Road station finds itself consistently short at month end. The owner has litres from the forecourt system and money from the bank, M-Pesa and the cash count, and nothing in between. The shortfall is real but unattributable, and the atmosphere on site has gone bad because everyone assumes somebody is being blamed.
The station puts every non-fuel sale and every credit sale through a POS with individual logins, and starts reconciling per shift. Within two weeks the gap has separated into three much smaller things: a consistent small litre variance on one pump, which turns out to be a calibration job; a recurring shortfall on one evening shift, which turns out to be informal credit extended to two regular fleet drivers with nothing written down; and a car wash that was taking more than it was recording because the money never touched the till.
None of the three was a dramatic discovery, and none of them needed an accusation. What changed was the existence of a middle number. Before the POS, the site had "we are short". After it, the site had three specific, fixable items with a name and a time on each. That is what reconciliation is for.
When M-Pesa payments are not matched to sales, a missing payment, a staff shortfall or a double charge can slip past you until the money is already gone.
Veira reconciles M-Pesa Till and Paybill against every sale, so a mismatch surfaces the same day instead of at month end.
The half Veira closes
Veira supplies the middle number and the money number. Every sale, fuel or otherwise, is recorded against the staff login that made it, with the payment method attached. Cash, M-Pesa and card are reconciled against the sales that produced them rather than against a statement somebody reads later, and credit sales go onto a named account with a compliant eTIMS invoice created at the counter.
Shift handover produces a report: what this person sold, what they took in each payment method, what the float should be, and what is outstanding on credit. That is the document that makes a variance a specific question rather than a general suspicion.
Veira does not read your pumps, gauge your tanks or reconcile wet stock. That half is your forecourt equipment’s job and it stays there. What changes is that the money side stops being a guess, so the litre side has something honest to be compared against. The sales reporting page shows the shift and staff reports in detail.
Frequently asked questions
How often should a fuel station reconcile?
What causes a variance between pump litres and recorded sales?
Can a POS system detect fuel theft?
How do I handle credit given to fleet drivers at the pump?
Should the shop and the fuel share one till?
What reports should a supervisor get at handover?
Does reconciliation still work offline?
Most station shortfalls are not one big problem; they are three small ones hiding behind a missing middle number. Record the sales properly, per person, per shift, and the variance splits into things you can actually fix. Book a free Veira demo and bring one month of shift figures.
Need help, or want to talk it through first? Chat with us on WhatsApp