POS Offline Sync Errors
The Odoo POS can operate offline, but syncing orders back to the server can fail:
Issues:
- "Failed to sync orders" notification after reconnecting
- Orders completed offline but not appearing in backend
- POS shows "X orders pending sync" permanently
- Sync error: "Record does not exist" or "Concurrent update"
- Payment data lost during syncFix 1: Force Manual Sync
# Step 1: Check pending orders
# In the POS interface, look for sync indicator
# Usually in the top-right corner — a cloud icon with pending count
# Step 2: Force sync
# Click the sync indicator/icon
# Or close and reopen the POS session
# The POS will attempt to sync on session resume
# Step 3: If force sync fails
# Check internet connectivity
# Verify the Odoo server is reachable
# Try refreshing the POS page (F5)Fix 2: Check Network Connectivity
# The POS syncs via HTTP/HTTPS to the Odoo server
# Any network issue blocks sync
# Verify connectivity from the POS terminal:
# Open a new tab > navigate to your Odoo URL
# If Odoo loads, network is fine
# Check for:
# - WiFi disconnection
# - Firewall blocking POS requests
# - Proxy server issues
# - DNS resolution failures
# - SSL certificate expiry (HTTPS required)
# If using a local network:
# POS can sync to a local Odoo instance without internet
# But ensure the local server is accessibleFix 3: Recover Stuck Orders
# Orders are stored in the browser's IndexedDB/localStorage
# Check browser storage:
# Developer Tools (F12) > Application tab > IndexedDB
# Look for the POS database
# The orders are in JSON format and can be extracted manually
# if the POS interface won't sync them
# Export stuck orders (via browser console):
// In Chrome DevTools console:
let db = await indexedDB.open('odoo_pos');
// Navigate the database to find pending orders
# If orders are in localStorage:
// Check for pos-related keys
Object.keys(localStorage).filter(k => k.includes('pos'));
# As a last resort, manually create the orders in the backend
# based on the receipt dataFix 4: Sync Error — Record Does Not Exist
# This happens when:
# - A product was deleted/archived after the POS loaded
# - A customer was merged or deleted
# - A payment method was removed
# The offline POS references records that no longer exist
# Fix:
# 1. Close the POS session
# 2. Restore the missing record (unarchive product/customer)
# 3. Reopen POS and sync
# 4. After sync completes, re-archive if needed
# Check Odoo server logs for the specific missing record:
# grep "does not exist" /var/log/odoo/odoo.log | tail -10Fix 5: Concurrent Update Errors
# Multiple POS terminals modifying the same session:
# Each POS terminal should have its own session
# Do not open the same POS session in multiple browser tabs
# Check for session conflicts:
# Point of Sale > Sessions > verify only one active session per POS
# If multiple sessions are active:
# Close extra sessions (validate and close)
# Keep only one active session per physical terminalFix 6: Large Order Queue
# If many orders accumulated offline:
# Sync may timeout trying to push all at once
# The POS syncs orders in batches
# If a batch fails, subsequent batches won't process
# Fix: Increase server timeout
# In odoo.conf:
limit_time_real = 600 # 10 minutes
limit_time_cpu = 300
# For Nginx proxy:
proxy_read_timeout 600;
proxy_connect_timeout 600;
proxy_send_timeout 600;Fix 7: Close Session with Pending Orders
# Odoo should prevent closing a session with unsynced orders
# But if you must:
# Option 1: Wait and retry sync
# Leave the session open until all orders sync
# Option 2: Force close (data may be in local storage)
# The orders remain in browser storage
# Reopen the POS session — it should attempt to sync again
# WARNING: Never clear browser data while orders are pending
# This will permanently lose the offline ordersPrevention
DeployMonkey's AI agent monitors POS sync status and network connectivity. The agent detects sync failures early and alerts operators before order queues grow large. Automatic backup of offline POS data prevents data loss.