ZuriPay
Enterprise POS · Kenya & East Africa

The point-of-sale that never stops selling.

ZuriPay is a real-time, offline-first point-of-sale platform for supermarket chains — KRA-fiscalised, M-Pesa native, running on its own books, or reconciled to Microsoft Dynamics 365 Business Central when BC is the system of record. Built keyboard-first for the checkout lane, and intelligent for the back office.

🌐Offline-firstKeep selling through WAN, cloud, BC or eTIMS outages — zero data loss.
🧾KRA eTIMSEvery taxable sale fiscalised, online or signed at the edge.
📱M-Pesa nativeSTK push, QR, Buy-Goods, C2B and B2C refunds — no double charges.
🔗Business CentralIdempotent, reconcilable postings through an anti-corruption layer.
⌨️Keyboard-firstA full checkout with no mouse — F2–F12 lane grammar.
✨AI analyticsNarrative insights, anomaly detection and ask-your-data.
The platform

Everything a multi-branch supermarket needs

🛒

POS lane

Keyboard-first, mouse-free checkout: scan, search, quick-key favourites, discounts, price overrides, voids, walk-in & loyalty customers, receipt reprint — with a pole display and a self-checkout kiosk.

💳

Payments

M-Pesa via Daraja (STK, QR, Till, Paybill, B2C refunds) and semi-integrated EMV cards under PCI DSS v4.0 — PANs never stored. Idempotent callbacks and a no-double-charge timeout pattern.

🧾

Fiscalisation (eTIMS)

KRA-compliant VAT at 16% with zero-rated and exempt codes. OSCU online, VSCU signing at the edge when offline, and a transmission backlog that drains on recovery with no duplicates.

💵

Till & cash

Open a till with a counted float, record pickups and drops, produce X and Z reports, run end-of-day and close-of-business, and reconcile the drawer — every step audited.

📦

Inventory & catalogue

Fast, trustworthy stock truth from an append-only stock ledger (or projected from Business Central when linked): products & pricing, promotions, stock lookup, transfers, inventory adjustments and tax setup across branches.

↩️

Customers & returns

Walk-in and return-customer flows, loyalty and customer pricing, and receipted returns/refunds with a signed fiscal credit note routed back to the original tender.

📊

Analytics & AI insights

Dashboards, a myriad of sales reports across every parameter (PDF & Excel export), and AI intelligence: executive narratives, anomaly detection, natural-language ask-your-data and forecasting.

🛡️

Security & governance

Default-deny RBAC + ABAC at every layer, a tamper-evident hash-chained audit trail, Kenya DPA 2019 data protection, and secrets held in Key Vault via managed identity.

The flow of a sale

From scan to system-of-record

  1. 1Scan & build the basketBarcodes, search or quick-keys — priced from the catalogue.
  2. 2Take paymentCash, M-Pesa STK, card or a mix — with change, split tenders and no double charges.
  3. 3FiscaliseThe sale is signed by KRA eTIMS (online) or the edge VSCU (offline) and the receipt carries the fiscal fields.
  4. 4Post to the booksStock and accounts update atomically; when linked, an idempotent, reconcilable posting flows to Business Central through the anti-corruption layer.
  5. 5Survive any outageOffline, the lane keeps selling to a durable edge journal and drains automatically on reconnect.
Why ZuriPay

Built for how East-African retail actually runs

Reliability first

The lane is designed to keep trading when the network doesn't. A durable outbox and write-ahead journal at the Store Edge Node mean zero lost sales.

Compliant by construction

KRA eTIMS fiscalisation, 16% VAT handling, PCI DSS v4.0 card handling and DPA 2019 privacy are baked in — not bolted on.

One source of truth

ZuriPay is the master of inventory and operational accounts by default; in BC-linked mode Business Central remains master and ZuriPay posts to it idempotently and reconciles. Either way the books balance.

Fast on the floor, smart in the office

A mouse-free, keyboard-first lane for speed at the till, and AI-assisted analytics for decisions in the back office.

Ready to serve the next customer?

Sign in to ZuriPay
An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.