Budgeting and Budget Control in Odoo: Planning Against Actuals

Short answer: Budgeting in Odoo lets you set a planned amount per account, department or project for a period, then compares it automatically with what is actually posted. Instead of discovering an overspend at year-end, a manager sees it building up during the month, while there is still time to act. The setup rests on three things: analytic accounts that mirror how you manage the business, budget lines with an owner and a period, and purchase approvals that stop spending before it happens rather than reporting it afterwards.
Most companies we meet already "have a budget". It usually lives in a spreadsheet that finance prepared in December, that department heads saw once, and that nobody opens again until the auditors ask. This guide explains what a working budget needs, how to set it up in Odoo step by step, and the mistakes that turn budget control back into a formality.
What does a working budget need?
- A clear owner per budget line, usually a department head or project manager.
- A period that matches how the business plans, monthly or quarterly.
- Actuals pulled automatically from postings, not re-entered from memory.
- A variance view that is easy to read without a finance background.
- A rule for what happens when a line is close to being fully spent: a warning, a review or an approval.
If any one of these is missing, the budget may still exist, but it will not change anyone's behaviour.
Why do budgets so often become a formality?
A budget built once a year in a spreadsheet and never revisited is not control, it is a document. By the time anyone compares actual spend to plan, the quarter is already over and nothing can change. Budget control only works when the comparison happens while spending is still in progress, and when the people who own the numbers can see them without asking finance for a report.
There is a second, quieter reason: the budget is often built on a structure that does not exist in the accounting system. Finance budgets "marketing" while the ledger only has twenty expense accounts shared by every department. Actuals then have to be split by hand, the report is late, and people stop trusting it.
How do you set up budgets in Odoo step by step?
Budgeting is part of Odoo Accounting in the Enterprise edition; for Odoo Community, the same approach is delivered with a dedicated budget module. Menu names below follow recent Odoo versions and can differ slightly in yours.
1. Design your analytic structure first
Go to Accounting → Configuration → Analytic Plans and create the plans you manage by, for example Departments and Projects. Then add the analytic accounts under each plan: one per department, branch or project. This is the step that decides whether the budget will work, so agree it with the department heads, not only with finance.
2. Make analytic tagging automatic
Tagging every line by hand does not last. Use analytic distribution models (in the analytic settings) so that a vendor, a product category or an account fills in the right department automatically. On purchase orders and vendor bills, the analytic distribution then follows the line through to the journal entry.
3. Enable budget management
In Accounting → Configuration → Settings, under the analytics section, enable Budget Management. A Budgets menu then appears under the Accounting menu.
4. Create the budget and its lines
Create a budget for the period, for example the financial year, and add one line per analytic account and, where needed, per group of accounts. Give each line its planned amount. Split the year into months or quarters if you want variance by period rather than only for the year. If your first draft is in a spreadsheet, import the lines instead of typing them.
5. Control spending at the purchase order
A budget report tells you about an overspend; an approval rule prevents it. In Purchase → Configuration → Settings, enable Purchase Order Approval and set the minimum amount above which a manager must approve. Combined with the analytic distribution on each order line, the approver sees which budget the purchase will hit before it is confirmed. Depending on your version, the budget view can also show amounts already committed in confirmed purchase orders, not only posted bills.
6. Give owners their own view
Save a filtered budget report as a favourite for each department head, with only their analytic accounts, and add it to their dashboard. Access rights can restrict who sees which lines.
7. Review monthly, and re-forecast
Agree a short monthly review: the largest variances, why they happened, and whether the remaining budget needs to move. A budget that is never revised becomes irrelevant by the second quarter.
What does this look like in practice?
- Department heads see their own budget versus actual, updated as transactions post.
- Project budgets compare against project costing, not just general ledger totals.
- Alerts or reviews trigger before a category is fully spent, not after.
| Column | What it shows | Who acts on it |
|---|---|---|
| Budgeted | The planned amount for the line and period | Finance, when the budget is set or revised |
| Committed | Confirmed purchases not yet billed, where your version shows it | The budget owner, before approving more spending |
| Achieved (actual) | Amounts posted to the analytic account in the period | The budget owner and finance |
| Remaining | Budgeted minus actual (and commitments) | The budget owner |
| % achieved | Actual as a share of the budget | Management, to spot lines running ahead of plan |
What does an implementation look like?
Here is how this typically unfolds, in an anonymised, illustrative example: a distribution client in Jeddah whose budget exists only as a yearly spreadsheet, with one expense account per type of cost shared by every branch and department. The work starts by agreeing two analytic plans with the management team, branches and departments, and setting distribution models so that rent, salaries and fuel are tagged automatically. Purchase approvals are then switched on above an agreed amount, so branch managers see the effect on their budget before a purchase is confirmed. The first months usually go into correcting tagging rules, not building reports; once the tagging is reliable, the monthly review moves from a finance exercise to a short conversation with each manager about the few lines that matter.
What are the common pitfalls?
- Budgeting on accounts nobody tags: if the analytic structure does not match how you manage the business, actuals will never line up with the plan.
- Manual analytic entry: people forget, choose the wrong account or leave it empty. Use distribution models wherever a rule can decide.
- Annual figures only: a yearly budget hides seasonal timing. Split into months or quarters if you review monthly.
- Reports without approvals: a report shows the overspend after it happens. Approvals on purchase orders stop it before.
- Too many lines: hundreds of lines with small amounts are never reviewed. Budget at the level where a manager makes decisions.
- No re-forecast: keep the original budget for comparison, but update expectations when the business changes.
Frequently asked questions
Can budgets be set per project as well as per department?
Yes. Budgets are built on analytic accounts, so you can budget per department, per project, per branch, or several of these at once by using more than one analytic plan.
Does this replace a separate planning spreadsheet?
For many companies, yes, once actuals flow in automatically. Some still prepare the first draft in a spreadsheet and import the lines into Odoo, then do all tracking and revisions in the system.
Who should be able to see budget variances?
Usually the budget owner and their manager. Access rights and saved filters can restrict each department head to their own lines, so sensitive figures are not visible company-wide.
Can Odoo stop a purchase that exceeds the budget?
Standard Odoo controls spending through purchase order approvals above a set amount, with the budget visible to the approver. A hard block when a budget line is exhausted needs a small customisation, which we add where the business wants it.
Is budget management available in Odoo Community?
Budget management is part of Odoo Enterprise Accounting. On Odoo Community the same planned-versus-actual reporting is delivered with a dedicated budget module.
How often should budgets be reviewed?
Monthly works for most companies: a short review of the largest variances with each owner, and a re-forecast when the business changes. Keep the original budget for comparison so the revision does not hide the first plan.
See where spending stands before the month closes
ExtraMile sets up budget tracking in Odoo that department heads can actually read, from the analytic structure to approvals and dashboards.
Ask about budgeting in Odoo or message us on WhatsApp: Egypt · Gulf
This article was drafted with AI assistance for ExtraMile Business Solutions.


