Odoo 20 came out on 24 September at Odoo Experience in Brussels. Since then we have had the same question from almost every customer: do we need to move?
Our short answer: probably not yet. Odoo 20 has more features, and it also costs more. For most companies on Odoo 19 the sensible moment is somewhere in 2027, when a feature pays for the higher bill and your connectors are ready. The rest of this post explains how we got there.
Three of the four cost changes arrive with the upgrade. The price increase arrives at renewal.
How did we research this?
We did not want to write another list of release highlights, so we went to the code. We compared the module lists of Odoo 19 and Odoo 20, Community and Enterprise, and opened the files behind every claim about cost, users and AI. We did not read all of Odoo's code; nobody reads millions of lines for a blog post. We did install Odoo 19 and Odoo 20 Enterprise side by side in Docker, from the official source packages of 30 September, loaded Odoo's demo data and tested the claims that matter most on a running system. We read the new Enterprise Agreement (version 13, published on release day) and the pricing page. On top of that we went through all 22,000 words of the official release notes, partner blogs, the Odoo forum, the OCA migration trackers on GitHub and the Odoo It Yourself video that half our network sent us this week. We also read ten analyses by partners in Germany, France, Poland, Belgium and India.
Where we checked a claim in the code, we say so and name the file. Where it comes from a blog or our own reading of a contract, we say that too. And where partners disagree with each other, or with the code, we show both sides.
Should I upgrade to Odoo 20 right now?
No, unless you are on Odoo Online, where you will not get to choose.
Every partner we read agrees on this point, and so do we. A new major version needs a few months before the upgrade scripts, third-party modules and localisations catch up. Odoo's own forum moderators expect Online customers to get 20 "probably December or January. We don't know yet." Self-hosted and Odoo.sh customers have even less reason to hurry: Odoo 19 is supported until September 2028. The Belgian partner Odive put it well: use the release "as a planning trigger, not an automatic deadline."
Planned end of standard support per version, from Odoo's documentation.
So we looked at what 20 does for you and what it costs you. On cost, this release is different from the last few.
What does Odoo 20 change on my bill?
Most release posts skip this part. Three things change. Two of them arrive with the upgrade, the third arrives at your next renewal whatever version you run.
What is a light user in Odoo 20?
A light user is a new, cheaper user type at €7.90 per month. Light users can handle their own time off, expenses, attendance and planning, work as a barcode operator, do field service jobs and read Knowledge. As employees they can receive payslips, use the Point of Sale and work on the manufacturing shop floor. Sales, purchasing and accounting need a full user.
For a company with warehouse staff or operators who only clock in and scan, this can be cheaper than a full licence. The German partner co-dex calculated that moving 25 warehouse staff from Standard users to light users saves about €425 a month. You cannot buy light users online, you have to go through an Odoo advisor.
The release notes mention light users exactly once, in the Barcode section. The role only exists
from Odoo 20. We checked: base/models/res_users.py in the 20.0 branch has a
new role field with the value light_user. Odoo 19 does not have it. In the Odoo 20 user form it
shows up as a choice between Light, User and Administrator.
The new Role field in Odoo 20 (runbot.odoo.com, 20.0 build, 30 September 2026).
If light users would save you money, that is a real reason to upgrade.
Are employees without a login billed as light users?
The new Enterprise Agreement defines a light user as any account marked as light, "or any active employee record (from the human resources App) not linked to an active non-portal user account."
Section 2 of the Enterprise Agreement v13 (odoo.com, 30 September 2026).
So every employee in your HR app who does not log in to Odoo counts as a paying light user. Think of the drivers, cleaners and roasters you added to Employees so you could plan them or track their contracts.
It is also in the code. In Odoo 20, hr/models/update.py adds a new number to the message your
database sends to Odoo: nbr_employees_wo_user, the count of active employees without a login (or
with only an archived or portal login). The commit is two weeks old and is called "adjust employees
without user count".
addons/hr/models/update.py in the public Odoo 20.0 branch.
Odoo 19 does not send that number. So Odoo 20 counts them, and the contract makes them billable.
We wanted to see what that means in practice, so we asked both versions what they report to Odoo. Odoo's standard demo company, the same apps apart from MCP:
| What the database reports to Odoo | Odoo 19 | Odoo 20 |
|---|---|---|
| Users | 3 | 4 |
| Light users | not reported | 1 |
| Employees without a login | not reported | 19 |
Those 19 employees are the demo company's staff who never log in. Under the new agreement they count as light users: 19 times €7.90 is about €150 a month, for people who do not use Odoo.
You will not find this in the release notes. It is only in the contract and the code.
Odoo It Yourself called this "a cash grab" in his video. We would put it more mildly: it is a price increase that you only notice after you upgrade. Before you move, count your employee records and clean up the ones for people who have left.
How much more does Odoo Enterprise cost in 2026?
odoo.com/pricing on 30 September 2026. Agentic AI is listed only under Custom.
The Custom plan goes up 20%. Odoo announced it at Odoo Experience and pointed to 26% inflation since 2022 plus the cost of AI and hosting. Partners report 20% to 31% per country: in Germany Custom goes from €37.40 to €44.90, in the US from $46.70 to $61.00. The Standard plan stays the same.
This increase does not depend on your version. The agreement does soften it for existing customers. Section 5.2 says that if you pay less than the current list price, your price at renewal rises "by up to 7% per year of the previous Term". So you close the gap in steps, not in one jump. Check with your account manager what that means for your contract.
Can I still use my own OpenAI key in Odoo 20?
No. In Odoo 19 Enterprise the AI settings had two options, "Use your own ChatGPT account" and "Use
your own Google Gemini account", stored as ai.openai_key and ai.google_key. In Odoo 20 those
settings are gone. Every AI call now goes through Odoo's own endpoint (ai.api.odoo.com in
ai/utils/ai_utils.py) and is paid with credits you buy from Odoo. The ai module is flagged as a
paid service in its manifest. The release notes say it in one line: "All AI features now need
credits, which can be bought via IAP." You still pick a provider, and Odoo picks the model.
One French partner writes that on Odoo.sh and on-premise you still need your own OpenAI or Gemini
key on top of the credits. We could not find that in the code. The 19 file that talked to OpenAI
and Gemini directly (ai/utils/llm_api_service.py) does not exist in 20, and completions go
through call_odoo_ai to Odoo's endpoint.
The same settings search in Odoo 19 and Odoo 20 Enterprise.
Add the Custom plan requirement for AI agents, and AI in Odoo 20 means a bigger licence plus a running bill for credits.
What do you get for it? Which Odoo 20 features are worth upgrading for?
Quite a lot, to be fair. The release notes list 585 changes across 52 apps. According to a partner who parsed the notes, 391 of them are in Community and 194 are Enterprise-only. These are the ones we think can decide the timing for an SME:
- AI agents that can create and update records and run inside automated actions. Enterprise, Custom plan, credits.
- An offline mode that lets you create and edit records without a connection. Community and Enterprise.
- Suggested minimum and maximum levels on reordering rules, based on your history.
- Cost of goods sold that updates itself when the cost changes.
- Every journal entry on a bank account now has to come from a bank transaction, which removes a classic source of messy books.
- Paying supplier bills straight from Odoo through a bank link, in bulk with one signature.
- For manufacturers: continuous production, a kanban for work orders and a Gantt planning view (Enterprise).
- Stock valuation without installing the Inventory app. The webshop and Point of Sale can also run on a single on-hand quantity per product, which suits small shops.
- Automatic payment reminders on invoices, better duplicate detection on bills and suggested bill lines based on your history.
- Mollie now handles in3, Klarna, Apple Pay and Google Pay, with tokens for recurring payments. Wero works through Buckaroo and Worldline.
- The website can publish an llms.txt file and adds structured data by default, which helps AI search engines read your site.
If one of these saves you real hours every week, that is your reason to upgrade. If you are upgrading because the number went up, wait.
Are Odoo 20 features also available in Odoo 19?
Some are. In the release notes, 89 entries are marked "available from" an older version: 56 from 19.0, 19 from 18.0 and 14 from 17.0. According to Odoo, you can use those on the older version too. Most of them are industry packages, localisations and marketplace connectors such as TikTok and Lazada. A few are general, like duplicate detection on invoices and importing product variants. The features that would make you upgrade, such as AI agents, light users, the cost of goods sold update and the reordering suggestions, are 20 only.
For Dutch companies there is one more thing to know. The localisation section covers 55 countries, and the Netherlands is not one of them. Belgium gets payroll changes. Odoo 20 brings nothing specific for the Dutch market.
What breaks when you upgrade to Odoo 20?
More than usual. The biggest change sits deep in the framework: Odoo 20 replaces the old access
rights (ir.model.access) and record rules (ir.rule) with a single new model, ir.access,
in base/models/ir_access.py. Every custom module has to convert its security files. That
includes ours. The OCA, which maintains thousands of community modules, reported that this single
change explained roughly two thirds of the modules that failed to port in its first test run.
Other changes to plan for:
- Field Service no longer exists as an app. Its map, routes, worksheets and travel fees moved into Planning.
- Payroll no longer builds on work entries, according to the release notes, which label the impact "major". The work entry module itself still exists in 20.
- Payment statuses were renamed: "In Process" is now "Paid" and "Paid" is now "Reconciled". Reports and filters that rely on the old names will show different numbers, and your team needs to know.
- A tax is now removed from an invoice line when it does not belong to the fiscal position, even if there is no replacement. Check your fiscal positions before you upgrade.
- Tracking values are gone from the chatter data model. Odoo offers a separate module if you rely on them for audits.
- The standalone Expenses menu is gone (approved expenses become draft bills), and so is the profitability report on the project dashboard.
- The web client moves to OWL 3 and swaps Font Awesome for Material Symbols. PDF reports changed too. Custom screens and report layouts will need work.
- The external API loses its
dbservice. The older/xmlrpcand/jsonrpcendpoints still work but are on their way out by Odoo 22. Check your integrations. - Odoo 20 now listens on 127.0.0.1 by default instead of on every network interface. A self-hosted
or Docker setup that relied on the old default is unreachable until you set
http_interface. We ran into this ourselves while testing. - Self-hosted servers need Python 3.12 and PostgreSQL 16 at minimum. The AI features also need the
pgvector extension in PostgreSQL (the embeddings use a
vector_cosine_opsindex).
Odoo's upgrade service is free with Enterprise, but it covers your data, not your custom modules. In practice your connectors and third-party apps decide the date. App store vendors usually need weeks to months for a new version, and some never port at all. One year after Odoo 19, the OCA had ported about half of the modules in repositories like server-tools and sale-workflow.
When should you upgrade to Odoo 20? It depends where you are
Answer from the top and stop at the first yes.
| Your situation | What we advise |
|---|---|
| Choosing Odoo now, going live in 2027, mostly standard | Start on 20, if you accept the new pricing |
| Choosing Odoo now, dependent on connectors or OCA modules | Start on 19, move to 20 once they are ported |
| In the middle of an implementation | Go live on 19, upgrade later as a separate project |
| Live on 19 | Wait. Upgrade when a 20 feature pays for itself, not before 2027 |
| Still on 17 or 18 | 17 is out of support. Upgrade now, and consider going straight to 20 in early 2027 |
| On Odoo Online | You get 20 whether you plan it or not. Test it on a copy the moment Odoo offers one |
Partners do not agree on the first row. co-dex in Germany and Macopedia in Poland say a new project should start on 20 straight away. JAIKIN in France says start on 19 and move in 2027. On the Odoo forum the answer comes down to one question: is your setup 100% standard? If it is, we would start on 20. Otherwise you are planning an upgrade project before you have even gone live.
We feel strongest about the third row. A coffee roaster we are implementing right now started on 19 Enterprise this month and will go live on 19. Their webshop and accounting integrations need a version 20 first. Moving the target halfway would mean testing everything twice.
Is Odoo 20 Community a good alternative now?
It is getting more interesting. With Enterprise more expensive and AI tied to credits, we expect more companies to ask about Community. Odoo It Yourself is already steering his audience that way. But the gaps are real, and they did not get smaller in 20.
Community 20 has 693 modules. Enterprise adds 880 more. For most of our customers
the gap that hurts is accounting. Community 20 does invoicing and Peppol e-invoicing, but the full
accounting app, financial reports, bank synchronisation and assets are Enterprise
(account_accountant, account_reports, account_online_synchronization, account_asset).
Studio, Helpdesk, Planning, Barcode, Quality and PLM are Enterprise too.
| 19 Community | 19 Enterprise | 20 Community | 20 Enterprise | |
|---|---|---|---|---|
| Modules | 676 | +718 | 693 | +880 |
| Full accounting (reports, bank sync, assets) | No | Yes | No | Yes |
| AI inside Odoo | No | 15 modules | No | 52 modules |
| Your own OpenAI or Gemini key | n/a | Yes | n/a | No, credits only |
| Native MCP server | No | No | No | Yes, Custom plan |
| Light users | No | No | Not billed | €7.90 per month |
| Employees without a login billed | n/a | No | n/a | Yes |
| Official upgrade service | No | Yes | No | Yes |
| Standard support until | Sep 2028 | Sep 2028 | Sep 2029 | Sep 2029 |
The same comparison as an image, for sharing.
Upgrading is the other catch. Odoo's upgrade service is Enterprise-only. Community relies on the OCA's OpenUpgrade project, which is run by volunteers. Its 18.0 migration still had open modules after two years, and the 20.0 tracker was only opened on 29 September. On Community, the OCA decides when you can upgrade, not you.
Does Odoo 20 Community have AI or an MCP server?
No. We checked the full list of Community 20 modules: there is not a single AI or MCP module in it. All 52 AI modules in Odoo 20 live in the Enterprise repository under Odoo's proprietary licence.
Modules starting with ai, counted in each codebase.
Does Odoo 20 have a native MCP server?
Yes, in Enterprise. The module is called ai_mcp, it installs automatically and it lets AI
assistants like Claude and ChatGPT connect to Odoo. For a first version it is good. It supports
OAuth, and ChatGPT, Claude, Claude Code and Grok are approved as clients out of the box. Automatic
registration for other clients is off by default.
MCP settings in Odoo 20 Enterprise.
Five read-only tools are on by default, and an admin can open up write actions one by one.
We tested it on our local Odoo 20. The five default tools read data without using any AI credits. We then did what an admin can do in two clicks: we switched on the existing "Create Records" tool for MCP and ticked "read-only" on it. The server announced the tool to the AI as read-only, and it still created a new contact when we called it. So the read-only label only informs the AI client and stops nothing. Keep that in mind before you open up write tools.
Even with writing switched on, there is a ceiling. The AI can create records and change fields, but it cannot confirm a quotation or post an invoice: we tried, and Odoo refused because the status field is read-only. Anything that happens through a button in Odoo needs an admin to build a custom tool in Python first. There is also no tool to delete records.
There is no check on your plan in the MCP code. The Custom plan requirement comes from the pricing page and the contract, not from the software.
It also comes with conditions: Odoo 20, Enterprise, the Custom plan, and AI features that run on Odoo's credits. Right now that is a small group of companies. Everyone on 14 to 19, on Community, or on the Standard plan has no native MCP, and given the timing above, that stays the case for a while.
We tested the native server in more depth, including what it can and cannot write, in Odoo 20 has an MCP server. Here is what it can and cannot do.
That is the group we built Odoo MCP Pro for. It connects Claude, ChatGPT or your own model to any Odoo from version 14 up, Community or Enterprise, hosted in the EU, with governance on what the AI may read and write. If AI is your main reason to look at Odoo 20, you can have it on your current version today.
What are we doing ourselves?
Our own Odoo stays on 19 for now. In September we moved it from Odoo.sh to our own server, and we did that on 19 on purpose: one change at a time. If you move hosting and version together and something breaks, you do not know which of the two caused it.
Our modules follow the same rule. The one customers install on their own Odoo, the governance module for MCP Pro, gets a 20 version first, because our customers decide their own timing. The rest follows when someone needs it.
Frequently asked questions
When was Odoo 20 released?
On 24 September 2026, at Odoo Experience in Brussels. Odoo Online customers are expected to get it in December 2026 or January 2027.
Is Odoo 19 still supported?
Yes. Standard support for Odoo 19 runs until September 2028. Odoo 17 support ended in September 2026.
Do I have to upgrade to Odoo 20?
No, unless you are on Odoo Online, where Odoo schedules the upgrade for you. On Odoo.sh or your own server you decide, and most companies on 19 can wait until 2027.
What does a light user cost in Odoo 20?
€7.90 per user per month. Light users exist from Odoo 20, and every active employee without a login counts as one.
Can I use my own OpenAI key in Odoo 20?
No. Odoo 19 Enterprise let you enter your own ChatGPT or Gemini key. In Odoo 20 all built-in AI runs on credits you buy from Odoo.
Does Odoo 20 Community have AI?
No. The Odoo 20 Community package contains no AI or MCP module. All AI modules are Enterprise.
The short version
Odoo 20 is a good release that costs more. Upgrade when a feature earns back the higher bill and your connectors are ready. For most companies on 19 that is 2027. If you are unsure where your company fits in the table above, talk to Pantalytics.
Sources
- Odoo 20 source code: official packages odoo_20.0.20260930 (Community) and odoo_20.0+e.20260930 (Enterprise), plus branch 20.0 on github.com/odoo/odoo; Odoo 19: 19.0 Community and Enterprise packages
- Our own test: Odoo 19 and 20 Enterprise in Docker with demo data, 30-09-2026
- Odoo Enterprise Agreement v13: https://www.odoo.com/documentation/20.0/legal/terms/enterprise.html
- Odoo pricing: https://www.odoo.com/pricing
- Odoo, "Odoo takes stock of 2026 and unveils its ambitions for 2027": https://www.odoo.com/blog/odoo-news-5/odoo-takes-stock-of-2026-and-unveils-its-ambitions-for-2027-during-odoo-experience-2444
- Odoo 20 release notes (Dutch edition read in full): https://www.odoo.com/nl_NL/odoo-20-release-notes
- Odoo 20 MCP server docs: https://www.odoo.com/documentation/20.0/applications/productivity/ai/mcp_server.html
- Odoo external API (RPC deprecation): https://www.odoo.com/documentation/20.0/developer/reference/external_rpc_api.html
- Odoo It Yourself, "The Good and Bad of Odoo 20": https://www.youtube.com/watch?v=drR3HNWcnd4
- Creuto, Odoo 20 upgrade guide: https://creuto.com/odoo-20-release-upgrade-guide
- iVentureTeam, Odoo 20 release notes breakdown: https://iventureteam.com/odoo-20-release-notes
- co-dex, "Odoo 20: Alle wichtigen Änderungen": https://co-dex.de/articles/odoo-20-aenderungen
- JAIKIN, "Odoo 20 (v20): nouveautés, prix et migration": https://jaikin.eu/blog/odoo-20-nouveautes
- Macopedia, "Odoo 20 is out": https://macopedia.com/en/blog/news/odoo-20-whats-new
- Odive, "Odoo 20: release date, nieuwe features en roadmap": https://odive.be/blog/odoo-20-release-date-roadmap/
- Creyox, "Odoo 19 vs Odoo 20": https://creyox.com/blog
- OCA maintainer-tools #685, migration to 20.0: https://github.com/OCA/maintainer-tools/issues/685
- Odoo forum, "Start with Odoo 20 for a 60 user multi company implementation?" (thread 329563)
- OCA OpenUpgrade: https://github.com/OCA/OpenUpgrade/issues