Skip to main content
POS Analytic Account — A build-to-order Odoo module that propagates analytic accounts and cost centers onto POS orders and th — 1/1Illustrative preview

A build-to-order Odoo module that propagates analytic accounts and cost centers onto POS orders and their

generated journal entries, so point-of-sale revenue and costs land in the right analytic buckets automatically. Scoped, built, installed, and supported by ECOSIRE.

What is POS Analytic Account?

A build-to-order Odoo module that propagates analytic accounts and cost centers onto POS orders and their generated journal entries, so point-of-sale revenue and costs land in the right analytic buckets automatically. Scoped, built, installed, and supported by ECOSIRE. 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

Adds analytic_account_id (and optional Odoo 17+ analytic_distribution JSON) to pos.config, pos.order, and pos.order.line
Cascading defaults: cost center set on the POS config flows to orders, overridable per order and per line
Overrides pos.session close move generation so every generated account.move.line carries the resolved analytic distribution
Populates account.analytic.line automatically at session close — no manual month-end re-tagging
Centralized analytic resolution via a compute/helper method with @api.depends so edits and splits stay correct
Refunds and returns propagate the original line's analytic account so credits net cleanly against revenue
Optional POS front-end (OWL) selector so cashiers or supervisors assign a cost center at the register
Backend pos.order form and list views extended (XML) to show and filter by analytic account
Analytic dimension surfaced on relevant QWeb accounting/session reports
Multi-company aware with ir.model.access.csv and record rules scoping analytic accounts per company
Handles Community (single analytic account) vs Enterprise (analytic plans/distribution) behavior differences
Analytic fields readable and writable over XML-RPC/JSON-RPC for external BI and consolidation tools
Optional automated action / server logic to enforce a mandatory cost center before a session can close
Version-specific builds for Odoo 17.0, 18.0, and 19.0 matching each release's POS accounting hooks

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 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 a busy point of sale hit the same wall every close: POS sessions post thousands of order lines to the accounting journals, but Odoo core has no clean way to stamp an analytic account or cost center onto those postings. Out of the box, pos.order and pos.order.line carry no analytic dimension, and the session-close journal entries that Odoo generates from pos.session inherit whatever the income/expense accounts default to — which is usually nothing analytic at all. The result is that shop-floor, branch, department, or campaign profitability has to be rebuilt by hand in spreadsheets, and your account.analytic.line reporting has a blind spot exactly where a large share of transaction volume flows.

We build a module that closes that gap end to end. On the data side we extend pos.config, pos.order, and pos.order.line with analytic fields (typically an analytic_account_id Many2one to account.analytic.account, and for Odoo 17+ optional support for the analytic_distribution JSON widget so a single line can split across multiple plans/cost centers). Defaults cascade the way a controller expects: a cost center configured on the POS config or the salesperson/point-of-sale flows down to the order, and can be overridden per order or per line. The heavy lifting happens where the accounting is actually created — we override the session-close move generation (_create_account_move / the _prepare_...move_line helpers on pos.session, exact hook names vary by 17.0/18.0/19.0) so that every generated account.move.line carries the resolved analytic distribution. Because Odoo posts the analytic entries from the move lines, your account.analytic.line records and Analytic Accounting reports populate automatically, with no manual re-tagging at month end.

The module is engineered to survive your real environment, not a demo. Analytic resolution is centralized in a compute/helper method with @api.depends so it stays correct when orders are edited, refunded, or split; refunds and returns propagate the same analytic account as the original line so credits net cleanly. We respect Community vs Enterprise differences (Enterprise's analytic plans/distribution UX vs Community's simpler analytic account model) and gate the behavior accordingly. Access is governed through ir.model.access.csv plus record rules where multi-company scoping matters, new fields are surfaced in the backend pos.order form and list views (XML/OWL) and on the relevant QWeb accounting reports, and — where you need it — we can push the selector into the POS front-end screen itself so cashiers or supervisors pick a cost center at the register. Everything is exposed over the standard XML-RPC/JSON-RPC API so external BI or consolidation tools can read the analytic dimension programmatically.

Delivery is build-to-order: you request a quotation, we run a short scoping call to pin down your Odoo version, edition, chart-of-accounts and analytic-plan structure, and whether you need front-end capture or back-office only. We then build against a staging copy of your database, run UAT with you, and deploy with a rollback plan. Typical delivery is one working week from confirmed scope. This is not an existing download you install yourself — it is a made-to-order module we develop, install, and support for your specific configuration.

Pricing starts from $999 (indicative, single-company base scope); multi-company deployments, front-end POS capture, multi-plan analytic_distribution splits, and historical data migration of past POS sessions increase the quoted scope. You receive a fixed quote after the scoping call.

What you get

  • Installable module source code for your Odoo major version (17.0, 18.0, or 19.0), with a clean __manifest__.py and dependency list
  • Installation and configuration on your environment, including analytic plan and cost-center mapping to your chart of accounts
  • Technical documentation covering the data model, session-close override hooks, and security rules
  • End-user guide plus a live training session for finance and POS supervisor roles
  • Post-go-live support window for defect fixes and configuration adjustments
  • UAT on a staging copy of your database with a documented rollback plan
  • Git repository handover with full commit history and tagged release
  • Verification report confirming analytic lines post correctly across sales, refunds, and multi-session closes

Who this is for

Multi-branch retail finance controller

Runs several POS locations on one Odoo database and needs per-branch and per-department profitability without exporting session data to spreadsheets. Wants cost centers stamped on every POS journal entry so analytic reports are trustworthy at close.

Odoo functional consultant / partner

Implementing Odoo POS for a client whose analytic accounting requirements exceed core. Needs a maintainable, version-matched module with clean hooks and a git handover rather than a brittle in-house patch.

Hospitality or franchise operations lead

Operates outlets as cost centers and reports margin per site and per campaign. Needs cashiers or supervisors to capture the right analytic dimension at the register and have it flow straight into accounting.

Group finance / consolidation manager

Consolidates multiple companies and wants POS revenue and cost tagged with analytic accounts that external BI tools can read over the API, so point-of-sale volume stops being a reporting blind spot.

How POS Analytic Account Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Analytic accounts on POS journal entriesBuilt into the session-close move generation; every line taggedAchievable but you design and maintain the hooks yourselfOften tags orders but may miss session-close move linesNo analytic dimension on POS orders or their moves
Odoo version fit (17/18/19)Version-specific build matched to that release's POS hooksDepends on your developer's familiarity with each releaseDepends on when the listing was last updatedCore behavior only; no analytic capture
Front-end (register) cost-center captureOptional OWL selector added to scope on requestPossible with extra in-house POS front-end workRarely included; usually back-office onlyNot available
Refund and return handlingOriginal line's analytic account propagated so credits netMust be designed and tested by your teamVaries; may leave refunds untaggedNo analytic dimension to propagate
Multi-company and access controlir.model.access.csv plus record rules scoped to your setupYour responsibility to implement and testGeneric rules, not tuned to your company structureStandard access only; no POS analytic model
Fit to your chart of accounts and analytic plansConfigured to your accounts during installFully custom but at full custom cost and timelineGeneric; you adapt your data to the moduleNot applicable
Ownership and maintainabilityFull git repo handover with commit history and tagsYou own it, but you also build it from zeroVendor-controlled; source may be obfuscatedNo module to own
Support and delivery modelScoped build, UAT on staging, rollback plan, support windowOnly what your internal team provisionsTicket-based; no scoping to your environmentCommunity/self-support only

Frequently Asked Questions about POS Analytic Account

Is this an existing app I can download and install today?

No. This is a build-to-order module. After you request a quotation we scope your requirements, then build, install, and support the module for your specific Odoo version and configuration. It is not an off-the-shelf apps.odoo.com download.

How long does delivery take?

Typical delivery is one working week from confirmed scope. The timeline depends on your Odoo edition, whether you need front-end POS capture, multi-company scoping, and any historical data migration. We give you a firm schedule with the fixed quote after the scoping call.

How does pricing and scoping work?

Pricing starts from $999 (indicative, single-company base scope). We hold a short scoping call to confirm your Odoo version, edition, chart of accounts, and analytic-plan structure, then issue a fixed quote. Multi-company, front-end capture, multi-plan analytic_distribution splits, and data migration increase the quoted scope.

Which Odoo versions and editions do you support?

We build version-specific releases for Odoo 17.0, 18.0, and 19.0, and we handle both Community and Enterprise. Enterprise's analytic plans and analytic_distribution UX and Community's single analytic account model are supported with edition-appropriate behavior — we confirm which applies to you during scoping.

What about support and updates after go-live?

Every engagement includes a post-go-live support window for defect fixes and configuration adjustments. Because you receive the full git repository, your team can maintain it too. We can quote a separate maintenance or version-upgrade agreement (for example, when you migrate to a newer Odoo release) after the window ends.

Will analytic accounts be applied to refunds and past sessions?

Refunds and returns propagate the original line's analytic account by design, so credits net cleanly. Applying analytic accounts to historical POS sessions is a data-migration task — we can include it in scope, and its volume is one of the drivers that affects the final quote.

Can cashiers pick the cost center at the register, or is it back-office only?

Both are possible. Base scope resolves the analytic account from defaults on the POS config and order. If you need cashiers or supervisors to choose a cost center on the POS screen itself, we add an OWL front-end selector — this is an optional scope item confirmed on the scoping call.

Request a quote

POS Analytic Account

A build-to-order Odoo module that propagates analytic accounts and cost centers onto POS orders and their generated journal entries, so point-of-sale revenue and costs land in the right analytic buckets automatically. Scoped, built, installed, and supported by ECOSIRE.

  • Adds analytic_account_id (and optional Odoo 17+ analytic_distribution JSON) to pos.config, pos.order, and pos.order.line
  • Cascading defaults: cost center set on the POS config flows to orders, overridable per order and per line
  • Overrides pos.session close move generation so every generated account.move.line carries the resolved analytic distribution
  • Populates account.analytic.line automatically at session close — no manual month-end re-tagging

Request a Quotation

Tell us about your POS Analytic Account requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.