- Home
- Apps
- SaaS Tools
- Merge Invoices
Illustrative previewA build-to-order Odoo module that consolidates multiple draft invoices or account moves for the same customer into one clean invoice.
ECOSIRE scopes, builds, installs, and supports it for your database.
What is Merge Invoices?
A build-to-order Odoo module that consolidates multiple draft invoices or account moves for the same customer into one clean invoice. 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 raise many small invoices for the same customer end up drowning in paperwork: ten deliveries in a month become ten account.move records, ten PDFs, ten payment references, and ten reconciliation lines. Customers ask for one consolidated invoice; your team ends up either credit-noting and re-keying by hand or exporting to a spreadsheet to bolt figures together. Odoo core has no supported way to fold several posted or draft invoices into a single document — the sale/subscription "invoicing policy" batches at generation time, not after the fact, and there is no button that says "combine these five into one." That gap is exactly where manual workarounds creep in and errors follow.
ECOSIRE builds Merge Invoices as a proper Odoo module for your database. At its core it adds a server action and wizard over account.move: select several draft (or, per your policy, cancellable-and-reissuable) customer invoices for the same partner, currency, and company, and generate one consolidated account.move whose lines are the union of the source invoice lines — preserving analytic distribution, taxes, product references, and the source document numbers as a traceable origin. The wizard validates that partners, currencies, fiscal positions, and companies match before it will merge, and it records a clean audit trail (ir.logging plus a message on the chatter of both the merged invoice and the sources) so an auditor can always walk from the single invoice back to what it replaced. Access is governed by ir.model.access.csv and record rules so only accounting users with the right group can run a merge, and multi-company record rules keep the action inside the operating company. We wire the whole thing with a __manifest__.py that depends only on account, ship OWL/XML views and a QWeb-ready consolidated layout, and keep the compute logic in tested @api.depends methods rather than fragile onchange hacks — so it upgrades cleanly across Odoo 17.0, 18.0, and 19.0 and works on both Community and Enterprise.
Because this is a productized service, not a shelf download, the behaviour is shaped to your reality during scoping: whether merges happen on drafts only or reverse-and-reissue posted moves, how source references are stamped on the consolidated lines, whether you group by partner-and-period or by a custom key, how down-payments and existing credit notes are handled, and whether the action is exposed in the list view, on the partner, or triggered by an automated action or the XML-RPC/JSON-RPC API for headless batch runs. You get code built for your version and your chart of accounts, not a generic binary you have to bend to fit.
Delivery is build-to-order. After a short scoping call we confirm exact scope in writing, then build on a staging copy of your database, run UAT with your team, and cut over with a rollback plan. Typical delivery is one working week from confirmed scope, depending on edge cases and how many localizations or integrations touch invoicing. Pricing starts from $999 (indicative, single-company base scope); multi-company consolidation, deep localization or e-invoicing hooks, and large historical data migration increase the quoted scope. You receive a fixed quote after the scoping call — never a surprise.
What you get
- Installable Odoo module source code for your target version(s), built for your database
- Installation and configuration on your staging then production environment
- Technical documentation (models, fields, security groups, merge rules, upgrade notes)
- End-user guide plus a live training session for your accounting team
- UAT on a staging copy of your database with an agreed test script and rollback plan
- Post-go-live support window for defect fixes and adjustments
- Git repository handover with tagged release and commit history
- Configuration record of the merge rules, group-by key, and security groups agreed at scoping
Who this is for
Accounting / AR Manager
Owns receivables and month-end close. Needs to send customers one consolidated invoice per period instead of dozens of small ones, without re-keying or breaking the audit trail back to source documents.
Odoo Functional Consultant / ERP Lead
Runs Odoo internally and fields the 'can we just combine these invoices?' request. Wants a supported, upgrade-safe module scoped to the company's chart of accounts and invoicing policy, not a spreadsheet workaround.
Finance Operations Lead in a high-volume B2B business
Handles many deliveries or subscriptions per customer per month. Needs batch consolidation by partner-and-period, ideally scheduled or triggered via API, with taxes and analytics preserved.
Odoo Partner / Systems Integrator
Delivering an Odoo project for an end client and needs a reliable invoice-merge capability built and warranted by a specialist, with clean code, tests, and a git handover to fold into the wider implementation.
How Merge Invoices Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Fit to your invoicing policy | Built to your exact merge rules and chart of accounts | Fully bespoke but you own all the design decisions | Fixed feature set; you adapt to its assumptions | No merge concept at all |
| Merge posted vs draft invoices | Configurable, incl. reverse-and-reissue flow if needed | Whatever you specify and build | Usually drafts only, take it or leave it | Not supported |
| Audit trail & traceability | Chatter + source refs + `ir.logging`, both directions | Only if you design and build it in | Varies; often minimal linkage | N/A |
| Security & multi-company scoping | Dedicated group via `ir.model.access.csv` + record rules | Your responsibility to implement | Generic groups, limited control | N/A |
| Odoo 17/18/19 & Community/Enterprise | Built and tested for your version, upgrade-safe | Depends on your team's discipline | Depends on vendor's version coverage | N/A |
| Support & warranty | Post-go-live window + git handover from a specialist | In-house only, no external warranty | Vendor support of variable quality | Community/Enterprise support, no feature |
| Time to live | one working week from confirmed scope | Weeks to months depending on capacity | Instant install but generic fit | Immediate but capability absent |
| Cost model | From $999 indicative, fixed quote after scoping | High; developer time + maintenance | Low licence, hidden adaptation cost | No extra cost, no capability |
Frequently Asked Questions about Merge Invoices
How long does delivery take?
This is a build-to-order module, so it is built after you request it. Typical delivery is one working week from confirmed scope. Simple single-company drafts-only merges land at the shorter end; multi-company, localization, or historical-data work extends it. We confirm the timeline in writing before we start.
How does pricing and scoping work?
Pricing starts from $999 as an indicative figure for a single-company base scope. After a short scoping call we assess your invoicing policy, company setup, and integrations, then send a fixed written quote. Multi-company consolidation, e-invoicing/localization hooks, and large data migration raise the quoted scope. You approve the fixed price before any build begins.
What about support and Odoo version updates?
Every build includes a post-go-live support window for defect fixes and adjustments. We build for your target Odoo version and can extend compatibility to 17.0, 18.0, or 19.0. Because the module keeps logic in tested compute methods and depends only on `account`, it upgrades cleanly; longer-term maintenance or version-upgrade retainers are available on request.
Will merging invoices break my audit trail or reconciliation?
No. The consolidated invoice records the source document references on its lines and in the chatter, and each source invoice logs a message pointing to the merged move, so an auditor can always trace both directions. Taxes and analytics are recomputed through Odoo's native engine so totals reconcile against the original set. We agree the exact posted-vs-draft handling during scoping to fit your compliance rules.
Can it merge already-posted invoices, or only drafts?
By default merging on drafts is the safest and cleanest path. If your process needs posted invoices consolidated, we implement a reverse-and-reissue flow (credit note plus new consolidated invoice) with a full audit trail, subject to your accounting and tax rules. We define this behaviour precisely at scoping so it matches your fiscal requirements.
Does it work with multi-company and multiple currencies?
The module validates that sources share the same partner, company, and currency before merging, and multi-company record rules keep the action scoped to the active company. Cross-company or multi-currency consolidation is possible but is additional scope we assess and quote after the scoping call.
Can it run automatically or via the API?
Yes. Beyond the manual wizard, we can expose the merge as an automated action (for example month-end batch consolidation by partner) and as an XML-RPC/JSON-RPC entry point so external systems can trigger merges headlessly. These options are confirmed and priced during scoping.
Related Modules

MCP Studio - AI-Assisted React App, Module & Chart Builder for Odoo
A build-to-order Odoo companion that connects AI agents to your database over Remote MCP so teams can scaffold modules, generate React app views, and assemble interactive EChart dashboards from natural-language intent. ECOSIRE designs, builds, installs and supports it after a scoping call — it is not an off-the-shelf download.

Members Club
A made-to-order Odoo module that manages your full membership lifecycle and club activities on one record — tiers, renewals, dues, events, and member access. ECOSIRE builds it to your rules, installs it, and supports it after you request a quotation.

Message Templates Everywhere
A build-to-order Odoo extension that lets your team fire pre-approved WhatsApp, Instagram, and Messenger messages straight from sales orders, invoices, and CRM records — with dynamic field merging and a full audit trail in the chatter. ECOSIRE scopes, builds, installs, and supports it for you.

Mexico CFDI 4.0 Electronic Invoicing
Build-to-order Odoo module: sign and stamp CFDI 4.0 invoices via SAT-authorized PACs, with complemento support, on Odoo 17, 18 & 19.
Merge Invoices
A build-to-order Odoo module that consolidates multiple draft invoices or account moves for the same customer into one clean invoice. ECOSIRE scopes, builds, installs, and supports it for your database.
- Wizard + server action over `account.move` that consolidates several selected customer invoices into one new invoice
- Pre-merge validation enforcing matching partner, currency, company, and fiscal position before any merge is allowed
- Source invoice lines unioned into the target move with product, quantity, unit price, and description preserved intact
- Analytic distribution and analytic accounts carried through to the consolidated lines