Skip to main content
Intercompany Transactions & Reconciliation — A build-to-order Odoo module that auto-mirrors sales, purchases and invoices bet — 1/1Illustrative preview

A build-to-order Odoo module that auto-mirrors sales,

purchases and invoices between your legal entities and reconciles their intercompany balances.

ECOSIRE builds, installs and supports it for your Odoo 17, 18 or 19 environment.

What is Intercompany Transactions & Reconciliation?

A build-to-order Odoo module that auto-mirrors sales, purchases and invoices between your legal entities and reconciles their intercompany balances. ECOSIRE builds, installs and supports it for your Odoo 17, 18 or 19 environment. 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

Configurable company-pairing model: per ordered `res.company` pair, define partner mapping, mirror document type, target journals, tax mapping and pricelist
Auto-mirrored sales orders, purchase orders, customer invoices and vendor bills between paired companies on document validation
Intercompany journal synchronization: mirrored `account.move` lines created with the correct journals, accounts and posting state
Stored origin references on every mirrored record to guarantee traceability and prevent duplicate generation on re-validation
Balance reconciliation report per company pair (QWeb + on-screen pivot/list) that flags amount, timing and unmatched-document variances
Elimination-ready line tagging so intercompany moves can be cleanly stripped during consolidation or group reporting
Automated actions (or overridden `action_confirm`/`action_post`) drive the mirroring so no user has to re-key the counterpart
Multi-currency and tax mapping handled via `@api.depends` computed fields derived from the source document, not manual entry
Company-scoped security via `ir.model.access.csv` plus record rules, with a controlled cross-company context for the sync engine only
XML-RPC/JSON-RPC API surface to read pairings, trigger reconciliation runs and export variance reports to external consolidation tools
Draft-vs-posted timing guard so a document validated on one side surfaces as an actionable exception until its mirror is posted
Idempotent sync logic that safely no-ops on re-runs and logs skipped or failed pairs for audit
Compatible with and extends Odoo Enterprise inter-company rules where present, rather than conflicting with them
Built and tested against Odoo 17.0, 18.0 or 19.0 to match your production environment

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

Multi-entity groups lose hours every month keying the same transaction twice: Company A raises a sales order to Company B, then someone in B has to re-enter it as a purchase, match the invoice to the vendor bill, and hope the two ledgers agree at close. When they don't — a mismatched tax, a posted-vs-draft timing gap, a manually typed amount — the intercompany balance breaks, and finance spends the last days of the period chasing which side is wrong. Odoo Community has no intercompany automation at all, and while Odoo Enterprise ships an inter-company rules feature that mirrors sales/purchase orders, it stops short of full journal-level synchronization, elimination tagging, and a real reconciliation report that tells you at a glance whether A-owes-B equals B-owes-A. That last mile is exactly where finance teams still bleed time.

ECOSIRE builds a purpose-fit module that closes that gap for your specific company structure. At its core is a set of new ORM models (models.Model) that record configurable company pairings — for each ordered pair of res.company records you define the partner mapping, the mirror document type, the target journals, tax mapping, and pricelist. When a source document is validated, an automated action (or an overridden action_confirm/action_post) generates the mirrored counterpart in the other company: a sales order becomes a purchase order, a customer invoice becomes a vendor bill, and the corresponding account.move lines are created with @api.depends-driven computed fields so amounts, taxes and currency are derived from the source rather than retyped. Every mirrored record carries a stored reference back to its origin so the pair is always traceable and never double-generated on re-validation.

On top of the mirroring, we build the reconciliation layer your close actually needs: a balance reconciliation report (rendered as a QWeb report and an on-screen list/pivot view built in XML/OWL) that pulls the posted intercompany receivables and payables per company pair and flags any variance — unmatched documents, amounts that differ, or entries stuck in draft on one side. Line-level tagging marks intercompany moves as elimination-ready so your consolidation or group reporting can strip them cleanly. Access is governed by ir.model.access.csv plus record rules that keep each company's users scoped to their own data while letting the sync engine cross the boundary under a controlled context. Everything is exposed over the standard XML-RPC/JSON-RPC API, so an external consolidation tool or a parent-company script can read pairings, trigger a reconciliation run, or pull the variance report programmatically.

Because this is a build-to-order engagement, nothing is a blind download. We start with a short scoping call to map your entity structure, the document flows you want mirrored, your tax and multi-currency rules, and your chart-of-accounts alignment. We then build against your Odoo major version (17.0, 18.0 or 19.0), respecting Community vs Enterprise differences — if you already run Enterprise inter-company rules we extend and reconcile with them rather than fight them. You get the work validated on a staging copy of your database (UAT) before anything touches production, with a rollback plan. Typical delivery is one working week from confirmed scope, and you receive the full installable source, documentation, and a post-go-live support window.

What you get

  • Installable Odoo module source code targeted to your exact Odoo major version (17.0, 18.0 or 19.0)
  • Installation and configuration on your environment, including company-pairing and journal/tax mapping setup
  • Technical documentation: data model, `automated action` logic, security rules and API endpoints
  • User guide plus a live training session for your finance and accounting team
  • UAT on a staging copy of your database with a documented rollback plan before production go-live
  • Post-go-live support window for defect fixes and configuration adjustments
  • Git repository handover with full commit history and tagged release
  • Reconciliation report templates (QWeb) configured to your company-pair structure

Who this is for

Group Financial Controller

Owns the month-end close across several legal entities and needs intercompany balances to agree without a manual chase. Wants a variance report that proves A-owes-B equals B-owes-A before the books lock.

Multi-Entity Accounting Manager

Runs day-to-day AP/AR for a group that trades internally every week. Needs sales, purchases and invoices mirrored automatically so no one re-keys the same document twice or mismatches tax and currency.

Group CFO / Consolidation Lead

Reports consolidated numbers to the board and must eliminate intercompany activity cleanly. Wants every internal transaction tagged elimination-ready and pullable via API into the consolidation process.

Odoo / ERP Systems Owner

Responsible for the Odoo platform across companies and wary of brittle customizations. Needs a version-matched, documented module with proper record-rule security that coexists with existing Enterprise inter-company rules.

How Intercompany Transactions & Reconciliation Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Intercompany mirroringAuto-mirrors SO/PO/invoices on validation, scoped to your pairsPossible but you design and maintain the mirror logic yourselfOften mirrors orders only, with fixed assumptionsCommunity: none. Enterprise: order-level mirroring only
Journal synchronizationFull `account.move` sync with correct journals and posting stateBuild and test the journal logic from scratchPartial or absent; rarely journal-completeNot provided beyond the order/invoice mirror
Balance reconciliation reportPer-pair QWeb + pivot report that flags every varianceReport must be specified and built by youUsually a basic list, no variance flaggingNo dedicated intercompany reconciliation view
Elimination taggingIntercompany lines tagged elimination-ready for consolidationYou add and maintain the tagging schemeRarely includedNot available
Company pairing configConfigurable per ordered pair: partners, journals, tax, pricelistWhatever config you choose to buildFixed or limited configuration optionsEnterprise rules are basic and per-company
Version & environment fitBuilt and tested against your exact 17.0/18.0/19.0Depends entirely on your team's coverageGeneric; may lag your major versionShips with your edition as-is
API accessXML-RPC/JSON-RPC to read pairings and trigger reconciliationYou expose whatever endpoints you buildLimited to the module's own screensStandard Odoo API, but no intercompany endpoints
Delivery & supportBuild-to-order, UAT on staging, support window, git handoverYour team owns build, testing and supportDownload plus vendor ticket supportSelf-serve configuration, no build service

Frequently Asked Questions about Intercompany Transactions & Reconciliation

How long does delivery take?

This is a build-to-order module, so it is built for your specific entity structure rather than downloaded off the shelf. Typical delivery is one working week from confirmed scope. After the initial scoping call we lock the company pairings, document flows and tax/currency rules, then build, run UAT on staging, and go live.

How is this different from Odoo Enterprise inter-company rules?

Enterprise ships inter-company rules that mirror sales and purchase orders, which is a good foundation but stops short of full journal-level synchronization, elimination-ready tagging, and a real per-pair balance reconciliation report. We build those missing layers and, where you already run Enterprise rules, extend and reconcile with them instead of conflicting. On Community, which has no intercompany automation at all, we provide the whole engine.

What about support and updates after go-live?

Every engagement includes a post-go-live support window for defect fixes and configuration adjustments, plus a git repository handover so the code is yours. Because it is version-matched to your Odoo (17.0, 18.0 or 19.0), we can quote a migration when you later upgrade your major version rather than leaving you stranded.

Will it work with our multi-currency and multi-tax setup?

Yes. Mirrored amounts, taxes and currency are derived from the source document via `@api.depends` computed fields, with an explicit tax mapping per company pair, so a bill in one company reflects the invoice in the other correctly instead of relying on retyped figures. We confirm your exact currency and tax rules during scoping.

Can external systems trigger or read the reconciliation?

Yes. The module exposes its pairings, reconciliation runs and variance reports over Odoo's standard XML-RPC/JSON-RPC API, so a parent-company script or a dedicated consolidation tool can pull elimination-ready data or kick off a reconciliation run programmatically.

How do you protect our production data during the build?

Nothing is developed directly on production. We build against your Odoo major version, validate on a staging copy of your database (UAT), and only deploy to production once you sign off — with a documented rollback plan in place.

How is access controlled between companies?

Access is governed by `ir.model.access.csv` plus record rules that keep each company's users scoped to their own records. Only the sync engine crosses the company boundary, and it does so under a controlled context, so mirroring works without exposing one company's data to another's users.

Request a quote

Intercompany Transactions & Reconciliation

A build-to-order Odoo module that auto-mirrors sales, purchases and invoices between your legal entities and reconciles their intercompany balances. ECOSIRE builds, installs and supports it for your Odoo 17, 18 or 19 environment.

  • Configurable company-pairing model: per ordered `res.company` pair, define partner mapping, mirror document type, target journals, tax mapping and pricelist
  • Auto-mirrored sales orders, purchase orders, customer invoices and vendor bills between paired companies on document validation
  • Intercompany journal synchronization: mirrored `account.move` lines created with the correct journals, accounts and posting state
  • Stored origin references on every mirrored record to guarantee traceability and prevent duplicate generation on re-validation

Request a Quotation

Tell us about your Intercompany Transactions & Reconciliation 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.