How does a POS take M-Pesa?
In Wave POS, there are two ways: record the payment with its M-Pesa code, or send a prompt from the till so the customer pays on their own phone. Both put the payment on the sale under M-Pesa, so your shift and daily totals show M-Pesa apart from cash.
Most shops use both. Codes work for customers who have already paid to your Till Number or Paybill, and when the internet is down. Prompts save typing and remove wrong amounts when the connection is up. The M-Pesa payments guide compares the ways a shop can take M-Pesa in more detail.
Recording the M-Pesa code at the till
The customer pays to your Till Number or Paybill as they always have, and the cashier types the code from the confirmation message into the sale. The code is optional. If it is typed, Wave POS checks that it looks like an M-Pesa code (such as SJK4H7Y2PL) and keeps it with the payment, where it shows on the sale.
This works offline, because nothing has to reach the internet at that moment. See offline selling for everything else that keeps working when the network drops.
A typed code is a record, not a confirmation. Wave POS does not read your M-Pesa statement, so the cashier should see the payment arrive on the shop’s phone before handing over the goods.
Sending an M-Pesa prompt (STK push) from the till
The cashier enters the customer’s phone number and the amount, the till sends a prompt to that phone, the customer enters their M-Pesa PIN, and the payment is added to the sale on its own. Nobody types a code, and the amount cannot be mistyped by the customer.
- Connect your ZetuPay account. ZetuPay is a Kenyan payments provider. The shop connects its own account in Settings, and prompt payments go to that account.
- Choose M-Pesa at the till. Enter the customer’s phone number and the amount, and send the prompt.
- The customer enters their PIN. The till waits for the answer. When the payment comes through, it is recorded on the sale with its M-Pesa code.
- If they cancel or do not answer, the till says so. Send the prompt again, or let the customer pay to your Till Number and type the code instead.
Prompts need an internet connection and are for whole shillings. While the till is offline, the cashier records M-Pesa by code.
Split payments: a worked example
One sale can be paid with several methods, and each part is recorded under its own method. A customer in Eldoret buys:
| Item | Quantity | Price | Total |
|---|---|---|---|
| Sugar, 2 kg | 3 | KSh 290 | KSh 870 |
| Cooking oil, 5 litres | 2 | KSh 1,450 | KSh 2,900 |
| Maize flour, 2 kg | 4 | KSh 180 | KSh 720 |
| Sale total | KSh 4,490 |
They pay KSh 1,000 in cash and the rest, KSh 3,490, by M-Pesa prompt. The receipt shows both payments. The cash drawer expects KSh 1,000 more, not KSh 4,490, and the shift report adds KSh 3,490 to M-Pesa. When the cashier counts the drawer at close, M-Pesa never gets mixed into the cash.
Where M-Pesa shows up after the sale
M-Pesa appears in every total that matters, always apart from cash.
- Shift close. The shift report printed at close lists takings by payment method. The cashier counts only the cash, and you check the M-Pesa figure against your M-Pesa statement. The cash drawer reconciliation guide walks through it.
- Payments report. What each method took, including M-Pesa, for any dates and branch, exported to Excel, CSV or PDF.
- Dashboard. Today’s payments by method, next to sales by hour and top products.
Fixing M-Pesa mistakes
Mistakes are corrected, never deleted, so the figures still add up afterwards.
- A sale charged the wrong way. Void the whole sale, which puts its stock back, or take a return. Refunds can go to any payment method, so a customer who paid by M-Pesa can be refunded the right way.
- An account payment recorded by mistake. When a customer pays towards their balance and the payment goes on the wrong account or for the wrong amount, it is reversed. The reversal adds the opposite entry and the original stays on the customer’s ledger. More on accounts in customer credit.
You can try both ways of taking M-Pesa on your own shop with a free trial.