What a forecourt does to a simple payment
In a shop, the person taking payment is standing at the record. The sale and the payment happen in the same place at the same moment, so tying them together is trivial. A station breaks that. The attendant is at pump four, the customer pays by phone, and the record lives somewhere else. Unless the system closes that distance, the station ends up with two separate piles at the end of the day: a list of fuel sold and a list of money received, with nothing joining them.
That gap is where the evening disappears. Reconciling an M-Pesa statement against a shift sheet by hand is genuinely slow on a station taking hundreds of mobile payments, and because it is slow it gets skipped on the busiest days, which are exactly the days it matters most.
There is a second edge specific to forecourts: a customer showing a confirmation message on a phone screen. Messages can be old, edited or from a different transaction entirely, and an attendant under pressure at a busy pump is not well placed to judge. The only sound practice is confirming against the business record rather than the customer’s screen.
And a third: fleet customers usually do not want to pay by phone at all. They want an account and a monthly invoice. Pushing them onto M-Pesa to simplify your reconciliation makes their life harder and can cost you the account. Our guide to Till versus Paybill covers choosing the right product for each kind of customer.
- Payment taken away from the till, at the pump, by several people at once
- High transaction count, so manual matching does not scale
- Attendant identity has to travel with the payment for the shift to reconcile
- Customer screenshots are not confirmation
- Fleet and corporate customers want credit and an invoice, not a Till payment
Want to see it running in your own business first?
Sign UpSetting M-Pesa up so a station reconciles itself
Six steps, from choosing the product to closing the shift.
- 1
Pick the right product for each customer type
A Buy Goods Till suits fast walk-in fuel and shop payments. A Paybill with an account number suits customers you want to identify, such as a regular account settling a balance. Deciding this up front prevents a mess where everything lands in one place with no way to tell what it was for.
- 2
Make the sale create the payment request
The strongest arrangement is the attendant recording the fuel amount and the system requesting the exact figure, so the amount cannot drift and the payment is already attached to a sale. That is what removes the end-of-day matching exercise entirely rather than making it faster.
- 3
Tie every payment to the attendant who took it
Individual logins are what let a shift close with a real figure per person across cash, M-Pesa and card. Without them, a shortfall belongs to the site and cannot be investigated, which is covered in the [reconciliation guide](/blog/fuel-station-pump-reconciliation-kenya).
- 4
Confirm on the business record, never the customer screen
Train attendants to release fuel on confirmation from the station’s own system or the business SMS, not from a message shown on a customer’s phone. This is a forecourt-specific risk because the attendant is away from the counter and under time pressure.
- 5
Keep fleet customers on accounts
Do not push an account customer onto M-Pesa because it tidies your reconciliation. Give them credit against a named account with a compliant invoice, and let them settle monthly. The [fleet and credit accounts guide](/blog/fuel-station-fleet-and-credit-accounts-kenya) covers how to run that safely.
- 6
Close the shift on all three rails together
Cash counted, M-Pesa received, card settled, against recorded sales for the same window, per attendant. If that close takes more than a few minutes, the system is doing the matching after the fact instead of at the moment of sale, and it will keep costing you an hour a night.
M-Pesa mistakes on a forecourt
Reconciling from the statement
Downloading an M-Pesa statement and matching it to a till sheet is a nightly hour that grows with your volume and gets abandoned exactly when trade is busiest. Matching at the point of sale replaces the task rather than speeding it up.
Accepting a screenshot
A message on a customer phone is not evidence the station has been paid. On a forecourt, where the attendant is away from the record and cars are queueing, this is the most commonly exploited gap.
One shared number for the whole site
If every attendant takes payment against one login, no shift can be closed with a per-person figure, and an M-Pesa shortfall becomes a general suspicion rather than a specific question.
Forgetting transaction costs in the margin
Payment charges come out of a fuel margin that is already thin and capped. Know what each rail costs you and account for it in the line-level margin rather than discovering it at year end. The [M-Pesa fee calculator](/tools/mpesa-fee-calculator) will show the current published charges.
A worked example: an hour a night, recovered
A hypothetical station in Kikuyu takes a large share of its fuel payments by M-Pesa across four attendants and two shifts. Every evening the supervisor downloads the statement and works through it against the shift sheets. On a quiet Tuesday it takes forty minutes. On a Friday it does not get done at all, and Friday is when the station is busiest.
The station moves to recording each sale at the pump with the payment requested from the system for the exact amount, tied to the attendant’s login. The matching now happens as each sale completes rather than afterwards.
The shift close becomes a report rather than a task: this attendant sold this much, took this much in cash, this much on M-Pesa, this much on card, and here is the difference if there is one. The forty minutes disappears, and, more usefully, the Friday that never got reconciled now closes like every other day. Nothing about M-Pesa changed; only where the matching happened.
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.
How Veira handles M-Pesa on a station
Veira ties each M-Pesa payment to the sale that created it and to the attendant who made it, so there is no statement to reconcile at the end of the shift. Cash, card and M-Pesa all close together against recorded sales for the same window, per person.
Because the sale is recorded when the fuel goes out rather than when the money is checked, a network drop does not break the flow: selling continues and the records sync when the connection returns.
Fleet customers stay on accounts with compliant eTIMS invoices rather than being pushed onto a Till, and the shop, lubricants and car wash run through the same till, so nothing is settled outside the record. See the M-Pesa payments page for fuel stations.
Frequently asked questions
Should a petrol station use a Till or a Paybill?
How do attendants take M-Pesa away from the counter?
Is a customer confirmation message good enough proof?
How long should a shift close take?
Should fleet customers pay by M-Pesa?
Do M-Pesa charges eat into a station’s margin?
What happens to M-Pesa payments when the network drops?
M-Pesa on a forecourt is a matching problem, not a payments problem. Attach each payment to a sale and an attendant at the moment it happens, and the nightly statement exercise disappears along with the shortfalls nobody could explain. Book a free Veira demo and bring one busy shift.
Need help, or want to talk it through first? Chat with us on WhatsApp