# POS system for supermarkets in Kenya

> Wave POS is a supermarket POS system for Kenya that runs in Chrome on any computer at the till. Cashiers scan with a USB barcode scanner and press F12 to take cash, M-Pesa or card. The tills keep selling when the internet drops, and each branch has its own stock, prices and cash drawers on one dashboard.

- **Quick tills for long queues**: A USB scanner, a beep for every item and F12 to pay. Park a basket while a customer fetches what they forgot.
- **Selling through network drops**: Sales are saved on the till and sent in order when the connection returns, with no gaps in receipt numbers.
- **Bales, cartons and bulk prices**: Sell a bale or a single packet from the same stock, and charge the wholesale price once a line reaches a set quantity.
- **Every branch, one dashboard**: Stock, tills, prices and cash for each branch, with transfers between them and reports for one branch or all.

## How a supermarket in Kenya sells

A supermarket sells many small baskets quickly, across several tills, to customers who will not wait long. Most of what goes wrong shows up at the counter or on the shelf:

- **Month-end queues.** Salary week fills every till at once, and a slow cashier sends people to the shop next door.
- **Network drops.** A till that needs the internet to sell holds up the whole queue when the line goes down.
- **Shared drawers.** Two or three cashiers on one drawer over a long day make a shortage hard to trace.
- **Bulk buyers.** Kiosk owners, schools and churches buy by the bale and expect a better price than the shelf.
- **Short-dated stock.** Yoghurt and baby formula lose their value quickly if nobody watches the dates.
- **Shrinkage.** Missing stock is often found months later, when it can no longer be explained.

The sections below show which part of Wave POS deals with each one.

## Fast tills for long queues

Wave POS keeps a cashier's hands on the scanner and the keyboard. A USB barcode scanner adds each item with a beep, the numpad sets quantities, and F12 opens payment. Items without a barcode are found by name or SKU.

When a customer runs back for the bread they forgot, park the basket, serve the next person, and pick the sale up again. Line and basket discounts are there for promotions, but a large discount or a price change needs a manager's PIN, so a big markdown never happens without a manager.

One sale can be paid in several ways, on one receipt. With your own ZetuPay account connected in Settings, the till sends an [M-Pesa prompt](https://wavepos.app/features/mpesa-pos) to the customer's phone; they enter their PIN and the payment records itself.

## Selling through network drops

Your tills keep selling when the internet goes down. Every sale is kept on the till itself and sent, in the order it was made, once the connection returns, and receipt numbers carry on without gaps, so nobody reaches for a receipt book.

M-Pesa prompts need the internet, so while a till is offline the cashier records M-Pesa payments with the transaction code. If a price changed in the back office while a till was offline, the sale is still accepted and flagged for a manager. The [offline selling](https://wavepos.app/features/offline-pos) page explains the details.

## Bales, cartons and bulk buyers

Wave POS sells packs from the single units in stock. Set up a bale of 12 × 2 kg maize flour as a pack of the 2 kg packet: one bale sold takes 12 packets off the count, and a single packet sells as usual.

For bulk buyers, give an item a [wholesale price](https://wavepos.app/features/wholesale-pricing) that applies from a set quantity. A kiosk owner who buys 12 packets of sugar gets the wholesale price on that line without the cashier doing anything. For a regular trade customer, the cashier can switch the whole sale to wholesale with F3.

## A Saturday basket, worked through

Here is one basket at a supermarket in Nakuru with three tills open:

| Item | Qty | Price | Line |
| --- | --- | --- | --- |
| Sugar, 2 kg | 2 | KSh 290 | KSh 580 |
| Maize flour, 2 kg | 1 | KSh 165 | KSh 165 |
| Fresh milk, 500 ml | 4 | KSh 65 | KSh 260 |
| Cooking oil, 3 L | 1 | KSh 980 | KSh 980 |
| Bar soap, 800 g | 1 | KSh 210 | KSh 210 |

The total is KSh 2,195. The customer pays KSh 1,000 in cash and KSh 1,195 by M-Pesa prompt, on one receipt. Stock falls at the Nakuru branch only, the sale records the cashier who served, and the dashboard's sales-by-hour chart moves. Had the line dropped during the sale, the cashier would have taken the KSh 1,195 with the M-Pesa transaction code and the sale would have gone up later.

## Cash, expiry and shrinkage under control

Every till runs shifts. A shift opens with a float, records cash in and out, and closes with a count that shows any variance, over or short. Cashiers on the same drawer switch in with their own PIN, and the shift report prints at close. Our [cash drawer reconciliation guide](https://wavepos.app/guides/cash-drawer-reconciliation) has more on balancing the drawer.

For the goods that need it, record batch numbers and expiry dates when you receive stock. Expired or damaged goods come off through an adjustment that waits for a manager's approval.

Stock takes can cover one category at a time: beverages on Monday, household goods on Tuesday. The tills keep selling while you count, because each figure is checked against the stock at the time you type it in; nothing posts until a manager completes the take. There is more on counting in our guide on [how to do a stock take](https://wavepos.app/guides/how-to-do-a-stock-take).

## Branches and reports

Each branch has its own stock, tills, prices and settings, and you see them together on one dashboard. Transfers move stock between branches, and anything that does not arrive is recorded as lost in transit.

Thirteen reports cover sales, payments, VAT, products, stock, shifts, debtors, creditors and profit. Sales by hour shows when to open the extra till; low stock shows what to reorder before the shelf is empty. Every report exports to Excel, CSV or PDF.

## Frequently asked questions

### Can several tills run at the same time in one supermarket?

Yes. Register each till and it runs its own cash drawer shifts and numbers its own receipts, even offline. Sales from every till land in the same branch stock and reports, and the back office shows when each till last synced.

### What happens to sales if the internet goes down?

Nothing is lost. The tills keep selling, save each sale on the device and send them in order when the connection is back, with receipt numbers that have no gaps. M-Pesa prompts need the internet, so record M-Pesa payments with the transaction code while offline.

### Does it work with a barcode scanner and receipt printer?

Yes, with a USB barcode scanner and a 58 mm or 80 mm thermal receipt printer connected over USB, serial or Bluetooth, or through QZ Tray, a free printing helper. The cash drawer opens for cash sales, and any computer or tablet with Chrome can be the till.

### Can bulk buyers pay a lower price?

Yes. Give an item a wholesale price that applies once a line reaches a set quantity, such as 12 packets, or let the cashier switch the whole sale to wholesale with F3. Bales and cartons sell as packs, drawing on the single packets in stock.

### Can a supermarket POS track expiry dates?

Yes, for the products that need it. Turn on batches for a product and record the batch number and expiry date when goods are received. Expired stock comes off through an adjustment that a manager approves, so every write-off is on record.

### How much does supermarket POS software cost?

Plans start from KSh 1,500 a month and are paid by M-Pesa. Before that comes a 14-day free trial with no card needed. If you would rather pay once, Wave POS can also be bought outright, priced by quote. See the pricing page for what each plan includes.

---

Source: https://wavepos.app/industries/supermarkets
Last updated: 2026-10-11
