Offline Mode
Brother POS is a Progressive Web App (PWA) designed to keep working even when the internet connection drops. Sales are queued locally, product and customer data are cached, and everything syncs automatically when connectivity returns. This page explains how offline mode works, what features are available, and what limitations to expect.
How Offline Mode Works
Brother POS maintains a local database in the browser that contains cached copies of your store's essential data:
| Cached Data | Purpose |
|---|---|
| Products | Product catalog for browsing and adding to cart |
| Categories | Category filters for the product grid |
| Customers | Customer records for lookup and attachment |
| Store settings | Tax rates, payment methods, enabled features |
| Promotions | Active sale campaigns and freebie rules |
| Label templates | Templates for offline label printing |
| Quality tier settings | Quality tier pricing matrices |
| Loyalty rewards | Available loyalty rewards for redemption |
| Loyalty tiers | Tier definitions and thresholds |
| Store credit balances | Per-customer store credit balances for offline payment |
| Gift card balances | Active gift card balances for offline lookup |
| House account balances | Per-customer house account balances |
| Completed sales | Recent completed sales for compliance tracking |
| Pending time actions | Queued clock-in/out and break actions |
| Pending cash drops | Queued cash drop records |
When the network is available, this cache is kept up to date through periodic synchronization. When the network drops, the POS seamlessly switches to using cached data.
Detecting Network Status
Brother POS monitors your connection status continuously. A status indicator in the POS header shows your current state:
| Indicator | Meaning |
|---|---|
| Online | Connected to the server, all features available |
| Offline | No server connection, operating from local cache |
| Syncing | Reconnected and syncing queued data to the server |
The transition between online and offline is automatic. You do not need to manually switch modes. The POS detects the connection state and adjusts behavior accordingly.
Making Sales Offline
The most critical offline capability is the ability to continue processing sales.
How It Works
- You ring up items and complete payment as normal.
- Instead of sending the sale to the server, Brother POS saves it to the offline queue in local storage.
- A pending sale counter appears showing how many sales are waiting to sync.
- When the connection returns, the sync manager automatically sends queued sales to the server in order.
- Successfully synced sales move from the pending queue to the server database.
What Is Saved Offline
Each offline sale stores the complete transaction:
| Data | Stored? |
|---|---|
| Line items (products, quantities, prices) | Yes |
| Payment method and amount | Yes |
| Customer (if attached and cached) | Yes |
| Discounts (item and order level) | Yes |
| Tax calculations | Yes |
| Timestamp | Yes |
| Cashier/register info | Yes |
Cached Balances and Local Decrement
Brother POS caches customer store credit, gift card, and house account balances locally so these payment methods keep working while offline.
How It Works
- At login and on the background sync tick, the POS pre-caches each customer's non-zero store credit and house account balances and active gift card balances.
- When offline (or when the server is unreachable), store credit, gift card, and house account lookups fall back to the cached balance instead of failing.
- After every sale that uses one of these methods -- online or offline-queued, single payment or split -- the POS decrements the cached balance locally.
This local decrement keeps the cache accurate during an offline run. If the same customer makes a second offline sale, the POS already reflects the balance deducted by the first sale, so it cannot over-spend a depleted balance within the offline session.
Local decrement only keeps the on-device cache aligned. The server recalculates and confirms the real balance when sales sync, and the next full sync overwrites the cached values. Balances can still be slightly stale relative to activity on other registers.
Data Synchronization
Initial Sync
When you first load the POS, a full sync downloads:
- All active products with prices and stock levels
- All categories
- Recently active customers
- Store settings and tax configuration
- Active promotions and campaigns
- Label templates (if label printing is enabled)
Sync metadata (last sync time, record count, duration) is tracked for each data type.
Ongoing Sync
While online, the POS periodically checks for updates:
- Products and categories -- refreshed based on sync interval
- WooCommerce orders -- fetched from the server when the WooCommerce tab is viewed; the general sync manager runs periodically
- Pending sales queue -- attempted immediately when connectivity is detected
Sync After Reconnection
When the POS detects that the network has returned:
- Pending sales are sent to the server one at a time, in chronological order.
- Each sale is confirmed by the server before the next one is sent.
- If a sale fails to sync, the error is recorded and the sale remains in the queue for retry.
- After all pending sales are processed, a full data refresh occurs to pick up any changes made while offline.
An offline sale is already completed and paid at the register before it syncs. When it reaches the server, the server re-derives the total from the line items, and small differences (for example, discount or tier-pricing recompute drift) can make that total differ slightly from the cash the cashier actually collected. For sales that originated in the offline queue, Brother POS accepts the sale and logs the difference for audit instead of rejecting it -- this prevents an already-paid sale from getting stuck forever in the retry loop. Online sales are still validated strictly.
Viewing Pending Sales
You can monitor the offline queue from the POS:
The pending sales count is shown as a badge on the sync status indicator in the POS header. This tells you how many sales are waiting to sync.
Individual pending sales cannot be viewed in detail from the POS. The sync status badge in the header is the primary way to monitor how many sales are waiting to sync.
Automatic Retry
The sync manager automatically retries failed sales multiple times. When connectivity returns, pending sales are sent to the server one at a time in chronological order.
The sync manager handles retries automatically. No manual intervention is needed.
Feature Availability Offline
Not all POS features work identically when offline. Here is what to expect:
Fully Available Offline
| Feature | Notes |
|---|---|
| Product browsing | Uses cached product catalog |
| Category filtering | Uses cached categories |
| Adding items to cart | Full functionality |
| Weight selection | Presets and manual entry work; USB scale still works locally |
| Discounts (manual) | Percentage and dollar discounts work |
| Tax calculation | Calculated using cached tax rates |
| Cash payments | Full functionality |
| Debit/card payments | Recorded (actual card processing depends on your terminal's offline capability) |
| Receipt printing | Works if the printer is on the same local network |
| Label printing | Works using cached templates and local command generation |
| Barcode scanning | Full functionality |
| Time tracking | Clock-in/out and break actions are queued locally when offline and synced when connectivity returns |
Limited Offline
| Feature | Limitation |
|---|---|
| Customer lookup | Only cached customers are available; new customers added elsewhere will not appear |
| Loyalty points | Points are calculated from cached data; may not reflect the most recent balance |
| Store credit / gift card / house account | Balances are read from the cache and decremented locally; may not reflect activity on other registers until the next sync |
| Sale campaigns | Uses cached campaign data; newly created or expired campaigns may be stale |
| Stock levels | Displayed from cache; may not reflect sales made on other registers |
| Purchase limits | Daily totals from cache; sales on other registers may not be reflected |
Not Available Offline
| Feature | Reason |
|---|---|
| WooCommerce orders | Requires server connection to fetch online orders |
| Integrated terminal payments | Requires server to communicate with payment processor API |
| Sales history (server) | Only pending offline sales are visible; completed server-side sales are not available |
| Manager override verification | Some restricted actions may have limited functionality offline |
| Returns processing | Requires server to look up original sale |
If your store relies on compliance features like daily purchase limits, be aware that offline mode cannot guarantee real-time enforcement across multiple registers. The limits are checked against cached data, which may be stale.
Cart Calculation on Flaky Connections
Cart totals are calculated by the server while online so that pricing, discounts, and promotions are always exact. To keep the register responsive when the connection is poor, cart calculation:
- Uses a fast 3-second timeout per request (much shorter than the multi-minute timeout used for bulk product sync). A slow server no longer leaves the cart stuck on stale numbers.
- Falls back to the offline calculation when the server request times out, hits a network error, or returns a server (5xx) error. Validation and authentication errors (4xx) still surface normally.
The net effect on flaky-internet stores is that the cart always reaches a correct total within a few seconds -- either from the server or from the local offline mirror.
The offline calculation carries each line item's weight preset through the calculation, so offline sales of preset weights (e.g., 14g and 7g of the same flower) keep their correct tier-aware prices when they sync.
Offline Tax Calculation
When offline, Brother POS calculates taxes locally using cached store settings:
- Standard tax (e.g., 13% HST) is applied as configured.
- Split tax (GST/PST) uses cached rates for each component.
- Additional taxes (e.g., vapour products tax) use cached rates.
Tax calculations are identical to online mode as long as the tax configuration has not changed since the last sync.
Offline Promotions
Active sale campaigns and freebie rules are cached and evaluated locally:
- Percentage and dollar-off campaigns -- applied based on cached rules.
- Freebie campaigns -- spend threshold tracking and free item injection work offline.
- Date-range campaigns -- start and end dates are checked against the local device clock.
If a campaign was created or modified while you were offline, those changes will not take effect until the next sync. Similarly, a campaign that expired while offline may still appear active until the cache refreshes.
Common Scenarios
Internet Drops During a Busy Period
- The POS automatically switches to offline mode.
- Continue processing sales normally. Each sale is saved to the local queue.
- When the internet returns, sales sync automatically in the background.
- The pending sales counter decreases as each sale is confirmed.
Register Loses Power While Offline
Locally cached data persists across browser restarts. When you restore power:
- Open the POS in the browser.
- Any pending sales from before the power loss are still in the queue.
- When online, they sync automatically.
Offline data is stored in the browser profile. If you clear browser data (cookies, site data), the pending sales queue is lost. Never clear browser data on a register with pending sales.
Multiple Registers Offline Simultaneously
Each register maintains its own independent offline queue. When connectivity returns, sales from each register sync independently. There is no conflict between registers -- each sale gets a unique identifier.
Prolonged Offline Period
If the POS remains offline for an extended period (hours or days):
- Sales continue to queue without limit.
- Product prices and stock levels become increasingly stale.
- Customer data may not reflect recent changes.
- When connectivity returns, all queued sales sync in order.
Troubleshooting
| Problem | Solution |
|---|---|
| POS shows "Offline" but internet is working | Try refreshing the browser. The connection check may need to re-establish. Verify you can reach the Brother POS server from this device. |
| Pending sales not syncing | Check the sync status indicator in the header for error information. Common issues: server unreachable, authentication expired (re-login), or data validation errors. |
| Product prices seem wrong | Prices are from the cache. If prices were updated while offline, they refresh on the next sync. |
| Customer not found | The customer was added on another register or from the admin panel while this register was offline. They will appear after the next sync. |
| "Storage error" message | The browser's local storage may be full or corrupted. Check available disk space. In extreme cases, the browser profile may need to be reset (back up pending sales first). |
| iOS Safari hangs on sync | Safari on iOS can occasionally hang on storage operations. The POS has a built-in timeout to prevent permanent hangs. Force-close and reopen the browser if this occurs. |
Best Practices
- Do not clear browser data on registers. This deletes the local cache including any pending sales.
- Monitor the pending sales counter. A growing count means sales are not syncing. Investigate sooner rather than later.
- Reconnect as soon as possible. While offline mode works reliably, keeping the cache fresh reduces the chance of stale data causing issues.
- Use a wired network connection when possible. Ethernet is more reliable than Wi-Fi for registers that need consistent connectivity.
- Check pending sales at end of shift. Before closing the drawer, verify that all sales have synced. If any are stuck, retry or escalate.
- Install the POS as a PWA. Installing the POS to the home screen or desktop provides an app-like experience and additional offline resilience.
What's Next?
- Time Tracking -- Clock in/out at the POS
- Manager Override -- How authorization works, including offline considerations
- Sales History -- View pending and completed sales