← Back to blog
Payments · 4 min read

QR code payments: what scan-to-pay actually solves for a small Zambian shop

TTThinkers Tech Team · 27 August 2026
Share
Thinkers Tech

Most merchant payments over mobile money in Zambia still start with someone reading a phone number out loud. A till operator recites the shop's Airtel Money or MTN MoMo number, the customer types it into their own phone along with the amount, and the operator waits to see a confirmation message before handing over the goods. It works, but it also means every sale depends on a number being read correctly, typed correctly, and the right amount going in — the kind of small, repeated manual step that eventually produces a wrong-number transfer or a customer who typed half the price by mistake. The recent push toward POS-based mobile money acceptance, like MTN MoMo's tie-up with Zanaco to accept MoMo payments directly on Zanaco point-of-sale machines, is part of the same shift away from that manual step.

A QR code payment removes the typing on one side of that exchange. The business displays a code — printed at the till or shown on a screen — and the customer opens their Airtel Money or MTN MoMo app and scans it instead of typing a number. A static code just carries the merchant's account details, so the customer still enters the amount themselves, the same way they would after dialling a number by hand. A dynamic code goes further: it's generated fresh for each sale with the amount already built in, so the customer scans, confirms, and the exact amount moves with no digits typed by anyone. That second version is the one that actually closes the gap — a static code still leaves room for someone to fat-finger the amount, it just removes the account-number part of the mistake.

What catches businesses off guard is that a dynamic, per-transaction QR code isn't something a personal mobile money wallet generates on its own — it usually needs a registered merchant account with the provider, and often a small app or till device that talks to the provider's system to create a fresh code with the right amount and reference for every sale. A static code costs nothing and takes five minutes to set up, which is why it's the one most small shops start with, but it's worth knowing it hasn't actually solved the wrong-amount problem, only the wrong-number one. And like any digital payment method here, a QR transaction still needs to be checked against the mobile money provider's own statement at the end of the day — a scanned payment can fail or land late the same way a typed one can.

We set up merchant QR payments as part of the POS systems we build, using dynamic, per-transaction codes tied to the provider's merchant API rather than a static code pasted on a wall — so the amount is never something a customer has to get right by hand, and every scan reconciles automatically against what actually landed in the account. If your till is still built around reading a phone number out loud, that's usually the first gap worth closing, before it's a wrong transfer that takes an afternoon to track down.

Enjoyed this? Share it.
Share

Got a project in mind?

Get in touch