Working offline and sync issues
A device must always be able to issue a receipt. With no connection the app keeps issuing and printing, queues everything, and sends it in order when the connection returns.
What works offline
| Works offline | Needs a connection |
|---|---|
| Issuing receipts, including picking customers, products and locations from the device's snapshot, custom fields and signatures. | Signing in with email & password. A session that is already signed in keeps working, including after the app is closed and reopened. |
| Signing in by PIN, for staff with Allow offline sign-in on a device that has been set up online (see Signing in). | Signing in by PIN in the web browser. |
| Printing and reprinting, with the duplicate rule applied on the device. | Creating customers, products or locations, and the "Create as New Customer" checkbox. |
| Viewing receipts issued on this device. | Viewing older receipts, running reports, changing any setting. |
The offline store
Whenever the device is online it refreshes its offline store: everything the device keeps to work with no connection, in one download. Today that is the offline sign-in roster, every location, every customer and product when those modules are licensed, and the receipt settings, branding (with the logo inlined) and custom fields. It refreshes on every sign-in, every five minutes while online and whenever you return to the app, under any signed-in member's session whatever their permissions, so a device set up by a manager holds the catalogue before the first cashier arrives. Who may do what with it is decided by their permissions on the device, exactly as online. Offline, the New Receipt pickers search that store; the location picker shows only the locations assigned to whoever is signed in, so one store serves every member of a shared device. The Sync issues screen shows when it was last refreshed. A future feature that works offline draws on the same store.
Who sends what
Every queued receipt and print remembers who created it and is sent in that person's name, under their own sign-in, so the server records the right issuer and applies the right permissions. For someone who signed in online that happens as soon as the connection is back. For someone who signed in offline the app first completes their sign-in with the server quietly (the PIN they typed is kept in memory for exactly this), then sends. That works even if the app was closed or restarted in between. Only if the device could not keep what it needed (it never should) do their items wait: they are sent the next time that person signs in online on the device, and the Sync issues screen lists them under Waiting for Someone Else.
When that person is not coming back to the device, anyone with Receipts.Create can press Sync It for Them. The receipt is sent under the presser's sign-in but recorded as the creator's, with a note on the receipt ("Synced by … on behalf of …, who issued it offline") and in the audit log. A print synced this way is recorded under the presser.
Offline references and numbers
A receipt issued offline cannot be given a number without the server, so it is given an offline reference instead: two groups of four letters, such as KQXM-TVZB, from an alphabet without I, L, O or U so nothing is misread on thermal paper. The paper prints "Offline Ref KQXM-TVZB" and the device's time as "Issued (Offline)". When the receipt syncs it gets the next number in the organisation's sequence, and from then on the receipt screen and any reprint show the number, the offline reference, the server's time as "Issued" and the device's time as "Issued (Offline)", so either identifier can be looked up. The number order follows the order receipts arrive. Receipts issued before October 2026 carry references in the older OFF- form with digits; they sync, search and print as before.
The banner
A strip under the header tells you where things stand and disappears when there is nothing to say. Tap it to open the Sync issues screen.
| Banner | Meaning |
|---|---|
| The Device Is Offline — Features Will Be Limited · N waiting to sync | No connection. The queue is holding N items. Anything that needs the server shows Offline with a cloud icon the moment the device knows it has no connection. |
| Syncing N items… | Online and sending. |
| N items waiting to sync | Online, queued, about to send. |
| N items could not sync — tap to review | The server refused something. A person needs to look. |
How the queue behaves
- Items are sent strictly in order, so a print never arrives before its receipt.
- Every item carries an id generated on the device, so a retry after a dropped connection can never create a receipt or a print twice.
- A network failure pauses the queue and marks the device offline; it resumes automatically when the connection returns, every five minutes, and whenever you open the app. A server that is temporarily unavailable, or a session that is mid-refresh, pauses the queue the same way without marking the device offline.
- A rejection by the server is never retried automatically. The item is parked as failed with the server's reason until you retry it.
- If another receipt in the organisation already carries the same offline reference (two devices picking the same code is very unlikely, but possible), the server refuses the receipt rather than guess, and the item fails with "Offline reference … is already used by another receipt in this organisation". Retrying will not help: re-issue the receipt online and contact support about the failed item; it stays listed so it is not forgotten.
- The device refusing to save (storage full) is reported, never hidden: issuing offline fails with "Nothing was issued" so no paper is handed over for a receipt that could vanish, and the Sync screen shows a red warning when the queue or the offline store could not be written.
Accepted With Notes
An online receipt is checked strictly. An offline receipt is different: the paper has already been handed to a customer, so the server accepts what was printed and records anything it would otherwise have refused as a note. The receipt then shows an "Accepted With Notes" card. The notes you may see:
| Area | Notes |
|---|---|
| Customer | The selected customer no longer exists (name kept as printed) · the customer's name has since changed · the customer link was dropped because the Customers module is not licensed. |
| Products | A product was sold at a price that differs from the catalogue now · a line was priced per unit or at a custom price and the product now allows only the other (kept as printed) · units were worked out from the amount at a rate that differs from the catalogue now, or for a product that no longer works units out (kept as printed) · a product is no longer sellable (kept as printed) · a custom line kept as printed although custom lines are now off · product links dropped because the Products module is not licensed. |
| Custom Fields | A field no longer exists (value dropped) · a value no longer fits its type · required fields were not filled in. |
| Location | No location recorded although one is now required · a location kept although selection is now off or it is no longer one of yours · the location no longer exists (recorded without one). |
| Signatures | A signature recorded although signatures are now off · a required signature was not captured. |
The Sync issues screen
Reach it by tapping the banner, or at the route /receipts/sync.
"Sync" card
Connection status (Online or Offline, plus Signed In Offline while the session has not yet been completed with the server), when the reference data and the offline sign-in roster were last refreshed, how many items are waiting, failed and waiting for someone else, the last attempt time, and a Sync Now button (disabled when offline, signed in offline, already syncing or empty).
"Needs Attention" card
Only when something failed: "The server refused these. Fix the cause and retry. If an item can never be accepted, contact support — nothing is removed from a device." Each item names the receipt (by offline reference) or the print, when it was created, how many attempts were made, and the server's message in red, with a Retry button.
"Waiting to Sync" card
Your items still to be sent, "Sent automatically as soon as the device is online", or "Nothing waiting."
"Waiting for Someone Else" card
Only when the queue holds items created by a person who signed in offline and has not been back online on this device. Each names its creator; Sync It for Them (needs Receipts.Create) asks for confirmation and sends it in their name as described under "Who sends what".
Nothing is discarded
Signing out or changing organisation
Queued items stay on the device. Signing out with items waiting asks for confirmation and explains that they are sent the next time you sign in here online. Change Tenant on the sign-in screen asks too: it forgets this organisation's offline sign-in roster, but not the queued receipts.