Odoo does not do it by itself, but it can run by itself
Odoo provides the mechanism, not the setting. Five places where you set up the manual work of a month-end close once and then let it run.
Over the past weeks I looked at Odoo 19 from the inside, not from a manual but by posting, breaking things and seeing what the system stops. The conclusion in one sentence: Odoo provides the mechanism, not the setting.
Almost everything a controller does by hand every month can be set up once and then left to run. These are the five places where that pays off most.
1. Filling in analytic labels: 300 customers, one rule
If you want reporting per shop or per channel, every invoice needs a label. For a company with several branches, a webshop and hundreds of B2B customers, that is a full-time task, and it is exactly the task nobody likes doing. So it gets done halfway, and then the report is wrong.
Odoo has distribution models for this: rules that say "if the partner is this one, the line belongs to that branch or that channel". It works on the sales side and on the purchase side.
On the sales side, one model for an entire customer category, through the partner category, covers three hundred customers. On the purchase side, one model per landlord, energy supplier or alarm company automatically puts every recurring invoice on the right branch. Marketing you split with a key you agree on once and review once a year.
What is left for people are the exceptions. That is a list of ten lines a month instead of two hundred.
2. The right general ledger account: let the product choose
In a fresh Odoo, all product categories point to the same accounts. An invoice line without a product simply takes the default account of the purchase journal. A software subscription that comes in by email thus lands on the account for goods for resale. Nobody sees it, and gross margin drops without anything being sold.
The fix is not an extra check but a setting: for every recurring supplier, a service product with the right expense account on it. Whoever posts the invoice picks the product and the account is right. That is no longer discipline, it is a choice the system makes for you.
3. Setting up structure: import instead of click
Take a product category tree of eighteen categories, three levels deep, with four accounts per category. By hand in Odoo that is an afternoon of clicking and a week later a typo anyway. Designed in Excel and imported, it takes an hour, and all eighteen succeeded.
The key is the external ID. With it you can reimport the same file six months later to update just one column, instead of opening every record again.
Always work in the same order: first export what is there, then import what needs to be there. That way you always have a way back. The same goes for the supplier list, the customer categories and the distribution models themselves.
4. The monthly check: a filter instead of an afternoon
Is the analytic label right on every line? In Odoo you open the profit and loss with the analytic columns switched on. The lines with an amount in the total but zero per channel then stand out. Five minutes, every month, and you know exactly which account and which amount is missing.
That is still a manual action. The next step is for that check to run at night on the data itself, outside Odoo, and only send you a short list when something is off. Then the month-end close is no longer a search, but working through a list that is already waiting.
5. Looking ahead: what Odoo does not do, and what can be done
I checked this with an accountant who works with Odoo every day, and she put it in two sentences. A profit and loss per branch is possible, but it tells you little. And the cash flow does not look ahead.
Odoo knows what has been invoiced and when it is due. It does not know that payroll is coming, that VAT has to be paid by the end of next month, or that November is no ordinary month for a retailer. As the article on Odoo as a source puts it: the system only knows what happens inside it.
What management actually wants to see is a rolling thirteen-week forecast. It refreshes every night from Odoo plus a short list of fixed obligations. You build it once, and after that nobody has to rebuild an Excel file every Monday.
Why the order matters
The temptation is to start with point 5, because it is the nicest. Do not. A dashboard on sloppy data is a pretty picture of a wrong number.
First the structure (2 and 3), then the automatic filling (1), then the check (4), and only then looking ahead (5). Do it the other way round and you build twice.
What it delivers
I will not give an estimate, but I will give a ratio. Most of the manual work in a month-end close consists of three things: labelling, choosing accounts and searching for what is missing. All three can be configured.
What remains is the work you want a controller for: looking at what the number says, not at whether the number is right.
The claim
Odoo does not do it by itself, but it can run by itself. The difference lies in what you set up once.
Does your business run on Odoo and is your month-end close still full of manual work? I am happy to look at where the switches are. Use your data. Finally.