Contact Us
Back to blog

M-Pesa Integration for Business Software: Paybill, Till, and API, Explained

Almost every piece of business software we build in this market ends up needing to move money via M-Pesa in one direction or another — collecting a payment, disbursing a loan, paying a salary. "We support M-Pesa" gets said a lot, but it covers three genuinely different integrations with different capabilities, and the wrong one for your use case will surface as a support problem, not a technical one.

Paybill: many payers, one account, needs a reference

A Paybill number is built for receiving payments from many different customers into one business account, where each payment needs to be attributed to something — a member number, an invoice, an account. It's the natural fit for recurring collections: SACCO member contributions, rent, school fees, utility bills. The trade-off is that reconciliation depends entirely on the payer correctly entering the account reference, which is also its most common failure point.

Till Number: fast checkout, no reference needed

A Till Number (Buy Goods) is built for point-of-sale: a customer pays for a specific transaction happening right now, with no account reference required. It's the right fit for retail and restaurant checkout, where the "reference" is simply the receipt being generated at that moment — not a recurring account relationship.

Daraja API: when software needs to initiate, not just receive

Paybill and Till both describe how a customer pays in. The Daraja API is what lets your software act as well — checking a payment status programmatically, sending an STK push prompt directly to a customer's phone from your app instead of asking them to dial manually, or disbursing money out via B2C (a loan payout, a salary payment) rather than only ever receiving it.

This is the piece that turns "we accept M-Pesa" into "M-Pesa payments post to your ledger automatically" — a loan disbursement that's also a ledger entry, a payroll run that pays out and reconciles in the same action, a POS sale that doesn't need a cashier to manually confirm an SMS before printing a receipt.

Matching the integration to the product

  • Retail or restaurant checkout → Till Number, ideally with Daraja-driven STK push so the cashier isn't waiting on a customer to dial manually.
  • SACCO contributions, loan repayments, recurring bills → Paybill, with automated reference matching so a mismatched entry doesn't become a manual reconciliation task.
  • Loan disbursement, payroll payout → Daraja B2C, so the payment and the ledger entry are the same event instead of two records someone has to match up later.

See how Core POS, Sacco Suite, and PayDesk each handle M-Pesa natively.

Talk to an engineer

Your next great product
starts with one conversation.

Whether you have a detailed brief or just a rough idea — we'll help you shape it into something exceptional. No hard sells, no jargon.

Not ready to call yet?

Drop your email — we'll send you a free technology brief tailored to your industry.

No lock-in contracts
Reply within 4 hours
Dedicated project manager
100% satisfaction focus
Chat with us