Skip to content
MultiPOSRetail operations

12 modules

Built as one system, not a till with plugins

Each module below is backed by the API today. Every one of them writes to the same transactional core, which is why the numbers agree with each other.

Point of sale

A till that refuses to double-charge. Every checkout is submitted with an idempotency key, so a flaky connection or an impatient second tap resolves to one sale, one payment and one set of ledger entries.

  • Sells from the branch and stock location the cashier is signed in to
  • Split, partial and credit tenders against configured payment methods
  • Sale, payments, inventory balances and stock ledger written in one transaction
  • Printable receipts and full sale detail from history
  • Register open and close with counted cash and recorded variance

Businesses & branches

Staff belong to people, not to databases. A single sign-in can hold membership in several isolated businesses, switch between them, and carry a different role in each.

  • Signup, first-business onboarding and additional business creation
  • Business switching without a second account
  • Business-scoped users, custom roles and guarded system roles
  • Permission-based access enforced per branch
  • Separate platform control plane with its own administrators and mandatory TOTP

Inventory & stock ledger

Balances are a consequence, never an input. Every movement posts an immutable ledger entry, so the number on the screen can always be explained by the rows underneath it.

  • Warehouses and stock locations per branch
  • Opening stock, then auditable adjustments with reasons
  • Immutable stock-ledger posting on every movement
  • Optional batch, serial and expiry tracking
  • Base-currency inventory valuation

Procurement & receiving

The buying side, end to end: invite suppliers to quote, compare the responses, award into a draft purchase order, and receive against it without the ledger ever double-counting a delivery.

  • Controlled RFQs with invited suppliers and comparable quotation capture
  • Award to draft purchase order with immutable price-source links
  • Supplier delivery-note references, accepted and rejected quantities, rejection reasons
  • Idempotent receiving — a retried GRN posts once
  • Supplier catalogue with SKUs, purchase packs, lead times and contract pricing

Quotations & sales orders

The distance between a customer asking for a price and the goods leaving the building, modelled properly — with prices frozen at the moment they were quoted.

  • Quotation lifecycle with revisions, expiry and server-rendered PDF output
  • One-time conversion to a stock-validated sale at frozen quoted prices and tax
  • Configurable expiring reservations with automatic stock release
  • Auditable partial and full prepayments with FIFO invoice allocation
  • Partial fulfilment, cancellable dispatch, delivery, and pickup handover

Customers & receivables

Credit sales that do not quietly become bad debt. Ageing, cases, reminders and allocations are part of the same ledger the till writes to.

  • Tenant-isolated customer accounts with credit limits and payment terms
  • Due-date tracking with oldest-sale payment allocation
  • Branch-owned collection cases, promises to pay and receivable disputes
  • Configurable overdue-reminder rules with consent-aware delivery queues
  • Account receipts that reconcile collections into the cashier's open register

Payments & mobile money

Mobile money that settles against the sale it belongs to. Credentials are encrypted per tenant, callbacks are signed, and a capture can only be spent once.

  • Payment-method configuration per business
  • Lipana M-Pesa STK push with encrypted per-tenant credentials
  • Signed webhooks and automatic reconciliation
  • Single-use sale capture — no double settlement
  • Business-specific callback URL issued in settings

Reporting & exports

Reports are rendered server-side from the same data the operations run on, so a printed document and the screen it came from cannot drift apart.

  • Server-rendered PDFs for purchase orders, outstanding-order register, GRNs and variances
  • Stock-ledger exports in XLSX and CSV
  • Sales history with CSV export and printable receipts
  • Live inventory dashboard
  • System-wide audit log

Online storefront

Each business gets a branded catalogue at its own slug, rendered server-side for search engines and reading the same product data as the point of sale.

  • Per-store branding and slug
  • Server-rendered catalogue and product pages
  • Structured data for search engines
  • Shares one product catalogue with the till

Multi-currency

A quotation converted at last month's rate keeps last month's rate. Conversions are snapshotted onto the document rather than recalculated whenever someone reopens it.

  • Configurable ISO currencies
  • Dated exchange rates
  • Frozen quotation and purchase-order conversion snapshots
  • Inventory valued in the base currency

Document vault

Supporting paperwork lives next to the record it supports, in private object storage, with the database holding only tenant-scoped metadata.

  • Private uploads against supplier and quotation records
  • SHA-256 checksums on every object
  • Tenant-scoped metadata; file contents never enter the database
  • Malware scanning before a file is accepted

Tax & compliance

Fiscal transmission is decoupled from the sale. The till commits, the outbox carries the obligation forward, and nothing is lost if the revenue authority is unreachable.

  • eTIMS configuration and transactional outbox boundary
  • System-wide audit log across every module
  • Immutable platform audit trail with tenant lifecycle controls
  • Feature flags per tenant

In practice

How the pieces hold together

The till

A checkout that cannot charge twice

Most point-of-sale trouble starts with a sale that half-committed. MultiPOS submits checkout with an idempotency key and writes everything the sale touches inside one database transaction.

  • Retried submissions resolve to the same sale
  • Sale, payments, balances and ledger commit or roll back together
  • Partial and credit tenders settle against the customer account
  • Registers open and close with counted cash and recorded variance

One checkout writes

sales
1 row
sale_payments
1–n rows
inventory_balances
updated
stock_ledger
append-only

The warehouse

Stock you can explain, line by line

A balance is never typed in. It is the sum of an append-only ledger, so any figure on any screen can be traced back to the receipt, adjustment or sale that produced it.

  • Immutable ledger entry on every movement
  • Opening stock, then adjustments with recorded reasons
  • Warehouses and stock locations per branch
  • Optional batch, serial and expiry capture at receiving
  • XLSX and CSV ledger exports straight from the backend

Movement sources

Goods receiving
+ accepted qty
Point of sale
− sold qty
Adjustment
± with reason
Pickup handover
− at collection

The ledger

Credit that does not quietly become bad debt

Selling on account is the easy part. MultiPOS carries the rest: ageing, allocation, cases, promises and reminders — all against the same records the till wrote.

  • Credit limits and payment terms per customer
  • Payments allocated to the oldest sale first
  • Branch-owned collection cases, promises to pay and disputes
  • Configurable overdue rules with consent-aware delivery
  • Account receipts reconciled into the cashier's open register

Receivable lifecycle

Credit sale
due date set
Overdue
rule queues reminder
Collection case
promise to pay
Receipt
FIFO allocation

See it running

Walk through your own workflow with us

Bring a real purchase order, a real credit customer and a real stocktake. We will run them through the system on the call.