Skip to content
Kapda StockDocs

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 offlineNeeds internet
Completing a POS sale on a POS screen that is already openOpening a page you have not loaded yet, or reloading
Viewing the list of sales waiting to syncInvoices, 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#

  1. 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.

  2. 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.

  3. 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-โ€ฆ.

  4. 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.

Last updated 15/09/2026