Offline mode & sync
What keeps working when the shop's internet drops, how offline POS sales are saved and synced, and what to do with a sale the server rejects.
Internet outages at the counter are common, so the POS is built to keep billing through them. Everything else in the app needs a connection.
What works offline#
| Works offline | Needs internet |
|---|---|
| Completing a POS sale on a POS screen that is already open | Opening a page you have not loaded yet, or reloading |
| Viewing the list of sales waiting to sync | Invoices, reports, customers, stock edits and every other module |
| Printing a receipt for an offline sale (the invoice does not exist until it syncs) | |
| WhatsApp, email and payment links |
The app also keeps recently used screens and API responses in a short-lived cache so that a slow or flaky connection still shows the last data it fetched (it waits up to 5 seconds for the network before falling back to cached data up to 24 hours old). Treat that as a convenience, not as offline editing.
How an offline sale works#
-
Check out as normal
When you complete a sale and the server cannot be reached, the app parks it on the device instead of failing. You see ๐ด No internet โ sale saved as OFFLINE-โฆ with the note It will sync automatically when you're back online. The cart clears so you can serve the next customer.
-
The waiting list
An amber bar at the top of POS shows N offline sale(s) waiting to sync, listing each temporary receipt number (for example
OFFLINE-LZ8K2Q-7F3A) with its item count, total and customer. -
Automatic sync
As soon as the browser reports the connection is back, the app replays the queued sales in order. Each one becomes a real invoice with a normal invoice number, and stock is deducted at that moment. You see โ Synced N offline sale(s): INV-โฆ.
-
Manual sync
Tap ๐ Sync now on the amber bar at any time. If the connection is still down you see ๐ด Still offline โ will retry when the connection returns.
When the server rejects a sale#
Stock and other checks run when the sale syncs, not when it was rung up offline. If, for example, an item sold out online while you were offline, that sale is rejected. You then see โ N offline sale(s) were rejected by the server โ review or discard them, and the sale stays in the list with the reason next to it.
- Re-create the sale manually with a corrected cart if the goods really left the shop, then
- tap Discard rejected to remove the rejected entries from the queue.
Sales that synced successfully are never affected by a rejected one.
Related#
Last updated 15/09/2026