Skip to content

How to Reconcile M-Pesa Till Payments Without Daraja API Access

Plenty of Kenyan businesses take payments on a till or personal line with no Daraja feed. You are not stuck with manual reconciliation - the confirmation SMS can be turned into an automatic record.

By Karani Geoffrey, Founder & CEO, Upeosoft
In short

If you cannot get Daraja C2B on your line, you can still reconcile automatically by capturing the M-Pesa confirmation SMS. A gateway app on a dedicated Android phone forwards each message to your system, which parses the amount, code and account and matches it to an invoice. You get automatic reconciliation without a registered paybill or API credentials.

Key takeaways
  • Daraja C2B needs a registered paybill or till plus API credentials, and it does not work on a personal line at all.
  • Many real businesses take payment on a buy-goods till or a personal number with no structured feed.
  • The confirmation SMS is the one thing that always arrives, for every payment, on any line.
  • A gateway phone can forward those messages to your system so reconciliation is automatic, not manual.
  • You still need a clean account reference for payments to match invoices without human sorting.
  • This buys you automatic reconciliation now, and you can upgrade to full Daraja later if your line qualifies.

The gap Daraja leaves open

M-Pesa integration guides all assume the same starting point: a registered paybill or till, enrolled for the C2B API, with credentials from Safaricom. When that is in place, payments arrive as clean, structured callbacks and reconciliation is straightforward.

The trouble is how many real businesses do not start there. A hardware shop takes buy-goods payments on a till that was never registered for the API. A consultant or landlord collects on a personal line, which can never be integrated at all. A trader uses an aggregator's shared code and only gets a summary. For every one of these, the structured feed does not exist - and yet they all need to know, quickly and accurately, who has paid.

The one signal that always arrives

Whatever line the money lands on, one thing is constant: M-Pesa sends a confirmation SMS. Personal line, unregistered till, aggregator code - the SMS still arrives, and it still carries the amount, the transaction code, the payer's name and the reference.

That makes the SMS the lowest common denominator of M-Pesa reconciliation. It is not as clean as a Daraja callback, but it is universal. If you can reliably capture and parse that message, you can reconcile payments on lines that Daraja will never reach.

Turning the inbox into a feed

The manual version of this is what most businesses already do: someone reads the M-Pesa messages and ticks off payments by hand, or exports a statement and matches at month end. It is slow, it is late, and it is where errors and missed payments hide.

  • A dedicated Android phone holds the paying SIM and stays on.
  • A gateway app forwards every incoming M-Pesa SMS to your server in real time.
  • Your backend parses each message and matches it against open invoices.
  • Reconciliation happens continuously, not in a stressful month-end scramble.

Doing it safely with an open-source gateway

Because this touches money, the forwarding has to be trustworthy. Upeosoft's SMS Gateway is open source (github.com/Upeosoft-Limited/upeo-sms-gateway) specifically so you can see how it protects your payment data. It keeps an encrypted queue on the device so no message is lost when the network drops, and it retries with backoff until delivery succeeds. It signs each message with a shared secret so your server can reject anything not genuinely from your phone. It delivers each payment exactly once, so a duplicated SMS never becomes a duplicated ledger entry. And it runs as a persistent service that survives reboots and battery optimisation.

Those properties are what separate a dependable reconciliation feed from a script that silently drops payments the first time the WiFi hiccups.

The reference scheme is the real work

The technology gets the message to your server; the business logic decides what it means. The single most important thing you can do is make customers pay with a reference your system understands. When the reference is a recognisable invoice or account number, matching is fully automatic and your books stay current with no human effort.

When the reference is missing or messy - customers typing a nickname, or nothing - you drop back to manual matching for those payments. So part of setting this up is practical: deciding what reference to ask for, printing it on invoices, and training staff to guide customers to enter it. Get that right and the whole system runs itself.

A bridge you can build on

SMS-based reconciliation is not a compromise you are stuck with - it is a bridge you can grow from. It gives an unregistered or personal-line business automatic reconciliation today, and it can run alongside or ahead of a future move to a registered paybill and full Daraja integration.

At Upeosoft we help businesses close this exact gap: deploy the gateway, tune the parsing to your M-Pesa message format, design the reference scheme, and connect it into your accounting or ERP so payments post themselves. If you are reconciling M-Pesa by hand because Daraja is not an option, talk to us - there is a better way, and it does not require waiting for a paybill.

Frequently asked questions

Why can't I just use Daraja for my till?

Daraja's C2B callback needs a registered short code - a paybill or a buy-goods till enrolled for the API - plus credentials from the Safaricom developer portal. Many small businesses either have not registered for C2B, use an aggregator's shared code, or take money on a personal line that can never be integrated. For all of those, the structured feed simply is not available, and the confirmation SMS becomes the practical route.

Is SMS-based reconciliation accurate?

The source data is accurate - the SMS is generated by M-Pesa for every completed transaction and carries the exact amount and code. Accuracy then depends on reliable forwarding and correct parsing. A proper gateway queues messages offline, delivers each exactly once, and signs them so forgeries are rejected. Parsing has to handle M-Pesa's message format, which is consistent enough to automate confidently.

What happens if the internet or the phone goes down?

A well-built gateway stores each message in an encrypted on-device queue and keeps retrying until it is delivered, so a dropped connection only delays reconciliation, it does not lose payments. It also restarts automatically after a reboot and resists Android's battery optimisation. When connectivity returns, the backlog syncs and your ledger catches up.

How do payments end up matched to the right invoice?

Through the account reference the customer enters when paying. The amount alone cannot identify an invoice because two customers can owe the same figure. If your customers pay with a reference your system recognises - an invoice or account number - matching is automatic. Part of setting this up well is deciding what reference customers should use and making it easy for them to enter it.

Should I still move to a paybill and Daraja eventually?

If your volume and needs justify it, yes - a registered paybill with Daraja gives cleaner data, STK Push at checkout, and payouts. But there is no need to wait. Starting with SMS reconciliation stops the manual work immediately, and you can migrate to Daraja later without disruption, or run both so nothing slips through.

Karani Geoffrey
Karani Geoffrey
Founder & CEO, Upeosoft

Karani Geoffrey is the Founder & CEO of Upeosoft, a software and automation company rooted in Kenya. He builds custom software, AI systems, and production-grade ERPNext for businesses across East Africa, and writes about the Kenyan realities - eTIMS, M-Pesa, SHIF, unreliable internet and power - that make or break real systems.

Next step

Want this working in your business?

Upeosoft builds and hardens the systems behind this article - for real Kenyan operations, with eTIMS, M-Pesa and offline realities handled.

Keep reading

Kenyan Compliance and Integrations

How to Automatically Record M-Pesa Payments from the Confirmation SMS

Every M-Pesa payment sends a confirmation SMS. A small Android gateway can forward that message to your system the instant it arrives, so payments record themselves instead of being typed in by hand.

7 min readRead article →
Kenyan Compliance and Integrations

Paybill, Till, STK Push or C2B: Choosing the Right M-Pesa Setup

Most M-Pesa integration problems start with the wrong account type. Paybill, till, STK Push and C2B behave differently - here is how to choose before you build.

7 min readRead article →
Kenyan Compliance and Integrations

Connecting Payments to Your Accounting System So the Ledger Updates Itself

Accepting a payment is only the first half. If it does not land in your books automatically, you have just moved the manual work from the counter to the accountant's desk. Here is how to close the loop.

7 min readRead article →