What Works Offline
Every feature, in three columns — works normally, shows you stale cached data, or is blocked until you reconnect — plus the handful of places where an offline action is silently lost.
9 min read · Updated 10 Sep 2026
On this page
This is the reference page. It covers the Kassly app on a phone or tablet; the web dashboard needs a connection for everything.
How to read this page
Every row carries one of three verdicts.
| Verdict | Means |
|---|---|
| Works | Fully usable. What you do is saved on the device and sent up when the connection returns |
| Cached | The screen opens but shows data from the last sync. It may be out of date, and some actions on it are disabled |
| Blocked | Kassly refuses and tells you why. Nothing is lost, but nothing happens either |
Where Kassly shows a specific message, it is quoted so you can match what is on your screen.
Selling
| Feature | Verdict | Detail |
|---|---|---|
| Search, scan and add to cart | Works | From the local catalogue and barcodes |
| Ringing up and completing a sale | Works | Banner reads "You're offline — transactions will sync when reconnected" |
| Receipt number | Works | From the till's pre-allocated block. Falls back to an OFL- number if the device was never paired |
| Overselling | Blocked | Checked against the local stock copy, same as online |
| Manual discounts | Works | Calculated on the device |
| Senior citizen and PWD discounts | Works | Recomputed by the server when the sale lands |
| Promo codes | Blocked | "Promo codes need a connection to verify — connect and try again." |
| Hold a cart | Works | "Cart held (offline) — syncs to other terminals when back online." |
| Recall a cart held on this device | Works | |
| Recall a cart held on another till | Blocked | It was never on this device. You get a generic "No internet connection." |
| Void a sale | Blocked | "Cannot void while offline." Manager approval by PIN still works, against the cached roster |
| Returns and refunds | Blocked | Not available in the app at all, online or offline. Void is the only reversal. See Returns and refunds |
| Printing a receipt for an offline sale | Works | Printed from local data, with your logo from cache |
| Reprinting a receipt for an already-synced sale | Blocked | Needs the server. Fails as "print failed, tap to retry" with no mention of being offline |
| Emailing or texting a receipt | Blocked | Does not exist in the app in any state. Print or show on screen |
| Customer display on a second screen | Works | Entirely local |
See Making a sale and Hold and recall.
Payments
| Tender | Verdict |
|---|---|
| Cash | Works |
| Card | Works |
| GCash | Works |
| Maya | Works |
| Bank transfer | Works |
| Cheque | Works |
| Split across several tenders | Works — unless one leg is Credit, which blocks the whole sale |
| Credit / charge to account | Blocked — "Credit payments require an internet connection." |
Credit is the only refused tender, and the reason is that the balance and the credit limit live on the server. Selling on account offline would mean guessing at both. The receivables screen is likewise blocked: "Reconnect to load balances and collect payments." See Payments.
Shifts and the cash drawer
| Feature | Verdict | Detail |
|---|---|---|
| Open a shift | Works | "Shift Opened Offline" — "No connection right now — your shift is active on this device and will sync automatically when you are back online." |
| Cash In and Cash Out | Works | Confirmed as "Recorded Offline" |
| Close a shift | Works | "Closed offline — totals below are this device's records. The official Z-reading is generated when the close syncs." |
| X-reading during the shift | Cached | Computed on the device and labelled Offline estimate |
| Z-reading | Blocked | The numbered, sealed reading is generated server-side when the close syncs. No thermal print offline |
| Opening a shift with no branch on the device | Blocked | "Branch information is missing — reconnect to the internet so the app can restore your account, then try again." |
The offline X-reading is a real calculation, not a placeholder. It folds in queued cash movements and account payments taken on this device. Two things it cannot do: it always shows returns as zero, and it omits the BIR fields that only a real Z-reading carries.
See Closing a shift and X and Z readings.
Customers, memberships and loyalty
| Feature | Verdict | Detail |
|---|---|---|
| Search the customer list | Cached | As of the last sync |
| Add a new customer | Works | "You're offline. This customer will sync to the server when connectivity returns." |
| Edit a customer that has already synced | Blocked | |
| A customer's purchase history | Blocked | "Transaction history is unavailable offline." |
| Scan a member in | Works | Checked locally first |
| Record a member visit | Works | "Welcome, {name} (offline — will sync)" |
| Issue a membership at checkout | Works | |
| A visit the plan's rules refuse | Blocked | Expired or out-of-allowance visits surface as a policy error and are not queued |
See Customer profiles.
Kitchen, tables and dine-in
| Feature | Verdict | Detail |
|---|---|---|
| Kitchen Display | Blocked | Full-screen: "You're Offline" — "Kitchen Display requires an internet connection to stay in sync." |
| Sending a dine-in order to the kitchen | Blocked | "Cannot send dine-in orders while offline." |
| Order Mode (building a dine-in order) | Cached | "Offline — you can build the order, but sending needs a connection." |
| Editing a note on an item already sent | Cached | The note is kept locally, with a warning that the kitchen will not see it |
| The floor plan | Cached | Table statuses may be stale, and a table's current order will not open |
| Marking a table clean or occupied | Cached | See the warning below |
| Settling a dine-in tab | Blocked | |
| Queue / waitlist | Blocked | "You're offline. Queue updates require an internet connection." |
See Kitchen display and Table management.
Appointments, rentals and job orders
| Feature | Verdict | Detail |
|---|---|---|
| Today's agenda | Cached | |
| Create an appointment | Works | |
| Check a client in | Works | |
| Change an appointment's status | Works | |
| Cancel an appointment | Works | |
| Opening a tab from a booking | Blocked | "Connection required" — "Opening a tab needs internet. Connect and try again." |
| The rentals board | Cached | |
| Starting a rental meter | Blocked | "Starting a meter needs internet — the server stamps the start time. Connect and try again." |
| Stopping a rental meter | Blocked | Same reason |
| Taking in a job order | Works | "Job order saved offline. It will sync when the connection is back." Intake only — progressing a job needs a connection |
A meter has to be stamped by the server because the elapsed time is what the customer is billed for, and a device clock can be wrong or changed. See Rentals.
Inventory
| Feature | Verdict | Detail |
|---|---|---|
| Looking at stock levels | Cached | As of the last sync |
| Recipe availability | Cached | |
| Receiving stock | Blocked | "Receiving requires a connection." |
| Stock counts | Blocked | "Counts require a connection." |
| Stock adjustments and stock-in | Blocked | See the warning below — this one fails badly |
| Creating or editing a product | Blocked | See the warning below |
See Receiving stock and Stock counts.
Staff and the time clock
| Feature | Verdict | Detail |
|---|---|---|
| Time clock in station mode (shared device, staff enter a PIN) | Works | PIN checked against the cached roster, punch queued |
| Station mode on a device that has never synced | Blocked | "Staff list not synced yet. Connect to the internet once, then try again." |
| One-tap self punch (the older button on your own account) | Blocked | And the punch is lost — see the warning below |
| Timesheets and approvals | Cached | You can read them; the buttons are disabled |
Reports
| Feature | Verdict | Detail |
|---|---|---|
| Oversight dashboard | Cached | Headed "Showing cached snapshot as of …", with a (cached) label on the figures |
| Quick reports | Cached | The cards go blank rather than saying anything. See the warning below |
| Everything on the web dashboard | Blocked | The web app has no offline mode |
Online orders
| Feature | Verdict |
|---|---|
| The online-order inbox | Blocked — "Could not load online orders" |
| Accepting or rejecting an online order | Blocked, and the action is lost — see below |
Orders keep arriving on your storefront while you are offline; they are simply not visible until you reconnect. Nothing is lost on the customer's side. See Online orders.
Where an offline action is silently lost
Most blocked features tell you clearly. A short list does not, and in these cases the thing you did does not happen and is not queued. If your connection is unreliable, treat these as connection-only work.
These actions are lost if you make them offline. Kassly shows a generic error, or in some cases nothing at all, and there is no queue behind them:
- Stock adjustments and stock-in. No warning about being offline, no queue — just a raw error. Your stock is not changed.
- Creating or editing a product in the catalogue.
- Accepting or rejecting an online order.
- A one-tap self punch on the older time-clock button. Station mode queues correctly; this button does not, despite looking identical in use.
- Marking a table's status — clean, occupied, free. The change sticks on the device and looks right, but it is never sent to the server, so other tills and the web floor plan never learn about it.
- Opening the POS from a table link (a QR code or a deep link with a table on it) does nothing at all, with no message.
- Quick reports on the oversight screen fail without saying so. The cards simply stay empty, which looks like "no sales" rather than "no connection".
The Queue for approval button that appears on some manager-approval prompts does nothing. Ignore it; get a manager to enter their PIN instead, which does work offline against the cached roster.
The pattern behind the list
Once you have read the table, the rule is easy to hold in your head.
Taking money works. Everything that has to agree with another device does not.
A sale is a self-contained fact — Kassly can record it and reconcile later. A kitchen ticket, a table status, a rental meter, a credit balance, a stock count and a queue position are all shared state: two devices editing them independently would produce two different truths, and Kassly refuses rather than guess which one wins.
The one thing to plan around is that stock and prices are frozen. If you are going to be offline for a stretch, sync first.
Next
- Sync status — reading the badge.
- Troubleshooting sync — when something will not go up.
- How offline works — the machinery underneath.