Odoo handles budgets natively, built on analytic accounting: you set an amount per axis, and the software continuously compares budgeted against actual. Here is how to set it up, and where it stops.
In short. Odoo handles budgets natively, in the Accounting app, built on your analytic accounting: you set an amount per axis (project, division, service line), and Odoo continuously compares budgeted against actual. For each line it shows the budgeted amount, the theoretical amount (what should be consumed by that date), the committed amount (invoices plus confirmed orders) and the achieved amount. The prerequisite is not the budget feature, it is having clean analytic axes. Without them, a budget in Odoo stays an empty shell.
Many Luxembourg SMEs build their budget once a year, in a spreadsheet, then never reopen it: by the time they compare it to reality, the year is over and it is too late to correct course. Odoo flips that logic. The budget lives in the same tool as the accounts, compares itself to actuals without re-keying, and flags overruns while you can still act. Here is how to set it up, what Odoo computes on its own, and the limits to know before expecting too much.
What is a budget in Odoo?
In Odoo, a budget is an object in the Accounting app that ties a planned amount to one or more analytic axes, over a given period. As invoices, purchases and entries are recorded, Odoo automatically matches what was planned against what was actually spent or earned, and shows the gap. The budget does not rest on the general chart of accounts: it builds on analytic accounting, that is, on the projects, divisions or service lines you have defined.
The consequence is direct: a budget in Odoo only means something if your analytic axes are in place and properly fed. If your costs carry no analytic allocation, the achieved column will stay at zero against a full budget, and the comparison will say nothing. That is the point most tutorials skip. The order of operations matters: make the analytics reliable first, budget second.
What Odoo computes for each budget line
This is where the tool beats a spreadsheet. For each line, Odoo does not just show planned and actual: it adds two columns that change the reading.
| Column | What it measures |
|---|---|
| Budgeted | The amount allocated to the axis for the period |
| Theoretical | What should be consumed as of today, spreading the budget evenly across the period |
| Committed | Recorded invoices plus confirmed purchase orders not yet invoiced |
| Achieved | What is actually invoiced or posted on the axis |
The theoretical amount is the most useful input. A budget of 120,000 € over the year works out to 10,000 € theoretical per month; on 30 April, the theoretical figure is 40,000 €. If the achieved figure is already at 60,000 €, you are running ahead of pace and you see it in April, not at year-end. The committed amount acts as a complementary guardrail: a supplier order signed but not yet invoiced already weighs on the budget, even if the accounting actual has not recorded it. A budget that ignores commitments gives a false sense of room.
Setting up a budget, step by step
The creation itself takes a few minutes. It is the analytic groundwork that needs care.
- Check the analytic axes. The analytic plans and accounts that will carry the budget must exist and be fed by your invoices, purchases and timesheets. If they are not, start there.
- Create the budget in the Accounting app: a name, an owner, a period with a start and end date, and a type (revenue, expense or both).
- Add the lines: one line per analytic axis tracked, with the allocated amount. An expense budget by division, a revenue budget by service line, depending on what you want to steer.
- Open the budget so tracking starts: Odoo then begins matching actual against planned, line by line.
- Review it monthly. A budget is only useful if someone looks at it. The right rhythm is a monthly check on the gaps, not a yearly re-read.
Want a budget that compares itself to reality, not a spreadsheet frozen in January? We set up the analytics, then the budget, in your Odoo.
Set up my budget controlThe budget replaces neither the general ledger nor the steering
Two misunderstandings are worth clearing. First, the analytic budget does not touch your legal obligations. Your general accounting stays kept under the PCN 2020 standard chart of accounts, and that is what produces the balance sheet, the VAT return and the annual accounts filed with the RCS. The budget is an internal management tool, parallel and optional, exactly like the analytics it builds on. It appears in no filing.
Second, a budget shows a gap, it does not decide the response. Knowing that division A has used 60 % of its purchasing budget halfway through the year is information; deciding to scale back, renegotiate a supplier or accept the overrun because it carries growth is a judgment call. That call belongs to financial steering, which we describe in our articles on the financial dashboard in Odoo and the fractional CFO in Luxembourg. The budget provides the raw material, not the decision.
Who Odoo's native budget is not enough for
Let us be frank about the limits, because they head off disappointment. Odoo's budget is a budget control tool: it compares planned against actual over a period. It is not an advanced financial planning tool. It does not natively run several scenarios side by side, does not build a three-year cash forecast, and does not do sophisticated rolling budgets. For an SME of 1 to 50 employees that wants to hold its spend by division and spot overruns in time, it covers the essentials. For a finance function steering complex scenarios, a fundraising round or a group consolidation, it is complemented by modelling work, often in a spreadsheet connected to Odoo's figures rather than in the budget feature itself.
One last point of honesty: the quality of a budget comes down to the quality of the analytics underneath. A sloppy analytic breakdown produces a budget control that looks precise and is wrong. The tool does not fix a poorly designed structure, it amplifies it.
The Advena coupling: analytics, budget and financial reading
This is the thread running through our model. The same team sets up the analytic axes in the Odoo it deploys, builds the budget on top, and reads what the gaps are saying, because it holds the tool and the financial side under one roof. A pure integrator installs the budget feature and leaves you in front of columns; a pure finance consultant rebuilds everything in a spreadsheet, cut off from the real data. Budget control only has value if the data is fresh and someone can turn it into a decision. That is exactly what we keep together, in the continuity of year-end closing in Odoo and day-to-day steering.
Frequently asked questions
Is the budget in Odoo tied to analytic accounting?
Yes. Odoo's budget builds on analytic axes: each budget line targets an analytic account (project, division, service line). Without analytic accounting in place and fed, the achieved column stays empty and budget tracking compares nothing. Analytics are the prerequisite.
What does the theoretical amount mean in an Odoo budget?
The theoretical amount is the share of the budget that should be consumed as of today, spreading the total evenly across the period. It tells you whether you are spending faster or slower than planned, without waiting for year-end. Compared with the achieved figure, it flags an overrun mid-course.
Does the Odoo budget appear in the annual accounts or the VAT return?
No. The budget is an internal management tool, parallel to the general accounts. Your legal obligations (balance sheet, VAT, annual accounts filed with the RCS) are still produced by the accounts kept under the PCN 2020. The budget enters no filing.
Do I need a third-party module to manage a budget in Odoo?
No. Budget tracking is part of the Accounting app, alongside the reports and analytic accounting. Third-party modules exist for advanced needs (multiple scenarios, approval), but a basic SME budget control does not require them.
What is the difference between the budget and the financial dashboard in Odoo?
The budget compares planned against actual by analytic axis. The financial dashboard tracks steering indicators (cash, receivables, margin, VAT due). The two are complementary: the budget frames spending, the dashboard watches financial health in real time.
Read more
- Analytic accounting in Odoo: measuring profitability by project and activity
- Financial dashboard in Odoo: steering your SME in real time
- Fractional CFO in Luxembourg: who needs one, what it covers, what it costs
- Year-end closing in Odoo for a Luxembourg company
- Odoo in Luxembourg: is it the right ERP for your SME?
Why Advena?
- Finance and digital under one roof: the budget is designed by the people who can read the gaps it produces.
- Luxembourg grounding: budget control is added on top of a clean PCN 2020 base, it never replaces it.
- Clear fixed fees, no hourly billing: a defined scope, a price known in advance, from 325 € a month for bookkeeping.
- Closeness to the founders: it is the partners who work with you, not a junior.
Want to steer your spend by division before it drifts, not after the balance sheet?
Book a free assessmentInformation current as of 13 November 2026. The behaviour described relates to Odoo 19, the latest stable version, and its budgeting built on analytic accounting. This article is for information and does not constitute tailored accounting advice.