
Industry · Hardware shop
POS system for a hardware shop in Kenya
A hardware shop is three businesses wearing one coat. There is the walk-in customer buying two kilos of nails, the fundi buying ten bags of cement every week at a better price, and the contractor who wants a quotation today and an account until the end of the month. Most tills are built for the first customer only.
So the shop improvises. Wholesale prices live in the owner's head, quotations are written on a duplicate book, cable is cut by the metre and guessed at in the stock figure, and the contractor's balance is a page in an exercise book that only one person can read. It works until the owner travels.
What solves it
Sell by length, weight or piece
Cable by the metre, nails by the kilo, cement by the bag — the unit and its conversion live on the product, so a 7.5-metre cut reduces stock by 7.5 metres and costs correctly.
Wholesale and retail off one product
One cement record with a retail price, a trade price and quantity breaks. No duplicate SKU, so the stock figure stays single and reorder levels fire at the right time.
Quotations that become orders
Quote a contractor, and when they accept, the quotation becomes the order without re-keying it — at the prices you quoted, not today's.
Credit accounts with ageing
Sales on account create a receivable against the contractor. The debtor list ages by days outstanding, so a 90-day debt is visible as a 90-day debt.
Customer-specific price lists
A contractor's agreed rates apply automatically at the counter, so a cashier who has never met them still charges the right price.
A worked example: the cement contract
A contractor asks for 400 bags of cement, 200 metres of 4mm cable and 50 kilos of nails, on account, for a site in Ruiru. Retail cement is KES 850 a bag; your trade price at 100+ bags is KES 790.
You raise a quotation. The trade price applies automatically because the quantity crosses the break, so the cement is KES 316,000 rather than KES 340,000 — a KES 24,000 difference that a cashier doing it by hand gets wrong roughly half the time. The cable is priced per metre and the nails per kilo, so nothing is rounded to a bag or a packet that does not exist.
The contractor accepts a week later. The quotation converts to an order at the quoted prices, not the intervening price rise. It goes out on account, so the sale posts a KES 341,500 receivable rather than requiring payment at the counter, and the delivery to Ruiru carries its own zone fee as a separate line. Stock drops by 400 bags, 200 metres and 50 kilos at the same moment. At month end the contractor is on the ageing report at 30 days, with the whole history behind the figure.
- →Quantity break applied automatically, not by memory
- →Cable and nails sold in their real units
- →Quotation converts at the price you quoted
- →Receivable aged from the day of sale
- →Delivery fee priced by zone, reported separately
The features this trade leans on
Each one goes deeper than this page does — start with the first.
Prices, price lists and promotions
Wholesale and retail off one product, quantity breaks, customer-specific lists, VAT-inclusive display.
Customers and loyalty
Credit accounts that do not go missing, loyalty that returns, and a debtor list you can actually chase.
Stock you can trust
Batch and expiry, serial numbers, reorder levels, stock takes and the formulas behind them.
Delivery that pays for itself
Zones with their own rates, so the delivery fee covers the delivery instead of eating the margin.
Questions from this trade
Can I sell cable by the metre and nails by the kilo?
Yes. Products carry their own unit and conversion, so cable is sold and stocked in metres and nails in kilos. A 7.5-metre cut reduces stock by 7.5 metres, and the cost per metre is derived from what you paid for the roll.
Can I have separate wholesale and retail prices for cement?
Yes, on one product — a retail price, a trade price, and quantity breaks that step the price down at the volumes you set. You do not need a duplicate "wholesale" SKU, which is what splits a stock figure in two and makes reorder levels useless.
Can I give a contractor a quotation and an account?
Yes. Raise the quotation, and when it is accepted it converts to an order at the quoted prices. Selling on account creates a receivable against that contractor, and the debtor report ages what is outstanding so you know what to chase.
Does it handle delivery of bulky materials?
Delivery is priced by zone, so a Ruiru site and a Westlands site are not charged the same fee. The fee lands as its own line on the order, which means you can see whether your delivery service is covering its cost.
What hardware do I need for a hardware shop?
A laptop or Android tablet you already own, a thermal receipt printer, and a barcode scanner if you carry packaged goods. Weighing goods sold by the kilo still needs a scale, but the price per kilo and the stock deduction are handled by the till.
Does it work with M-Pesa?
Yes, at both ends of the business. At the counter a cashier sends an STK push and the customer approves it on their phone; the sale will not close until the confirmation lands. Merchants without Daraja API access can take a paybill or till payment and confirm the reference manually. On the online shop, M-Pesa is a checkout option like any other. The shortcode is the merchant's own, so the money lands in the business's account without sell.ke sitting in between.
Will it show me my profit?
Yes, and from a real ledger rather than a sales total. Every sale posts to a double-entry chart of accounts, so you get a trial balance, profit and loss, balance sheet and cash flow — not a CSV to hand your accountant. Margin is visible per product, per branch and per channel, because cost is tracked on the way in through purchase orders and goods-received notes.
Can I stop staff from giving discounts or deleting sales?
Yes. Discounts, voids and refunds sit behind a manager PIN, and every one of them records who authorised it and when. Staff accounts carry role permissions, so a cashier can sell without seeing cost prices, editing products or opening reports. A void that reverses stock is a movement in the audit trail, not a gap in it.
Try it in your hardware shop
Fourteen days, no card, no hardware to buy. Import your product list or let Amina build it from a photo of your price list.