Skip to content

Odoo POS Offline Mode: How It Works & Troubleshooting

DeployMonkey Team · March 22, 2026 10 min read

How Offline POS Works

Odoo POS is designed to work offline. When the internet drops, the POS continues processing sales using locally cached data. Orders are stored in the browser and synced to the server when connectivity returns.

What Works Offline

FeatureOfflineNotes
Process salesYesProducts and prices cached locally
Cash paymentsYesNo server needed
Card paymentsDependsTerminal may need connection
Print receiptsYesDirect to local printer
Apply discountsYesPre-configured discounts available
Customer lookupYesCustomer list cached at session start
Loyalty pointsPartialCached balance, may be stale
Inventory checkNoReal-time stock requires server
New customer creationYesSynced when back online
RefundsLimitedIf original order is cached

Data Cached at Session Start

# When a POS session opens, Odoo downloads:
# - Product catalog (name, price, barcode, image)
# - Customer list (name, email, loyalty balance)
# - Pricelists and discount rules
# - Payment methods
# - Tax configurations
# - POS configuration settings

# This data lives in browser localStorage/IndexedDB
# Available even if server goes down mid-session

Sync Process

# When internet returns:
# 1. POS detects connectivity
# 2. Queued orders sent to server one by one
# 3. Server processes each order:
#    - Creates sale.order
#    - Creates account.move (invoice)
#    - Updates stock (inventory)
#    - Records payment
# 4. POS confirms sync success
# 5. Local queue cleared

# If sync fails for an order:
# - Order stays in queue
# - Retry on next sync attempt
# - Error logged for investigation

Common Sync Issues

IssueCauseFix
Orders not syncingServer unreachable or errorCheck server status, Odoo logs
"Product not found" on syncProduct archived since session startedUnarchive product, retry sync
Duplicate ordersDouble sync attemptCheck for duplicate sale orders, delete extra
Price mismatchPricelist changed during offline periodOrders use cached prices (correct at time of sale)
Session won't closeUnsynced orders remainForce sync or manually create orders from POS data

Maximizing Offline Reliability

  • Use Chrome — best IndexedDB support for POS data
  • Don't clear browser cache — POS data is stored there
  • Start session with good connection — ensure full data download
  • Use local receipt printer — network printers may not work offline
  • Train cashiers — they should know POS works offline and orders sync later
  • Monitor sync queue — check for stuck orders periodically

Force Sync

# If orders are stuck in the sync queue:
# POS → click sync icon (cloud with arrows)
# Or: close and reopen the POS session
# Or: refresh the browser (F5)

# If still stuck, check browser console (F12):
# Look for sync errors in the Console tab
# Common: "RPC error", "connection refused", "invalid product"

Offline Payment Terminals

# Card payment terminals have their own offline capabilities:
# - Stripe Terminal: stores transactions, syncs later
# - Adyen: offline mode with limits
# - SumUp: processes offline with stored keys

# If terminal is offline:
# - Accept cash payment instead
# - Or: write down card details for manual processing (PCI risk!)
# Best: ensure terminal has its own internet connection (4G backup)

DeployMonkey + POS

DeployMonkey monitors POS connectivity and sync health. The AI agent alerts when sync queues build up, diagnoses sync failures, and ensures your sales data reaches the server reliably.