On this page
For most websites the till vs paybill decision comes down to one question: do payments need to say what they are for? A Paybill carries an account number with every payment, so it suits fees, invoices, rent, loans and subscriptions. A Till does not, which is fine for one-off product sales where your website already knows the order. Both work with STK push, so neither choice locks you out of a proper integration.
Most explainers stop at "Till for shops, Paybill for bills". That is true at the counter, but a website changes the picture, because the system rather than the customer can carry the reference. Below we look at the parts that matter once a checkout is involved.
Till and Paybill in one paragraph each
Till number (Buy Goods and Services). The customer chooses Lipa na M-Pesa, then Buy Goods, enters your till and the amount, and pays. There is no field for an account or invoice number. Behind the till there is normally a store or head-office number that groups one or more tills, which matters when a developer sets up an integration. Tills are what you see at supermarkets, petrol stations and kiosks.
Paybill. The customer chooses Pay Bill, enters your business number, then an account number, then the amount. The account number can be anything you define: a student admission number, a house number, a member number or an invoice reference. Paybills are what schools, utilities, SACCOs, landlords and insurers use.
Account numbers and why they matter online
On a website with STK push, the checkout sends Safaricom a reference along with the amount. The buyer never sees an account field. So for orders placed through your site, a Till loses almost nothing: your system already knows which order triggered the prompt.
The difference appears with payments that happen outside the checkout:
- A customer who closed the STK prompt by mistake and then paid from the M-Pesa menu instead.
- Parents paying school fees whenever they get paid, without logging in anywhere.
- Clients settling an emailed invoice two weeks after it was sent.
- Members topping up savings or repaying a loan at month end.
With a Paybill, each of these arrives with an account number that your system can read and match. With a Till, they arrive with only the payer's name, part of their phone number and an amount. Someone then has to guess.
Designing account numbers that work
- Keep them short and free of spaces. Daraja caps the length of the reference on STK requests, and customers mistype long strings.
- Use something the customer already knows, such as an admission number or member number, rather than an internal database ID.
- Avoid letters that look like digits (O and 0, I and 1) if you include letters at all.
- Print the exact format on invoices and receipts: "Paybill 123456, Account INV2045".
The numbers above are examples only. Your real Paybill number comes from Safaricom.
Who pays transaction charges
This is where people repeat outdated figures, so we will explain the mechanics and leave the numbers to Safaricom. On a Till, the customer typically pays nothing extra to buy goods, and the business pays a merchant charge on each payment received. On a Paybill, the charge depends on the tariff attached to your account: some arrangements have the customer bear the cost, others have the business absorb it, and the bands vary by amount.
Before choosing, ask Safaricom (or check its published business tariffs) for the current charges on each account type at your typical payment size. A school receiving many large fee payments and a café receiving hundreds of small ones will find different answers.
API and STK push support
Both account types connect to Safaricom's Daraja developer platform, and both support:
- M-Pesa Express (STK push). The website sends a payment prompt to the customer's phone. For a Till, the request uses the Buy Goods transaction type and needs both the store number and the till set correctly. For a Paybill it uses the Paybill type with your business number.
- C2B confirmations. Your server is told about payments customers make from the M-Pesa menu. For a Paybill these include the account number typed; for a Till they do not.
- Transaction status queries for checking a payment your site did not hear about.
Pochi la Biashara and personal numbers do not offer these services, which is why neither belongs behind a website. If you are not sure what STK push involves, start with our plain-English STK push explainer.
One practical point: whichever type you choose, it must be registered to the business, and someone must hold the administrator login for the M-Pesa organisation portal. Going live on Daraja runs through that person. Shortcodes registered years ago to a former manager's phone cause more delays than any technical issue.
Reconciliation for stores, schools and SACCOs
Reconciliation is matching payments received to what was owed. The shortcode type sets how much of that can be automated. Our full M-Pesa reconciliation guide covers routines and edge cases; here is how it plays out by sector.
Online stores
Nearly every payment starts at checkout, so STK push handles matching. A Till is usually enough. The leftover risk is customers who pay manually after a failed prompt; good stores show a "pay manually instead" option that tells the customer to use the order number and gives staff a short list of unmatched payments to review.
Schools
Fees are paid by many parents, at different times, often in instalments, and rarely through a website. The admission number as the Paybill account is what makes automatic posting to each student's ledger possible. A Till would mean a bursar matching hundreds of payments by parent name every term. Schools should use a Paybill. See our notes on school websites and fee portals.
SACCOs and microfinance
Members pay contributions, loan repayments and fees, often to the same shortcode. The account number usually combines the member number with a code for the purpose, so the system knows whether KES 5,000 is a deposit or a repayment. That only works on a Paybill. Read more on SACCO websites and member systems.
Recommendation by business type
| Business | Pick | Why |
|---|---|---|
| Online shop selling products | Till (or existing Paybill) | Checkout carries the order reference; one-off payments |
| Restaurant taking online orders | Till | Short, immediate payments tied to an order |
| School or college | Paybill | Admission number as account; instalments outside the website |
| SACCO or microfinance | Paybill | Member and purpose codes in the account field |
| Landlord or property manager | Paybill | House or unit number identifies the tenant |
| Consultancy sending invoices | Paybill | Invoice number as account so payments clear invoices |
| Gym or subscription service | Paybill | Recurring payments made from the menu need a member reference |
| Hotel or lodge taking deposits | Either | Till works if all deposits go through the booking form; Paybill if guests also pay by invoice |
A simple test: imagine the next fifty payments. If almost all of them will start on your website, a Till is fine. If a meaningful share will start in the customer's M-Pesa menu weeks later, get a Paybill.
A quick example
Say a Kitengela water-delivery company takes orders online but also bills 40 estates monthly. Orders through the website could use a Till, but the monthly bills would arrive without references. A single Paybill with order numbers for web orders and estate codes for monthly bills keeps everything in one statement and one report.
Before you apply: a short checklist
Whichever account you settle on, a few minutes of preparation saves weeks of back-and-forth once a developer is involved.
- Register it in the business name. Use the company or business-name registration, not a director's personal details, so the shortcode survives staff changes.
- Name two administrators. One person leaving should not lock you out of the organisation portal. Agree who holds the admin role and who holds a backup.
- Decide the display name. The name customers see on the prompt and the SMS should match the name on your website. A mismatch makes careful buyers cancel.
- Write down your account-number format before printing anything, if you chose a Paybill.
- Ask about settlement to your bank. Find out how and how often funds can be moved from the shortcode to your business account.
- Check the tariff that applies to your expected payment sizes, as discussed above.
Have these answers on one page when you brief your developer. It turns the integration into a technical job rather than an admin chase.
Getting set up properly
For the wider choice of how to accept payments, including aggregators and cards, read every M-Pesa payment option for online business compared. When you are ready to put a Till or Paybill behind a real checkout, our web development team builds the integration, tests it with live shilling payments and hands you a dashboard that shows what has and has not matched.