A counter built for queues
Barcode scan, search or category tiles. Hold and resume carts, weighed items, line and sale discounts, and big touch targets for tablets.
Opti Shop runs your counter, your stock and your customer credit across every branch. Every sale is saved on the device first, so light-off, data-off and bad-signal days never cost you a customer.
Built for the shops on every street
Selling, stock, purchasing, credit, cash-up and reports in one install for each client. Owners see every branch. Cashiers see only their till.
Barcode scan, search or category tiles. Hold and resume carts, weighed items, line and sale discounts, and big touch targets for tablets.
Every sale, delivery and adjustment is an append-only movement. Stock counts show variances before anything posts.
Manual mobile money that works offline, or a payment link with a QR that confirms itself through Paystack.
Leave part of a sale on balance with credit limits, debtor ageing, and payment links sent over WhatsApp.
Purchase orders, goods received against them, supplier balances and expenses, all kept by branch.
Sales, gross profit at the cost on the day of sale, VAT / NHIL / GETFund for filing, debtors, shift cash differences, and a fraud watch for voids, refunds and discounts.
Open with a float and close with a count. Expected cash and the difference are logged for each cashier.
Fast cashier PIN switching, manager approval for voids, an audit trail for every price change, and your own brand colours in light or dark mode.
Each till keeps its own copy of products, prices and staff. Sales queue on the device with their own IDs and post to the server once the line comes back, with no duplicates and nothing lost. Try it below.
3D preview needs WebGL. Every sale still queues on the device and syncs when the line returns.
Sales, payments and stock moves get their IDs on the device, so two offline tills never clash.
Each sale line keeps its name, price, cost and tax as they were. Later edits never rewrite history.
A sale that already happened is never blocked. It is flagged for review after the sync.
Device time and server time are both stored in UTC and shown in Africa/Accra.
Tap products to build a cart, then pay with cash, a mobile money link or a balance. The maths uses whole pesewas, never floats, the same way the real till does.
A payment link is confirmed only by a verified gateway callback or a server-side check. Callbacks are stored first and processed once. A late payment on an expired link is still recorded and flagged for the manager.
The sale waits for payment. No stock is posted yet, and the link expires in 15 minutes.
The customer pays on their own phone. The amount is locked to the link.
The signature is checked, then a verify request goes to Paystack.
The callback is idempotent, so a repeated call never creates a second payment.
Stock posts, the receipt prints and the cashier moves to the next customer.
Cash received, change due, and the amount feeds the shift's expected cash.
Taken offline as pending. A manager later confirms it against the statement.
Your own Paystack keys, so the money goes straight to your account.
Checked against the credit limit. Going over the limit needs a manager's PIN.
Movements are never edited or deleted. A mistake is corrected with a new movement, and the stock level updates in the same database transaction.
| Time | Type | Qty |
|---|
Sensible defaults that the owner can edit. Permissions are enforced on the server, not just hidden in the interface.
| Capability | Owner | Manager | Cashier | Stock keeper |
|---|---|---|---|---|
| Make sales, hold and resume | ||||
| Apply discounts (up to limit) | Small limit | |||
| Void, refund | Approval | |||
| Leave balance (credit sale) | Within limit | |||
| Confirm pending mobile money | ||||
| Edit products and prices | ||||
| Stock adjustments and counts | ||||
| Purchase orders and receiving | ||||
| Reports | Own branch | Own shift | Stock only | |
| Users, roles, settings, licence |
0ms
Product lookup runs on the device, even with no signal.
0
Products stay smooth on a mid-range tablet.
0
A sale is saved on the device before anything else happens.
1/client
Your own server, your own database, and your own gateway keys.
There are no tiers and no feature locks. You pay once for the licence and get the whole system. Support and maintenance is the only ongoing cost, it is optional, and you choose monthly or yearly.
One-time payment
Your own install on your own server, set up and loaded with your products before the first sale. No subscription to keep selling.
Ask for your quoteUpdates, fixes, backup and restore checks, and help over WhatsApp and phone. Billed monthly or yearly. Stop whenever you like: your system keeps working exactly as it is.
The licence is paid once and never renews. Only support and maintenance is monthly or yearly.
Yes. Once a till has opened online one time, it keeps products, prices and staff on the device. Sales, cash, manual mobile money and balance sales all work offline, and they sync automatically when the connection returns. Only payment links need the internet.
Any tablet or laptop with a modern browser. Opti Shop installs as an app from the browser (a PWA). Receipt printers and barcode scanners plug straight in.
Every client gets their own install and their own database. Nobody else's shop shares it. Scheduled backups go to cloud storage, and we test a restore with you before you go live. We follow Ghana's Data Protection Act and collect only the customer data you need.
Tax rates are settings, not code. Prices can include or exclude tax, and each product carries its rate. The tax report splits out each levy for filing.
Discounts have limits for each role. Voids, refunds, large discounts and price overrides ask for a manager PIN. Every sensitive action goes to the audit log, and the fraud watch report highlights patterns.
Only for support and maintenance, and only if you want it. The licence itself is a single payment with no renewal. Support covers updates, fixes, backup checks and help, billed monthly or yearly. If you stop, nothing breaks: the system keeps working, you just stop getting updates and help until you restart.
We'll show you a full day of trading in 20 minutes: open a shift, sell offline, take a MoMo link, then cash up. Bring your product list and we'll load it during the call.
WhatsApp opened. Send the message and we'll reply with a time.