# Offline Functionality

WCPOS stores your product and customer data locally on each device using a browser-based database (IndexedDB). This means parts of the POS work without an internet connection, while others require connectivity.

## What Works Offline[​](#what-works-offline "Direct link to What Works Offline")

* **Browsing products** — search, filter, and view product details from cached data
* **Browsing customers** — look up customer names, emails, and addresses
* **Building a cart** — add items, change quantities, edit prices, and apply POS discounts
* **Barcode scanning** — scan barcodes to find products in the local database
* **Viewing reports** — the default (offline) report type generates reports from locally stored orders

## What Requires a Connection[​](#what-requires-a-connection "Direct link to What Requires a Connection")

* **Completing checkout** — processing payment and creating the order in WooCommerce requires server communication
* **Applying coupon codes** — coupon validation happens on the server
* **Syncing data** — pulling new products, updated prices, or new customers from WooCommerce
* **Logging in** — initial authentication requires a connection to your WordPress site
* **Licence activation** — Pro licence checks need to reach the WCPOS licence server
* **Processing refunds** — refunds can't be queued offline; the gateway and your store both need to be reachable (see [Refunds](/orders/refunds.md))

## How the Local Database Works[​](#how-the-local-database-works "Direct link to How the Local Database Works")

When you first open WCPOS, it begins downloading your WooCommerce products and customers in the background. This process is progressive — the more you use the POS, the more complete your local data becomes.

The local database:

* **Persists between sessions** — data survives browser restarts and device reboots
* **Is per-device** — each device maintains its own local copy
* **Stays in sync** — WCPOS periodically checks for changes on the server and pulls updates

For more technical detail, see the [Architecture](/reference/architecture.md) reference.

## Connectivity Indicator[​](#connectivity-indicator "Direct link to Connectivity Indicator")

The POS header shows a coloured dot indicating connection status:

* **Green** — connected to the server, all features available
* **Yellow** — intermittent connection, some operations may be slow
* **Red** — offline, limited to browsing cached data

## What Happens During Connectivity Loss[​](#what-happens-during-connectivity-loss "Direct link to What Happens During Connectivity Loss")

If you lose your internet connection while using the POS:

1. **Products and customers remain browsable** from cached data.
2. **You can continue building carts** and editing items.
3. **Checkout will fail** if attempted — the POS needs to reach your WooCommerce server to process the order.
4. **Open orders are preserved** in the local database until connectivity returns.

## When Connection Restores[​](#when-connection-restores "Direct link to When Connection Restores")

Once your connection comes back:

* The connectivity indicator turns green.
* You can proceed to checkout and complete any parked orders.
* Background sync resumes, pulling any product or customer changes that happened while you were offline.
* No manual action is required — WCPOS handles reconnection automatically.

## Tips for Unreliable Connections[​](#tips-for-unreliable-connections "Direct link to Tips for Unreliable Connections")

* **Use "Save to Server" on important orders** — this pushes the order to WooCommerce immediately, so it's not lost if the device's local database is cleared.
* **Sync regularly** — if you know connectivity is intermittent, sync your product catalogue while you have a good connection so local data is up to date.
* **Consider the native apps** — the desktop and mobile apps (when available) can offer better offline resilience than the browser version.
