Skip to content
Case studyRetail & Commerce

POS Software: a till built for Kenyan retail

How we built FCM an offline-first point of sale that handles M-Pesa, KRA tax reporting, and stock on the shop's own computers.

Client
FCM
Industry
Retail & Commerce
Services
Digital Engineering, Managed Services
Timeline
3 months
The point of sale till with a grid of products and an item in the current sale
The till: tap or scan a product, pick a size, and charge.

The challenge

A busy shop, run by hand

  1. 01

    FCM sells over 1,000 products in colour and size variants, tracked [in spreadsheets and by hand].

  2. 02

    M-Pesa payments were checked by eye against phone messages, so missed and duplicate payments surfaced only at the end of the day.

  3. 03

    Every sale had to be reported to KRA, and counting stock meant [closing the shop for a day].

What we built

A point of sale that keeps selling, online or not

Fast, keyboard-first till

Barcode and QR lookup, split payments, quotes that turn into sales, and a cash drawer that opens itself.

M-Pesa built in

STK Push prompts on the customer's phone, till payments matched automatically, and missed callbacks recovered.

KRA tax compliance

Every sale is reported through the shop's ETR, with the CU invoice number and KRA QR code on the receipt.

Purchasing and stock takes

Purchase orders, goods received notes, and stock counts that run while the shop keeps selling.

Several tills, one shop

Extra tills connect to the main till over the shop network, with one end-of-day Z report across all of them.

Access and audit

Admin, manager, and cashier roles with per-page permissions, approvals for voids and adjustments, and a full audit log.

Point of sale inventory grouped by style, with variants, cost, price, and stock levels
Inventory by style, with every colour and size variant and low-stock filters.

Reports & insights

Know how the shop did, every day

The dashboard shows today's takings and low stock at a glance, and every report filters by date range, with a daily sales summary emailed to the owner.

Sales

Revenue, transactions, average basket, and VAT, by day, cashier, payment method, and category.

End of day Z report

One report across every till. Closed days are frozen and numbered, so a reprint always matches.

Reconciliation

Cash counted in the drawer and M-Pesa recorded on sales, checked against what Safaricom reported.

Inventory

Stock on hand, best sellers, and products sitting on the shelf that haven't sold.

Stock movements

Every change to stock, from sales and returns to deliveries and stock takes, with who made it.

Shifts and quotes

Floats, expected against counted cash, and how many quotes turned into sales.

Every report exports toCSVExcelPDF
The sales report with revenue, transactions, average basket, VAT, revenue by day, and sales by payment method
The sales report: revenue by day, payment method, and cashier.
The reconciliation report comparing cash counted and M-Pesa payments recorded against Safaricom's records
Reconciliation: cash and M-Pesa checked against the outside record.

Controls & safeguards

Controls that keep the till honest

The owner doesn't have to be in the shop to know what's happening in it. Problems raise themselves, sensitive changes wait for a second pair of eyes, and nothing goes unrecorded.

  • Maker-checker approvals

    Voids, returns, stock adjustments, and customer edits by cashiers become requests. A manager approves or rejects them with a reason before anything changes.

  • Alerts that find the right person

    Low-stock emails the moment a product runs short, and a warning on every screen, plus an email to managers, when sales aren't reaching KRA or M-Pesa codes are late.

  • A full audit log

    Every sign-in, sale, void, return, and price or stock change, with who made it and when, searchable by user and date.

  • Permissions per role and page

    Admin, manager, and cashier roles, with a permissions matrix the owner can change for every page in the app.

  • Nothing lost when the network drops

    Tax submissions queue and retry, missed M-Pesa payments are recovered from Safaricom, and a sale saved twice is only ever recorded once.

  • Backups checked to restore

    One-click and scheduled backups, optionally to Google Drive, each checked to be restorable, with payment keys left out.

The results

What changed for the shop

Products and variants on one till
1,128
Product categories, from printed tees to jute bags
13
Tills sharing one stock count and Z report
Up to 4
From brief to selling on the new till
3 months
“M-Pesa payments now show up at the till on their own, every sale goes to KRA without anyone thinking about it, and we can count stock without closing the shop.”
Shop Manager, FCM

Running a busy shop?

Tell us how you sell today, and we'll show you what a faster, connected till could look like for you. We usually reply within one business day.