The diagnostic
Each item below is a symptom we have found repeatedly in Odoo systems that
were implemented by capable software teams with no accountant in the room.
Read the explanation under any item you're unsure about.
01
Month-end requires manual journal entries to force the trial balance to agree.
The single clearest symptom. A correctly designed system posts to the ledger automatically from source transactions. If someone has to write a plug entry to make it balance, the ledger is not being driven by the subledgers — it is being reconstructed by hand every month, and the difference is being hidden rather than explained
02
Stock valuation in Inventory does not tie to the stock account in the general ledger
Usually caused by a valuation method chosen without accounting input, mid period changes to costing, or inventory adjustments posted to the wrong account. The gap compounds silently. By the time an auditor finds it, several years of movements have to be unwound to work out where it started.
03
COGS is posted by a periodic manual entry rather than in real time on delivery
Means gross margin is unknown at any point during the month. Sales decisions, pricing and stock purchasing are all being made on a number that doesn't exist yet. Real-time perpetual valuation is standard in Odoo — its absence is a configuration decision somebody made without understanding the consequence.
04
Bank reconciliation is done in Excel and imported, or not performed in Odoo at all
Odoo's reconciliation tooling is strong and its newer releases include machine assisted matching. If your team is still working in a spreadsheet, the reconciliation model was never configured — which means unreconciled items have nowhere to be tracked and nothing forces them to be cleared.
05
WIP, retention and progress billing live outside the system
The defining failure for contractors and developers. Retention alone is frequently several percent of annual turnover, sitting in a spreadsheet with no ageing and no release-date tracking. Cost-to-complete estimates that live outside the ledger cannot support IFRS 15 revenue recognition in any defensible way.
06
Deferred revenue or revenue recognition is a manual schedule, not a posting rule
A manual schedule is a control weakness and an audit finding waiting to happen. It also breaks the moment volume grows or contract terms vary. Recognition should be a rule the system applies, evidenced by a posting, not a spreadsheet someone maintains and nobody reviews.
07
Intercompany transactions do not eliminate; consolidation is a spreadsheet
Common in group structures assembled entity by entity with no consolidation design. The result is that group reporting is rebuilt manually each period, intercompany balances rarely agree, and the consolidation cannot be reproduced by anyone except the person who built the file.
08
Analytic accounting is unused, or not mapped to project, property, unit or cost centre
This is the difference between having a general ledger and having management information. Without a designed analytic structure you cannot produce a P&L by project, by building, by unit, by product line or by work centre — so every one of those reports gets rebuilt in Excel, from exports, by hand.
09
Fixed assets and depreciation run outside Odoo
Usually a legacy spreadsheet nobody wants to migrate. It means the asset register and the ledger drift apart, disposals get missed, depreciation runs late, and the tax and accounting treatments diverge with no reconciliation between them.
10
Foreign currency revaluation is done once a year, by hand
For any business holding foreign currency balances, annual manual revaluation means monthly results are wrong all year and correct only once. FX exposure is invisible until year-end, when it arrives as a single unexplained movement in the P&L
11
VAT and corporate tax returns are compiled from exported data, not from Odoo reports
If the return cannot be produced from the system, the system's tax configuration is wrong — and the return has no audit trail back to the ledger. Under continuous transaction control regimes such as e-invoicing, this stops being a filing inconvenience and becomes an operational blocker, because invoices must be right at the moment of posting.
12
Nobody can produce a complete audit trail from source document to GL entry on demand
Standard in Odoo when it is configured properly, and absent surprisingly often. For regulated manufacturers this is more than an audit issue — traceability and electronic record integrity are inspection findings, not accounting preferences
13
The chart of accounts was imported from demo or localisation data and never redesigned
The root cause of most of the items above. A chart of accounts is an accounting design decision that should reflect how the business is actually run and reported. Inheriting a default template and building three years of transactions on top of it is the most expensive shortcut available in an ERP project.
14
Closing the month takes more than 10 working days
The summary metric. Every issue above shows up here eventually. A well
designed Odoo close in a mid-market business should land in three to five
working days. If you are past ten, finance is spending roughly a third of every
month producing numbers instead of using them.
What we do about it
Every remediation we take on starts with the same fixed-fee diagnostic. It is
deliberately small — you get evidence before you commit to anything larger.
Odoo has a very large global partner network. Almost all of those firms are software businesses that learned accounting. We are the inverse: qualified accountants with Big4 backgrounds who learned Odoo.
That distinction sounds academic until you have seen its absence. A chart of accounts imported from demo data. Stock valuation that hasn't tied to the general ledger in three years. A close that takes 22 working days because finance rebuilds the numbers in Excel before anyone will sign them.
The books are the deliverable. The software is only how we get there.
We rarely replace anything. In most cases the Odoo instance is fine — the accounting design underneath it was never done. So we redesign the chart of accounts and analytic structure, correct the valuation and costing method, clear the historic reconciling items, automate the bank and subledger reconciliations, and hand over a documented close process your team can actually run.
We do not name or criticise the partner who came before us. Most of them are genuinely good at process and product. Accounting design is a different discipline.