Open Accounting → Reporting → Trial Balance on Odoo 19 and the report gives you a single net Balance figure for the opening position and a single net Balance for the closing position, with negatives in red. The period in between still shows gross Debit and Credit. On Odoo 17 and 18, all three groups were split into Debit and Credit.
If your auditor, your statutory template or your own review checklist expects the classic six-column presentation, the change is not cosmetic — it breaks the thing the report exists to do. Trial Balance — Debit/Credit Initial & End Balance restores it: Initial Balance and End Balance each render as separate Debit and Credit columns again, with every account's net amount placed on its correct side.
What changed, precisely
| Group | Odoo 17 | Odoo 18 | Odoo 19 |
|---|---|---|---|
| Initial Balance | Debit / Credit | Debit / Credit | Balance (single, net) |
| Period movements | Debit / Credit | Debit / Credit | Debit / Credit |
| End Balance | Debit / Credit | Debit / Credit | Balance (single, net) |
Worth saying plainly: Odoo published no release note and no documentation entry describing this. The 19.0 accounting reporting documentation does not discuss the Trial Balance at all, and account_reports lives in a private repository, so there is no public diff to point at. The change is visible in the report itself — put an 18.0 and a 19.0 database side by side and it takes ten seconds to confirm.
Why a single net column is the wrong shape for this report
A trial balance is read by side. Two columns exist so that every account declares which side of the ledger it sits on at the start of the period and which side it sits on at the end — and so that a reviewer can run an eye down one column instead of decoding a sign on every row.
Collapse the opening and closing positions into one signed figure and two things break. The sign convention now carries the information the column heading used to carry, which is exactly the kind of implicit knowledge that goes wrong when a file leaves your building and lands with an auditor, a bank or a tax agent who did not build it. And the export no longer matches the layout that audit working papers, statutory filing templates and review checklists in most jurisdictions are built around — so somebody rebuilds it in Excel every period, by hand, and that person eventually gets one wrong.
This is not a new request invented by the Odoo 19 layout. Accountants have been asking Odoo for opening balances split by side for years: “I want to display Opening Balances as a separate column… and the debit and credit should include only the transactions processed in the selected period.” Another, on Odoo 16 Enterprise: “I need to print Trial Balance report with closing balance amount after debit and credit columns.” The requests predate 19; what 19 did was remove the one place the answer already existed.
Why the obvious workarounds fail
Export to Excel and fix it there. This is what most teams do. It works, it takes twenty minutes a period per company, and it is manual arithmetic in a document that closes your books. Fine once. Not fine every month across several companies.
Build a custom report in account.report. You can define your own report record with your own columns, and some teams do. You then own a parallel report that has to be kept in step with Odoo's — its tax handling, its currency handling, its unfolding, its audit drill-down — through every upgrade. That is a large maintenance surface to take on for a column layout.
Buy a dynamic-reports suite. There are several on 19.0, from roughly $16 to $290, and most are complete parallel reporting engines. If you want a second set of financial reports, they are a reasonable purchase. If you want Odoo's trial balance, with Odoo's drill-down, presented the way it was in 18, they are the wrong tool: you inherit a second system to reconcile against the first.
Switch to Community and use a free accounting kit. A Community accounting kit adds financial reports to a database that has none. It does not modify the Enterprise report you already have, and moving off Enterprise to fix a column layout is not a trade anyone should make.
What the module does
Initial Balance and End Balance render with separate Debit and Credit columns, restoring the Odoo 17/18 presentation on Odoo 19.
Each amount goes on the correct side. For every line, the Initial or End amount is collapsed to a single net figure and placed accordingly: a net debit lands in Debit, a net credit lands in Credit. Nothing is double-counted and no figure is invented.
Period movements are untouched. The columns in between keep their gross Debit and Credit values exactly as Odoo computed them.
It uses a supported rendering path. The split is produced by reusing the exact code path Odoo already uses for Horizontal Groups in account_reports — a documented, first-class mechanism in the reporting engine, not a monkey-patch of the report's internals. That matters for what happens at the next upgrade.
It is presentation only. The module changes how figures are displayed, not how they are calculated. Your numbers are Odoo's numbers.
Uninstall reverts it completely. There is no stored state and no data of its own to clean up.
What it does not do
It does not add columns to any other report — the General Ledger, Partner Ledger and Aged reports are untouched.
It does not add new filters, comparison periods, groupings or export formats. Everything the standard Trial Balance can do, it still does; everything it cannot, this does not add.
One presentational detail to be aware of: the same net-and-place rule is applied to every line the report produces, including total and subtotal rows. A total row therefore shows the net of the group on its own correct side rather than the sum of the Debit column above it. If your working papers need the Debit and Credit columns to foot to their own totals, say so when you buy — that is a change to the total rows, not to the module's approach, and it is exactly the kind of thing the 90 days of support is for.
It does not work on Odoo Community. It requires the Enterprise Accounting app (account_reports) — that is the reporting engine it extends, and no module can add it to a Community database. Currently published for the 19.0 series only, because 19.0 is where the problem exists.
How to use it
- Purchase and install the module, then update the apps list.
- Open Accounting → Reporting → Trial Balance.
- The Initial Balance and End Balance groups now show Debit and Credit columns. There is nothing to configure.
- Export as usual — the split carries through to the export.
Where it sits against the alternatives
On the 19.0 series I could not find another module that restores this specific layout. The nearest neighbours are the dynamic financial report suites, which replace rather than extend, at $16 to $290. At $49 this is a surgical fix to one report in Odoo's own engine — priced as a fix, not as a suite.
FAQ
Did Odoo 19 really change the Trial Balance layout?
Yes. In Odoo 17 and 18 the Initial Balance and End Balance groups each carried a Debit and a Credit column. In Odoo 19 each of them renders as a single net Balance column, with negatives shown in red. The period movement columns still show gross Debit and Credit. Odoo published no release note or documentation entry describing the change, so compare the report in an 18.0 and a 19.0 database if you want to see it for yourself.
Why do accountants want Debit and Credit columns for opening and closing balances?
Because a trial balance is read by side. Splitting each balance onto its natural side means every account declares where it sits at the start and the end of the period, and a reviewer can scan one column instead of decoding a sign on every row. A single signed net column pushes that work onto the reader, and the split layout is what most audit templates, statutory formats and review checklists still expect.
Does this module rewrite Odoo's accounting report engine?
No. It reuses the exact rendering path Odoo already uses for Horizontal Groups, which is a fully supported mechanism in account_reports. It changes how the Initial and End balance figures are presented, not how they are calculated.
Do the numbers change?
No. For each line the Initial or End amount is collapsed to a single net figure and placed on the correct side: a net debit goes to Debit, a net credit goes to Credit. The period movement columns keep their gross Debit and Credit values exactly as Odoo computed them.
Do I need Odoo Enterprise?
Yes. The module depends on account_reports, which is the Enterprise accounting reporting engine. It is not available in Odoo Community, and no module can add it to a Community database.
How do I go back to the standard Odoo 19 layout?
Uninstall the module. It reverts completely, because it changes presentation only and stores nothing of its own.
Get it
Trial Balance — Debit/Credit Initial & End Balance (classic layout) — $49 USD, one-time, on the Odoo Apps Store: apps.odoo.com/apps/modules/19.0/eh_trial_balance_dr_cr
Requires Odoo 19.0 Enterprise Accounting (account_reports). Licensed OPL-1. Includes 90 days of support by email at ebraheem@brioche.me — questions answered within 24 hours. One purchase covers one Odoo major version.
Built for a multi-company group in Saudi Arabia closing real books on Odoo 19, then generalised for sale.