A build-to-order Odoo POS extension that keeps checkout running through internet outages with resilient local caching, a durable local order queue, and conflict-safe reconciliation on reconnect. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.

A build-to-order Odoo POS extension that keeps checkout running through internet outages with resilient local caching, a durable local order queue, and conflict-safe reconciliation on reconnect. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Retail and restaurant operators in areas with unreliable connectivity lose real money every time the link drops: cashiers stop, queues back up, and staff resort to paper or "come back later." Odoo's Point of Sale already keeps a session partly usable offline — the browser client caches the loaded product catalog and can ring up orders while the connection is down — but its guarantees end at the edges. Payment terminals that need a live call, receipt printing tied to backend report rendering, tax or price rules that depend on a server round-trip, and multi-register stock all become fragile once the outage is more than momentary. When the connection returns, orders push back in a burst with no conflict handling, and a browser refresh or a closed tab during a long outage can silently strand unsynced tickets. Native Odoo runs out of road exactly where these stores need it most: sustained, real-world outages across several terminals.
Durable local order persistence in IndexedDB — in-flight `pos.order` state survives tab refresh, browser crash, or device reboot instead of living in volatile memory
Live connection-status indicator in the POS header (online / degraded / offline-queuing) driven by heartbeat pings, so cashiers always know the current mode
Local order queue that continues ringing up sales, discounts, and tax lines with the last-cached product, pricelist, and fiscal-position data during an outage
Deterministic queued-sync engine that replays offline orders in original creation order against the backend on reconnect
Idempotency keys stamped on every queued order to prevent duplicate `pos.order` creation when a retry or double-flush occurs
Conflict-safe stock reconciliation for `stock.move` / quantities changed by other registers while a terminal was offline, with exceptions surfaced rather than silently overwritten
POS Offline Mode Pro is a build-to-order module ECOSIRE designs, builds, installs, and supports on top of your existing Odoo POS. Technically, it hardens the offline path on both sides of the wire. On the client, it extends the OWL/JS POS frontend to persist every in-flight order to durable local storage (IndexedDB) rather than volatile memory, so a refresh, crash, or shift change never loses a ticket, and it surfaces a live connection-status indicator so cashiers always know whether they are online, degraded, or queuing locally. Offline receipts print from a locally cached QWeb template, and offline payment lines (cash and terminal-logged) are recorded with the metadata needed to reconcile later. On reconnect, a queued-sync engine replays orders in deterministic order against the backend pos.order models, and a reconciliation layer we build into new models.Model classes handles the hard cases — duplicate submission (idempotency keys on each queued order), sequence collisions, and stock movements that other registers changed while you were offline — instead of letting them fail silently.
Under the hood we ship real Odoo server-side code, not just a browser hack. The module declares its dependencies and assets bundles in __manifest__.py, adds new models with fields, compute methods and @api.depends where sync state and reconciliation status need to be tracked and reported, and locks every new model and menu down with ir.model.access.csv plus record rules so offline queue data respects the same POS-manager permissions as the rest of the system. Sync status and exception queues get their own backend list/form views (XML) and, where useful, an OWL widget in the POS UI; reconciliation exceptions can trigger automated actions (base.automation) to alert a manager. The re-sync transport uses Odoo's standard JSON-RPC/XML-RPC calls the POS client already speaks, so nothing bypasses your access rules or audit trail. We build against your edition — the offline-payment behavior differs between Community and the Enterprise IoT/terminal integrations, and we scope that explicitly during discovery — and target Odoo 17.0, 18.0, or 19.0 to match your deployment.
Because this is build-to-order, you are not downloading a pre-canned app and hoping it fits. After a short scoping call we confirm your Odoo version and edition, register topology, payment methods, and what "acceptable" offline behavior means for your business (e.g. offline card handling, receipt legal requirements, stock policy). We build the module to that scope, validate it on a staging copy of your database through UAT, and deploy with a documented rollback. Typical delivery is 2–4 weeks from confirmed scope, and you receive the full installable source and git repository so the work is yours to keep. ECOSIRE then supports it through a post-go-live window and remains available for version upgrades as you move across Odoo releases.
Runs several POS terminals where the ISP or mobile link drops daily. Cannot afford queues stalling at checkout, and needs sales, receipts, and stock to stay coherent across registers when one or all of them go offline.
High-throughput counters where a 10-minute outage means lost covers and angry lines. Needs uninterrupted order-taking, offline receipt printing, and clean reconciliation once the kitchen and till reconnect, without duplicate tickets.
Owns the Odoo deployment and must trust the offline path. Wants real server-side code with proper `ir.model.access.csv` rules, an auditable sync queue, staging UAT, a rollback plan, and the git repo in-house — not a black-box browser hack.
Accountable for revenue integrity and daily closing. Needs assurance that offline cash and payment lines reconcile correctly into journals, that no order is lost or double-counted, and that reconciliation exceptions are visible and actionable.
Buy the license on ecosire.com and download the POS Offline Mode Pro module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for POS Offline Mode Pro, and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Offline durability | Orders persisted to IndexedDB — survive refresh, crash, reboot | Depends on your team's implementation and testing depth | Often relies on Odoo's default in-memory cache | |
| Reconnect sync | Deterministic queued replay with idempotency keys | Must be designed and hardened from scratch | Basic re-push, usually no duplicate protection | |
| Stock / order conflict handling | Server-side reconciliation layer with a manager exception queue | Possible but expensive to get right | Rarely addressed | |
| Offline payments & receipts | Logged payment lines + cached QWeb receipt printing | Build-your-own; easy to miss journal edge cases | Partial or receipt-only | |
| Security model | `ir.model.access.csv` + record rules matching POS-manager roles | Only as strong as the developer applies | Varies; sometimes over-permissive | |
| Version & edition fit | Built to your Odoo 17/18/19 and Community vs Enterprise edition | Tied to whoever wrote it | One build; may lag Odoo releases | |
| Delivery & validation | Scoped build, staging UAT, documented rollback (2–4 weeks) | Timeline and QA depend on internal capacity | Instant install, self-tested by you | |
| Ownership & support | Full source + git repo handover + post-go-live support window | You own it but also own all maintenance | Vendor-locked; support varies by author |
Partly. Native Odoo caches the loaded catalog and lets the browser client ring up orders during a brief drop, but its guarantees break down on sustained outages, offline payments, receipt rendering, and multi-register conflicts. When the link returns, native pushes orders back with no idempotency or reconciliation, and a refresh during a long outage can strand unsynced tickets. POS Offline Mode Pro hardens exactly those edges with durable local storage, idempotent queued sync, and conflict-safe reconciliation.
This is a build-to-order module, not an instant download. After a short scoping call to confirm your Odoo version, edition, register topology, and payment methods, typical delivery is 2–4 weeks from confirmed scope. That window includes the build, UAT on a staging copy of your database, and a documented rollback before go-live.
We build against Odoo 17.0, 18.0, and 19.0. Offline-payment behavior differs between Community and Enterprise (the Enterprise IoT box and integrated terminals change what can happen offline), so we scope your edition explicitly during discovery and build the module to match.
We cannot make a payment processor authorize a card without a network — no software can. What the module does is let cashiers continue the sale, record the payment line and method, print a receipt, and flag the payment for reconciliation when connectivity returns. During scoping we map your exact payment methods (cash, integrated terminal, external terminal) and define the correct, honest offline behavior for each.
Every offline order is persisted to IndexedDB (surviving refresh or crash) and stamped with an idempotency key. The queued-sync engine replays orders in their original order, and the backend rejects duplicate submissions by key. Stock and sequence conflicts caused by other registers are reconciled by a dedicated server-side layer that surfaces true exceptions to a manager queue instead of silently overwriting data.
Yes. You receive the full installable module source and the git repository with commit history — the code is yours to keep and extend. ECOSIRE provides a post-go-live support window for defect fixes and configuration adjustments, and remains available for paid version upgrades as you move across Odoo 17/18/19 releases.
Yes. New models and menus are locked down with `ir.model.access.csv` and record rules so queue and reconciliation data follow the same POS-manager permissions as the rest of your system. Re-sync uses Odoo's standard JSON-RPC/XML-RPC path the POS client already speaks, so nothing bypasses your access rules or audit logging.
A build-to-order Odoo POS extension that keeps checkout running through internet outages with resilient local caching, a durable local order queue, and conflict-safe reconciliation on reconnect. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0.