Skip to content

Payments 7 min read

How to accept M-Pesa payments in your shop

By the Wave POS team · Updated

The short answer

To accept M-Pesa in a shop, get a Lipa na M-Pesa Buy Goods till number or a Paybill from Safaricom, record each payment’s transaction code against the sale, and confirm every payment on your own M-Pesa records rather than the customer’s phone. At the end of each day or shift, compare the M-Pesa total in your POS with your M-Pesa statement.

In short

  • A Buy Goods till number suits paying at the counter; a Paybill adds an account number for invoices and customer accounts.
  • Confirm every payment on your own M-Pesa records, never on the customer’s phone.
  • Record the transaction code on each sale, so disputes and differences can be traced.
  • Compare the M-Pesa total in your POS with your M-Pesa statement every day or every shift.
  • An M-Pesa prompt (STK push) sets the amount for the customer and records the payment by itself.

How do shops accept M-Pesa payments?

Shops accept M-Pesa through a Lipa na M-Pesa business account from Safaricom: either a Buy Goods till number, which customers pay directly, or a Paybill, where customers also enter an account number. The money goes to the business, not to someone’s personal line.

Some small traders still take payments on a personal number. It works, but shop money and personal money end up in the same place, and at the end of the day it is hard to tell what the shop actually took. A business account keeps the two apart, and gives you a statement of the shop’s payments alone.

M-Pesa till number vs Paybill: which is better for a shop?

A Buy Goods till number is usually the simpler choice for a shop counter: the customer enters the till number and the amount, and that is all. A Paybill adds an account number, which suits a business that needs to know who or what each payment is for.

Buy Goods till number Paybill
What the customer enters Till number, amount, PIN Business number, account number, amount, PIN
Best for Paying at the counter Paying against an invoice or a customer account
Telling payments apart By time, amount and the payer’s name By the account number the customer types
Typical users Shops, supermarkets, kiosks, salons Wholesalers with credit customers, schools, utilities

Most shops are well served by a till number at the counter. A wholesaler whose customers settle their accounts by M-Pesa from their own offices may also want a Paybill, so each payment arrives with the customer’s account number on it; managing customer credit covers the rest of that process. A business with several branches can ask Safaricom about a separate till number for each, so each branch’s payments are easy to tell apart.

Charges, how and when money reaches your bank, and the documents needed to apply all change from time to time. Check the current tariffs and requirements with Safaricom before you choose.

How does a customer pay a till number?

The customer opens M-Pesa on their phone, chooses Lipa na M-Pesa, then Buy Goods and Services, enters your till number and the amount, and confirms with their PIN. They receive a confirmation message with a transaction code, and the payment appears on your till’s M-Pesa records.

Put the till number on a clear sign at the counter, so customers do not have to ask, and so nobody can pass off a different number as yours. Check the sign now and then: a sticker placed over your number sends your customers’ money elsewhere.

What is an M-Pesa prompt (STK push)?

An M-Pesa prompt, also called STK push, is a payment request sent from the till to the customer’s phone. A box appears on their phone showing the amount; they enter their PIN and the payment is made.

Prompts help in three ways:

  • No wrong amounts. The till sets the amount, so the customer cannot type KSh 1,500 instead of KSh 15,000.
  • No wrong numbers. The customer does not type a till number, so the money cannot go to the wrong business.
  • No fake messages. The payment is confirmed by the system, not by a message the customer shows you.

Prompts need an internet connection at the till and a payments service connected to your POS. When the connection is down, fall back to your till number and record the code.

How do you avoid fake M-Pesa messages?

Never hand over goods because of a message on the customer’s phone. Confirm every payment on your own side, in the shop’s M-Pesa messages, business app or statement, and only then let the goods go.

Tricks to watch for:

  • A forged message. A fake confirmation sent from an ordinary phone number, or typed to look like M-Pesa. Genuine M-Pesa messages come from MPESA, not from a phone number.
  • An edited screenshot. The customer shows a picture of a payment that never happened.
  • The wrong till. The customer pays a different till number, by mistake or on purpose, and shows you their confirmation.
  • “I sent it by mistake.” Someone calls to say they paid your till by mistake and asks you to send the money back. Do not send anything yourself; ask them to request a reversal from Safaricom.
  • An old message. A real confirmation from an earlier day, shown again.

Check that the amount, the code and the time match the sale. At busy times, give one trusted person the job of watching the shop’s M-Pesa messages while the cashiers serve.

Why should you record M-Pesa transaction codes?

Recording the transaction code against each sale turns a pile of messages into a record you can check. Each payment has its own code, ten letters and numbers such as SJK4H7Y2PL, printed at the start of the confirmation message.

With the code on the sale you can:

  • find the sale quickly when a customer disputes a payment;
  • spot the same code being used for two sales;
  • match payments one by one when the till’s M-Pesa total and your statement do not agree.

How do you reconcile M-Pesa at the end of the day?

Reconciling M-Pesa means checking that the M-Pesa payments your POS recorded add up to what actually reached your M-Pesa account over the same hours. Do it every day, or at every shift change, while the details are fresh.

  1. Take the M-Pesa total from your POS for the day or the shift.
  2. Take the total received on your M-Pesa statement for the same hours.
  3. Compare them. If they match, write the total down with your initials and stop.
  4. If they differ, list the codes on each side and find the ones that appear on only one.
  5. Find the cause: a sale recorded as cash that was really M-Pesa, a split payment entered wrongly, money received with no sale, or a sale recorded without the money arriving.
  6. Correct the record, and note what happened, so patterns show up over the weeks.

A worked example

At the end of Friday, a shop in Kisumu has KSh 48,350 of M-Pesa payments in the POS, from 62 payments. The M-Pesa statement shows KSh 49,850 from 63 payments. The difference, KSh 1,500, is a single payment. Matching codes shows a customer who paid KSh 1,500 by M-Pesa for a gas refill that the cashier recorded as cash. The cash count that evening was KSh 1,500 short, which confirms it. Once the payment method is corrected, both the drawer and M-Pesa add up.

The cash side of the same check is covered in cash drawer reconciliation.

How does M-Pesa work in Wave POS?

Wave POS records M-Pesa as its own payment method, so every M-Pesa payment is counted apart from cash, card and the rest. You can take M-Pesa in two ways.

Recording the code

The customer pays your till number or Paybill as usual. The cashier chooses M-Pesa at the till and can type the transaction code. The code is optional, and when it is typed Wave POS checks that it looks like an M-Pesa code. It does not check the payment with Safaricom, so the payment still has to be confirmed on your own M-Pesa records.

Sending a prompt

If the shop connects its own ZetuPay account (ZetuPay is a Kenyan payments provider) in Settings, the cashier can send an M-Pesa prompt to the customer’s phone from the till. The customer enters their PIN and the payment is recorded by itself. Prompts need an internet connection, and the money from them is paid into the shop’s ZetuPay account.

Split payments

A customer can pay part in cash and part by M-Pesa in one sale. A basket of KSh 3,450 might be paid with KSh 1,000 in cash and KSh 2,450 by M-Pesa, and each part is counted under its own method. Card, bank transfer, cheque and customer account can be mixed in the same way.

Reports and closing a shift

The payments report shows what was taken by each method, and exports to Excel, CSV or PDF, so it is easy to set beside your M-Pesa statement. When a cashier closes a shift, the shift report shows the payments taken by method, and the cash count shows whether the drawer is over or short. Staff and shifts explains how shifts work, and M-Pesa at the till covers the till side.

Wave POS does not read your M-Pesa statement or match it for you, so the comparison in the steps above is still yours to make. With every code and every total by method in one place, it is a short job.

Questions

Questions people ask

Is a till number or a Paybill better for a shop?

A till number is usually simpler for paying at the counter: customers enter only the till number and the amount. A Paybill adds an account number, which helps when payments must be matched to invoices or customer accounts. Some businesses use both. Check current charges and requirements with Safaricom.

What is STK push?

It is an M-Pesa payment prompt sent to the customer’s phone. The till sends the amount, a box appears on the customer’s phone, and they enter their M-Pesa PIN to pay. The customer does not type a till number or an amount, which avoids mistakes and fake messages. It needs an internet connection.

How do I know an M-Pesa payment is real?

Check it on your own side before handing over the goods: in the shop’s M-Pesa messages, business app or statement. Genuine messages come from MPESA, not from a phone number. Never rely on a message or screenshot on the customer’s phone, and match the amount and code to the sale.

Can a POS confirm M-Pesa payments automatically?

Yes, when the POS sends the payment prompt itself. In Wave POS, a prompt sent through the shop’s own ZetuPay account is recorded by itself once the customer enters their PIN. Payments made straight to your till number are recorded by the cashier, with the transaction code, and confirmed on your own M-Pesa records.

How often should I reconcile M-Pesa?

Every day, or at every shift change if several cashiers share a till. Compare the M-Pesa total in your POS with your M-Pesa statement for the same hours. A difference is easy to trace on the same day and much harder a week later, when nobody remembers the sale.

Anything else? Ask us — we answer on WhatsApp and by email.

Ready when the queue is.

Open your first till today. 14 days free, and your products, sales and settings stay when you choose a plan.