- Home
- Apps
- SaaS Tools
- POS Analytic Config
Illustrative previewA build-to-order Odoo module that forces every POS order to post against the analytic account defined on its POS
configuration, so shop, till, and channel-level analytic reporting reconciles automatically.
ECOSIRE scopes, builds, installs, and supports it for your database.
What is POS Analytic Config?
A build-to-order Odoo module that forces every POS order to post against the analytic account defined on its POS configuration, so shop, till, and channel-level analytic reporting reconciles automatically. ECOSIRE scopes, builds, installs, and supports it for your database. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Finance teams that run multiple points of sale in Odoo hit the same wall the moment they try to report profitability per shop, per till, or per sales channel. Out of the box, POS order lines and their journal entries inherit analytic distribution from the product or the income account default — not from the POS terminal that actually rang the sale. That means a downtown shop and an airport kiosk selling the same SKU land on the same analytic account, and your account.analytic.line records can no longer tell you which location earned the margin. The usual workaround — manual analytic re-tagging after each session close, or per-product analytic rules that ignore where the sale happened — is slow, error-prone, and collapses under real transaction volume.
POS Analytic Config closes that gap by making the analytic account a first-class property of the POS configuration itself. We extend pos.config (and, where your version requires it, pos.session) with an analytic account / analytic distribution field, then hook the order-to-accounting bridge so that when a session is posted, every generated account.move.line and the resulting account.analytic.line carry the analytic account defined on the originating terminal. The implementation is a clean inheriting module: a small models.Model extension with the new analytic_account_id (or analytic_distribution) field, a compute/@api.depends override or a targeted super-call on the POS accounting-entry preparation method (_prepare_line, _create_account_move / _prepare_invoice_line, depending on 17.0/18.0/19.0), plus XML views that surface the field on the POS configuration form under Accounting. Security is wired through ir.model.access.csv and, where multi-company isolation matters, record rules so a company only sees and sets its own terminals' analytic accounts. Nothing in the payment or receipt flow is touched — the cashier experience is unchanged; the intelligence lives entirely in the backend posting logic.
Because this is version-sensitive core-accounting territory, we build against your exact Odoo edition and release. The analytic model changed materially across recent versions (single analytic_account_id gave way to JSON analytic_distribution on move lines), and Community vs Enterprise differ in how POS sessions post to accounting, so we pin the __manifest__.py dependencies and the override strategy to what your database actually runs (17.0, 18.0, or 19.0). We validate the posting on staging with real session data, confirm the analytic lines reconcile against your existing analytic plans, and hand over automated tests where the accounting hooks warrant them. Optional extensions we frequently scope in the same engagement include fallback logic (config account first, then product default), analytic distribution splits across plans, and exposing the terminal's analytic account through the XML-RPC/JSON-RPC API for downstream BI.
This is a made-to-order engagement, not an off-the-shelf download. After a short scoping call we confirm your version, edition, chart-of-analytic setup, and any multi-company rules, then quote a fixed price and build it. Typical delivery is one working week from confirmed scope, and you receive the installable source, documentation, UAT on staging, and a post-go-live support window. Pricing starts from $999 (indicative, single-company base scope); multi-company analytic isolation, analytic distribution splits across multiple plans, and migration of historical POS entries to the new analytic mapping increase the quoted scope.
What you get
- Installable source code for the module built against your exact Odoo version and edition
- Installation and configuration on your staging environment, then production
- Technical documentation (models, fields, override points, dependency notes)
- End-user / admin guide plus a live training session for finance and POS admins
- UAT on staging with real session data, plus a documented rollback plan
- Post-go-live support window for defect fixes and configuration questions
- Git repository handover with full commit history and tagged release
- Automated tests covering the analytic posting hooks where applicable
Who this is for
Multi-location retail finance controller
Runs several shops or kiosks on Odoo POS and needs profitability and cost reporting per location. Requires every POS journal entry to land on the right analytic account automatically instead of being re-tagged by hand after each session.
Odoo ERP administrator / functional consultant
Owns the internal Odoo instance and wants a clean, upgrade-safe inheriting module rather than patched core files. Needs it pinned to their release, documented, and handed over as a git repo they can maintain.
Franchise / multi-company operations manager
Manages POS terminals across legal entities and needs analytic isolation so each company's terminals map only to its own analytic accounts, with record rules enforcing the boundary.
BI / analytics lead
Consumes analytic lines in dashboards and reporting tools and needs POS revenue and cost reliably attributed to the terminal that generated it, accessible via the ORM and JSON-RPC/XML-RPC API.
How POS Analytic Config Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Analytic source | POS config account applied automatically at posting | Whatever you build; design burden on you | Fixed behavior, may map by product not terminal | Inherited from product/income default, not terminal |
| Version fit | Built and pinned to your 17/18/19 + edition | Depends on your team's version knowledge | Generic build; version handling varies | N/A — no per-terminal analytic concept |
| Multi-company isolation | Record rules scoped in the quote | You implement and test the rules | Rarely included out of the box | No terminal-level analytic to isolate |
| Upgrade safety | Clean inheriting module, no core edits | Quality depends on developer discipline | Varies; may override broadly | Not applicable |
| Support model | Post-go-live window + git handover | In-house only | Vendor ticket queue, no source ownership | Community forums / your own admins |
| Testing | UAT on staging + automated hook tests | Whatever you schedule | Depends on vendor QA | None for this behavior |
| Fit to your data | Scoped to your analytic plans and flows | Fully bespoke if you have the time | One-size-fits-all assumptions | Generic defaults only |
| Time to value | one working week, fixed quote after scoping | Unbounded — hiring/dev cycle | Instant install but integration risk | Immediate but does not solve the problem |
Frequently Asked Questions about POS Analytic Config
Is this an existing app I can download and install today?
No. This is a build-to-order module. ECOSIRE builds it against your exact Odoo version and edition, installs it, and supports it. You are commissioning a productized development engagement, not buying an instant download.
How long does delivery take?
Typical delivery is one working week from confirmed scope. After the scoping call we agree on version, edition, and any multi-company or fallback requirements, then build, test on staging, and deploy. Complex multi-plan analytic distribution or historical data migration can extend the timeline, which we state up front in the quote.
How does pricing and scoping work?
Pricing starts from $999 as an indicative, single-company base-scope figure. It is not a fixed price — after a short scoping call we confirm requirements and send a fixed quote. Drivers such as multi-company analytic isolation, distribution splits across multiple analytic plans, and migrating historical POS entries increase the quoted scope.
Which Odoo versions and editions do you support?
We support Odoo 17.0, 18.0, and 19.0, in both Community and Enterprise. This matters here because the analytic model changed across versions (single `analytic_account_id` versus JSON `analytic_distribution`) and POS-to-accounting posting differs between editions, so we pin the implementation to what your database actually runs.
What about support and future updates?
Every engagement includes a post-go-live support window for defect fixes and configuration help. Because you receive the full git repository and source, your own team can maintain it. Version upgrades (for example moving the module to a newer Odoo release) can be quoted separately as a maintenance engagement.
Will this change the cashier or checkout experience?
No. The module operates entirely in the backend accounting-posting logic. Payments, receipts, and session close behave exactly as before — the only difference is that posted journal and analytic lines now carry the analytic account defined on the POS configuration.
Does it work for both invoiced and non-invoiced POS orders?
Yes. We hook the session-close journal entries for non-invoiced orders and the per-order invoice lines for invoiced orders, so the terminal's analytic account is applied consistently across both paths. We confirm both flows during UAT on staging.
Related Modules

POS AI Upsell & Recommendations
A build-to-order Odoo POS extension that surfaces AI-driven add-on, combo, and frequently-bought-together suggestions at the cashier and self-service kiosk, tuned by time of day and cart contents to grow basket size. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0.

POS All in One Report Generator
A made-to-order Odoo Point of Sale reporting engine that turns raw session, order line, and payment data into dynamic, filterable reports. ECOSIRE builds it to your exact KPIs, installs it, and supports it after you request a quotation.

POS Block Incognito
A build-to-order Odoo Point of Sale guard that detects and blocks private/incognito browsing sessions before the POS loads, protecting the offline order cache and local storage from silent data loss. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17/18/19 estate.

POS Card Terminal Payment Connector for Odoo
A build-to-order Odoo POS payment connector that pairs physical card terminals (Stripe Terminal, PAX, Ingenico) to your point of sale for tap, chip and contactless capture, with refunds, tips and cashback handled straight from the receipt. ECOSIRE builds, installs and supports it for Odoo 17, 18 and 19.
POS Analytic Config
A build-to-order Odoo module that forces every POS order to post against the analytic account defined on its POS configuration, so shop, till, and channel-level analytic reporting reconciles automatically. ECOSIRE scopes, builds, installs, and supports it for your database.
- Adds an `analytic_account_id` / `analytic_distribution` field to `pos.config` so each terminal owns its analytic mapping
- Overrides the POS session-to-accounting bridge so posted `account.move.line` records inherit the config's analytic account
- Propagates the analytic account onto generated `account.analytic.line` records for correct per-shop cost/revenue reporting
- Version-aware implementation: single `analytic_account_id` on 17.0 vs JSON `analytic_distribution` on 18.0/19.0 move lines