Odoo S.A. released Odoo 20 at Odoo Experience 2026 in Brussels (September 24–26), where Fabien Pinckaers unveiled it in the opening keynote. It is the new major version, available on Odoo Online, Odoo.sh and on-premise, and the 20.0 branch is now the most active one in odoo/odoo. We also checked the keynote demos against the code: see The opening keynote, checked against the code.
Support window
Odoo’s support table lists Odoo 20.0 with a September 2026 release and standard support planned until September 2029. Three major versions are now under standard support: 18.0, 19.0 and 20.0. Odoo 17.0 dropped out of standard support the same month — see our note on that.
What’s new
The summary below follows the official release notes, which the launch video above walks through. They cover Community and Enterprise together, so some apps mentioned here (Studio, Payroll, Planning, Spreadsheet dashboards and others) are Enterprise-only. We checked every item against the Community code of 20.0: see Checked in the code for what we found and where.
AI
- Agents that act. AI agents can now create and update records, including from an uploaded file such as a PDF. They can also answer questions about a file while you preview it.
- Agents in automations. Automated and scheduled actions can call an agent, and each run is kept as a chat you can review and correct.
- MCP. A database can be connected to outside AI assistants through the Model Context Protocol.
- Model selection. Pick an AI provider and Odoo chooses the model per task.
- Credits. All AI features now consume IAP credits, bought separately from user licences.
Across the interface
- Offline mode. Records can be created, edited, archived and deleted without a connection, and earlier searches can be re-run offline.
- Multi-record drag and drop in list and Kanban views, to reorder records or move them between groups and stages.
- Tax included / excluded switch on sales orders, purchase orders and invoices.
- Shareable searches. A link to the current view keeps its filters and grouping.
- Chatter. Pin messages, filter by messages, notes, activities or tracked changes, and add CC recipients to emails.
- Smaller touches. Either a dot or a comma works as the decimal separator. Duration fields accept
+=2-style edits. A record that cannot be deleted can be archived instead.
Accounting
- Bill line prediction pre-fills product, account, taxes and analytic distribution from earlier bills with the same label.
- Matching rules set payment tolerance and order for automatic invoice and bill reconciliation.
- Bank consistency. Entries that hit bank accounts must now come from bank transactions.
- Exchange differences are consolidated into a single line per invoice.
- Payment states are renamed. On payments, “In Process” becomes “Paid”, and “Paid” becomes “Reconciled”. The payment status of invoices keeps its labels.
- Invoice reminders can be sent manually or set up to run automatically.
- AI financial insights. Ask the AI assistant questions about your own accounting data.
Sales and CRM
- Descriptions instead of products. Sales order lines no longer need a product; a description is enough unless “Mandatory Product” is enabled.
- Quotation sections and templates.
- Sections can be saved as templates.
- Any quotation can be saved as a quotation template.
- Margins and line numbers. Margins can be edited directly on a line, and lines can be numbered on the form, the PDF and the portal.
- Pricing rules.
- Periodic pricing applies rules to specific periods or days of the week.
- Price rules can be set per packaging type.
- Discount codes can be limited to one use per customer.
- Commissions can be based on the amount paid and rolled up into managers’ targets.
- Marketplaces. TikTok and Lazada integrations fetch orders and sync stock.
- CRM.
- Lead generation is based on Dun & Bradstreet data, according to the release notes.
- Auto-assignment rules are more flexible.
- A dropdown switches between team pipelines.
Inventory and Purchase
- Suggested min/max levels for reordering rules, based on demand history.
- Inventory at a past date, with filters kept and a precise timestamp.
- Simplified returns. The return wizard is gone.
- Intercompany flows. One company can resupply another, and orders can be delivered from another company’s warehouse.
- Shipping.
- New ShipStation connector.
- Sendcloud pickup points.
- Prefilled CMR documents for road transport.
- Purchase.
- Default Incoterm per vendor.
- Editable expected arrival dates that keep the vendor’s original date.
- A vendor quality rate based on quality checks.
Manufacturing
- New planning views.
- A Gantt view for work orders with drag-and-drop planning.
- A Kanban view for work orders.
- A redesigned manufacturing order Kanban, grouped by week.
- Continuous production. Quantities are recorded per work order, and later operations can start before earlier ones finish.
- Changing manufacturing orders.
- Split an ongoing manufacturing order.
- Reset a cancelled order to draft, or set a done one back to in progress.
- A single Produce button replaces “Produce” and “Produce All”.
- Flexible consumption is now always on. The setting on bills of materials is gone.
Point of Sale
- Several currencies at checkout in the same point of sale.
- Without the Inventory app. Point of Sale can run with simplified stock that shows a single on-hand quantity per product.
- Service fees, snoozed products and drag-and-drop reordering of products on screen.
- Self-ordering.
- Notes for the kitchen.
- A QR code for ordering and paying after the meal.
- Receipts by WhatsApp or SMS.
- End of session. One global sale replaces the miscellaneous accounting entries.
- Payments and delivery. Mercado Pago terminals, static UPI QR payments, and GrabFood and GoFood delivery integrations.
Website and eCommerce
- AI Website Assistant. It can now build and edit pages, forms and menus from a prompt, or replicate a page from a URL. AI-generated blocks are marked in the editor.
- New building blocks and options. Banners above the header, animated numbers, an age-verification popup, and breadcrumbs on static pages.
HR and Payroll
- Pay runs get a step-by-step workflow, a chatter and test printing.
- Salary tools. Simulate salary from a net amount, and index salaries by a percentage or a fixed amount.
- Work entries removed. Work entry records and the Planning–Payroll integration are gone, and work entry types are merged into time off types.
Discuss
- Call transcripts. Record a call and get a summary of what was said.
- Organising channels. Polls, channel categories and favourite channels.
What developers should check
Several changes in the release notes affect custom modules directly:
- Access rights. Record rules are replaced by a domain set directly on the access right. Custom security rules will need a close look during migration.
- Mail tracking. Tracking values are no longer stored; the tracking message is generated on the fly. Burndown charts and stage durations were moved to the new mechanism. A separate module keeps the old tracking values for those who need them.
- Icons. Font Awesome is replaced by Material Symbols, and an upgrade script migrates icon references. The Font Awesome library still ships in 20.0 for now. Views and templates with custom icons should be checked on a staging copy.
- Many2one fields are now synced with the backend.
- Push notifications no longer go through Firebase.
- Auditing.
- Messages can record the template or view their content came from (with the optional
mail_trackingmodule). - Changes to a user’s groups are logged in the chatter and the server log.
- Messages can record the template or view their content came from (with the optional
- Removed or renamed features to look for in customisations:
- Payroll work entries.
- The flexible-consumption setting.
- The return wizard.
- The standalone Employee Expenses menu.
- The renamed payment statuses.
Checked in the code
We read the Community code of 20.0 for every item above and compared it with 19.0. “Enterprise” means the feature is not in the public code: Enterprise is not public, so we can’t see it there, only that Community doesn’t have it.
Of 68 items: 46 confirmed, 14 enterprise, 3 different, 3 partly, 2 not found.
AI
| Feature | Status | Where | Note |
|---|---|---|---|
| Agents, agents in automations, model selection, credits | Enterprise | — | No AI module in the public code. |
| MCP connection | Enterprise | res_users_views.xml |
Community only offers API keys labelled for MCP use; no MCP server in the public code. |
Across the interface
| Feature | Status | Where | Note |
|---|---|---|---|
| Offline mode | Confirmed | offline_plugin.js |
Writes, archives and deletes are queued while offline. |
| Multi-record drag and drop | Confirmed | multi_drag.js |
Used by the list and Kanban renderers. |
| Tax included / excluded switch | Confirmed | sale_order.py |
document_tax_mode on sales orders, purchase orders and invoices. |
| Shareable searches | Confirmed | search_bar_menu.js |
A “Share” command copies the view URL. |
| Chatter: pinned messages, CC recipients | Confirmed | chatter.xml |
Filtering existed in 19.0; 20.0 filters by messages, notes, activities and changes (efc7cb0f). |
Decimal separator, += durations, archive instead of delete |
Confirmed | c4811517, 22e5bc32, 117ed869 |
Accounting
| Feature | Status | Where | Note |
|---|---|---|---|
| Bill line prediction | Enterprise | 54ac6088 | Community calls the prediction hook only when it exists; the predictor is not public. |
| Matching rules: tolerance and order | Confirmed | account_reconcile_model.py |
The reconciliation screen that applies them is Enterprise. |
| Bank entries only from bank transactions | Not found | 21db1645 | That commit adds an opening-balance chain and a journal per bank account; we found no rule blocking manual bank entries. |
| Exchange differences in one line | Confirmed | c1d37d89 | The payment widget shows one total gain or loss line. |
| Payment states renamed | Confirmed | account_payment.py |
On payments: draft, paid, reconciled. Invoice payment status unchanged. |
| Invoice reminders | Enterprise | — | Follow-ups are not in the public code. |
| AI financial insights | Enterprise | — |
Sales and CRM
| Feature | Status | Where | Note |
|---|---|---|---|
| Lines with a description only, “Mandatory Product” | Confirmed | res_config_settings.py |
|
| Sections saved as templates | Confirmed | sale_order_line.py |
|
| Quotation saved as a template | Confirmed | sale_order_views.xml |
“Save as template”. |
| Editable margins, line numbers | Confirmed | sale_order_line.py |
Line numbers: setting show_sol_numbers. |
| Periodic pricing by period or weekday | Different | fcd78a83 | Community adds a daily-rates calendar that creates one-day rules; no weekday rule in the public code. |
| Price rules per packaging | Confirmed | product_pricelist_item.py |
|
| Discount codes once per customer | Confirmed | loyalty_program.py |
“Once per user”. |
| Commissions | Enterprise | — | |
| TikTok and Lazada | Enterprise | — | |
| Lead generation with Dun & Bradstreet | Different | crm_iap_lead_mining_request.py |
Lead mining already used Dun & Bradstreet in 19.0; website visitor reveal still calls the Clearbit endpoint. Both are paid IAP services. |
| Flexible auto-assignment | Confirmed | crm_team_member.py |
New rotation options per salesperson. |
| Pipeline switcher | Confirmed | dbb59895 |
Inventory and Purchase
| Feature | Status | Where | Note |
|---|---|---|---|
| Suggested min/max levels | Confirmed | f4017100 | Computed from daily demand. |
| Inventory at a past date | Confirmed | 46e15f59 | Date and time picker in the search panel. |
| Return wizard removed | Confirmed | 36b4a0f5 | |
| Resupply from another company | Confirmed | daea38e1 | |
| Deliver from another company’s warehouse | Confirmed | e866e5a2 | |
| ShipStation, Sendcloud pickup points | Enterprise | — | Shipping connectors are not in the public code. |
| Prefilled CMR documents | Confirmed | aa40ed37 | In stock_fleet. |
| Default Incoterm per vendor | Confirmed | f68fd44b | |
| Editable expected arrival | Confirmed | 2ce0107c | A new “Promised Date” keeps the vendor’s date. |
| Vendor quality rate | Enterprise | — | Quality checks are not in the public code. |
Manufacturing
| Feature | Status | Where | Note |
|---|---|---|---|
| Work order Gantt view | Enterprise | — | Community has only the backend hooks. |
| Work order Kanban | Confirmed | 3e59942c | A basic one existed in 19.0; 20.0 redesigns it and groups by work center. |
| Manufacturing order Kanban by week | Confirmed | c4297a82 | |
| Continuous production | Confirmed | mrp_bom.py |
Option on the bill of materials. |
| Split an ongoing order | Confirmed | mrp_production.py |
|
| Reset to draft | Different | mrp_production_views.xml |
Cancelled orders go back to draft; done orders go back to in progress, not to draft. |
| Single Produce button | Confirmed | mrp_production_views.xml |
|
| Flexible consumption always on | Confirmed | mrp_bom.py |
The consumption setting is gone from bills of materials. |
Point of Sale
| Feature | Status | Where | Note |
|---|---|---|---|
| Several currencies at checkout | Confirmed | 940dc6e7 | Currencies per payment method. |
| Without the Inventory app | Confirmed | pos_stock |
Stock moved to pos_stock, installed automatically with Inventory. |
| Service fees, snoozed products, drag and drop | Confirmed | pos_snooze.py |
|
| Self-ordering: notes for the kitchen | Confirmed | cart_page.xml |
The kitchen display is Enterprise. |
| Self-ordering: pay after the meal by QR | Confirmed | 0741e271 | |
| Self-ordering: receipts by WhatsApp or SMS | Partly | pos_self_order_sms |
SMS is in Community; WhatsApp is not in the public code. |
| One global sale at session end | Confirmed | pos_session.py |
|
| Mercado Pago terminals, UPI QR | Confirmed | mercado_pago_pos_request.py |
Mercado Pago existed; it moves to the Orders API. |
| GrabFood and GoFood | Enterprise | — |
Website and eCommerce
| Feature | Status | Where | Note |
|---|---|---|---|
| AI Website Assistant | Enterprise | — | |
| Header banner, animated numbers, age popup, breadcrumbs | Confirmed | s_age_verification_popup.xml |
All four are new in 20.0. |
HR and Payroll
| Feature | Status | Where | Note |
|---|---|---|---|
| Pay runs, salary simulation and indexation | Enterprise | — | Payroll is not in the public code. |
| Work entries removed, types merged into time off types | Partly | d37cf89a | The hr.work.entry records are gone; hr_work_entry keeps types and calendars. The Planning–Payroll bridge is Enterprise. |
Discuss
| Feature | Status | Where | Note |
|---|---|---|---|
| Call transcripts with a summary | Partly | mail_call_artifact.py |
Recording and transcription are in Community; the summary is not in the public code. |
| Polls, channel categories, favourites | Confirmed | discuss_category.py |
For developers
| Feature | Status | Where | Note |
|---|---|---|---|
| Record rules replaced by domains on access rights | Confirmed | ir_access.py |
ir.access with a domain; ir_rule.py is gone. |
| Tracking values no longer stored | Confirmed | mail_tracking |
The old storage moved to the optional mail_tracking module. |
| Material Symbols and the upgrade script | Confirmed | 19.5-00-material-symbols-icons.py |
Font Awesome still ships. |
| Many2one fields synced with the backend | Not found | — | We found no matching change. |
| Push notifications without Firebase | Enterprise | — | Push delivery is not in the public code. |
| Source of message content recorded | Confirmed | e2fbd39b | On messages, with mail_tracking. |
| Group changes logged | Confirmed | res_users.py |
Server log in base, chatter with mail. |
| Removed: work entries, consumption setting, return wizard, Employee Expenses menu | Confirmed | hr_expense_views.xml |
All four are gone in 20.0. |
Community, Enterprise and Online
In short, from the check above:
- In Community (and so also in Enterprise and on Odoo Online): offline mode, the interface changes, sales sections and templates, pricelist and loyalty rules, most of Inventory, Purchase and Manufacturing, Point of Sale including self-ordering, the new website blocks, Discuss polls and categories, and the framework changes for developers.
- Enterprise only: everything AI, bill prediction, follow-up reminders, commissions, marketplaces, shipping connectors, quality, the work order Gantt view, Payroll and the AI website builder. Some Community features also need an Enterprise screen to be useful, such as matching rules without the reconciliation view.
- Different from the release notes in the Community code: periodic pricing (no weekday rules), Dun & Bradstreet (already used in 19.0) and resetting manufacturing orders (done orders go back to in progress, not draft).
The opening keynote, checked against the code
The keynote ran over two mornings. On September 24 Fabien Pinckaers took an imaginary family furniture store through Odoo 20, app by app, and a speaker from Odoo’s accounting team showed the new accounting. On September 25 the same story was told through industry packages: a padel club that grows into a cafeteria, a hotel and a bar, with an accounting firm and a payroll partner working in the client’s database. Both parts are demos on a live database. Many of the features shown are Enterprise, so for this section we also read the Enterprise code of 20.0 and compared both with 19.0.
What the keynote showed beyond the release notes
- Website. The AI configurator suggests a brand style and colour palette from the business type and builds the first pages (44:00). The AI assistant writes custom JavaScript, such as a counter that animates, but only after you allow it to (49:00). It also builds a page from a prompt and asks for a style first (50:00). Shapes between sections take the colour of the next section (48:00).
- eCommerce. AI product photos (52:50), shop search on variant values such as a colour or a fabric (54:00), a donation block in the cart and in-store pickup (55:00).
- Interface and Discuss. A lighter, rounder design (55:40), polls in channels and an instant meeting (58:30).
- CRM and Odoo Phone. The AI answers with live forecast and lead views that you can filter further (59:50). You can buy a phone number inside Odoo (1:06:00) and draw an inbound call flow with a menu, text-to-speech, opening hours and groups (1:08:30).
- Sales. A KPI bar over the quotations list (1:15:00). Section quantities that scale every line in the section (1:18:10), images on lines (1:19:50), and a Services and Materials menu for billing extra items (1:24:00).
- Project and Timesheets. The AI creates a project and its tasks from a PDF (1:20:50), and projects get a map tab (1:22:50). A timesheet timer works from any screen (1:26:30). The Timesheet Assistant suggests entries from what you did on your computer, and the speaker says nothing leaves the machine (1:27:20).
- Purchase and Manufacturing. Suggested min/max levels from recent demand, with the days of stock to cover (1:35:50). A “used in” list for components (1:38:10), and work order planning in a Kanban where reordering cards recomputes the dates (1:39:50).
- HR and Payroll. The salary configurator with online signature (1:46:50) and a first-time payroll setup (1:48:50). In part two, a payroll consultant works through Belgian warnings on the payroll dashboard (1:44:30).
- Accounting. A KPI dashboard (1:57:40). E-invoices that link bills to fleet vehicles (1:59:10) and predict analytic distribution (1:59:40). Several depreciation boards per asset (2:02:30), paying bills straight from Odoo through your bank (2:04:20), and new reports: currency translation adjustment, indirect cash flow and intercompany comparison (2:11:00).
- Point of Sale. A floor plan editor with decor (2:13:30), a bookings list (2:14:40) and combo suggestions from items already ordered (2:15:50).
- AI. AI sessions that show up in Discuss, reports the AI opens as live views (2:22:40), the MCP server (2:26:00, see our MCP post) and agents with skills, knowledge and triggers (2:32:00).
- Offline. In 20 you can also edit offline, and the changes sync when the connection is back (2:43:00).
- Industries and accounting firms (part two). An Industries tab in Apps (44:40), a hotel package (1:36:00) and Field Service on Planning (1:32:50). An accounting firm runs its clients from the Databases app (1:51:00), with VAT return checks and year-end working files (1:57:00, 2:01:30).
- Pricing closed part one (2:45:00). The speaker said the One App Free and Standard plans keep their prices, the Custom plan goes up by about 20%, and a light user costs about €7.90. Light users get their own post: Light users in Odoo 20.
Claim by claim
Of 81 claims we could tie to code: 27 confirmed in Community, 35 confirmed in Enterprise, 13 partly, 1 different, 4 not found, 1 not checkable. “New in 20” compares with the 19.0 code: No means the feature was shown as part of Odoo 20 but already existed in 19.0. Enterprise features are named by module only; the Enterprise code is not public. In the table above, “Enterprise” rows were checked against Community only. Business figures from the stage (26 million users, more than 75,000 companies using Odoo as their Peppol access point, 20 million invoices, 518 million companies for lead generation, 2,000 accounting firms) can’t be checked in code and are not in the count.
Website and eCommerce
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| AI website setup: brand style, palette, first pages | Confirmed (Enterprise) | Yes | ai_website |
Brand kit with palettes and style presets. |
| AI asks before writing JavaScript | Confirmed (Enterprise) | Yes | ai_website |
An AI JavaScript setting; when it is off, the AI asks first. |
| AI page from a prompt, style question first | Confirmed (Enterprise) | Yes | ai_website |
|
| AI adds a text shadow on its own | Not found | — | — | The builder has text effects you set by hand; no AI rule for it. |
| Shape takes the colour of the next section | Confirmed | Yes | background_shape_option_plugin.js |
Recomputed when sections move. |
| AI product image: generate or enhance | Confirmed (Enterprise) | — | ai_website_sale |
Uploading a logo as input not checked. |
| Shop search on variant values | Confirmed | Yes | product_template.py |
Attribute values and variant barcodes are searched; 19.0 searched names, references and descriptions. |
| Several thumbnails per variant | Confirmed | No | product_attribute.py |
|
| Donation block in the cart | Confirmed | No | cart_templates.xml |
Editable cart zones existed; the donation block moved from website_payment to website_sale. |
| In-store pickup with stock and a pickup date | Partly | No | website_sale_collect |
Stock per store is shown, as in 19.0; no pickup date choice. |
Interface, AI and offline
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| Lighter, rounder interface | Confirmed | Yes | a243283b | “Base visual refresh”. |
| Polls and instant meetings in Discuss | Confirmed | Yes | mail_poll.py |
The AI and WhatsApp tabs come from Enterprise apps. |
| AI sessions listed in Discuss | Confirmed (Enterprise) | — | ai |
|
| AI opens live pivot and graph views | Confirmed (Enterprise) | — | ai |
|
| AI forecast of opportunities | Partly | — | ai_crm |
No forecast skill; the answer comes from the generic search and view tools. |
| AI cash flow statement | Confirmed (Enterprise) | Yes | ai_account_reports |
|
| MCP server for outside AI clients | Confirmed (Enterprise) | Yes | ai_mcp |
Details in our MCP post. |
| Agents with skills, knowledge and triggers | Confirmed (Enterprise) | Yes | ai_agentic |
Image generation, web search and self-update skills; Documents and Knowledge as sources. |
| AI creates a project and tasks from a PDF, asks before writing | Confirmed (Enterprise) | — | ai, ai_project |
The PDF flow itself was not run. |
| AI included at no extra cost | Different | — | ai |
The code consumes IAP credits and stops when they run out, as the release notes say. |
| AI finds price negotiation opportunities | Partly | — | ai_purchase |
Only a generic prompt; the analysis comes from the generic database tools. |
| Edit offline, sync later | Confirmed | Yes | offline_plugin.js |
19.0 could only show cached pages offline. |
| Dashboards are spreadsheets, with carousels | Confirmed | No | o_spreadsheet.js |
Both existed in 19.0; data views in carousels are extended in 20. |
CRM and Odoo Phone
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| Lead generation by country, industry and size; website visitors to leads | Confirmed | No | crm_iap_lead_mining_request.py |
Paid IAP services. |
| Business card scan creates a lead | Confirmed (Enterprise) | No | crm_enterprise |
|
| Gmail and Outlook plugin | Confirmed | No | mail_plugin |
Presented as new; the add-in existed before. Tickets come from Enterprise Helpdesk. |
| Buy a phone number in Odoo | Confirmed (Enterprise) | Yes | voip |
Local, mobile, national or toll-free, priced in credits, with a regulatory step. |
| Call flow editor | Confirmed (Enterprise) | Yes | voip |
Menu, audio and text-to-speech, time conditions, user, group, queue, voicemail. |
| Recording, hold, transfer, picture-in-picture, transcript | Confirmed (Enterprise) | Partly | voip, voip_ai |
Transcription existed in 19. No click-to-jump in the transcript and no call log on purchase orders found. |
Sales
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| KPI bar over quotations | Confirmed | Yes | dashboard.js |
To confirm, to deliver, to invoice; 7, 30 and 90 days. |
| Section quantity scales its lines | Confirmed | Yes | sale_order_template_line.py |
section_qty, with a unit of measure. |
| Product images on order lines | Confirmed | Yes | 13e1544f | A setting. |
| Quote calculator spreadsheet | Confirmed (Enterprise) | No | spreadsheet_sale_management |
|
| Services and Materials menu | Confirmed | Yes | sale_menus.xml |
Behind its own access group. |
Project and Timesheets
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| Map tab on projects | Confirmed | Yes | project_project_views.xml |
A Google Maps frame of the customer’s address. |
| Estimated versus actual costs | Partly | — | project_account_budget |
Planned against actual comes from budgets; no dedicated cost panel found. |
| Timesheet timer from any screen | Confirmed (Enterprise) | Yes | timesheet_grid |
A timesheet menu in the top bar. |
| Timesheet Assistant | Confirmed (Enterprise) | Yes | timesheet_grid |
The browser reads a local ActivityWatch server on the user’s computer. |
| End-of-day reminder | Partly | No | timesheet_grid |
Employee and approver reminders exist, as in 19.0; no end-of-day one. |
| Billing targets and leaderboard | Confirmed (Enterprise) | No | sale_timesheet_enterprise |
Purchase, Inventory and Manufacturing
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| Suggested min/max with days of stock and a lead-time warning | Partly | Yes | f4017100 | Demand period and a percentage are there; days of stock and the colour warning were not found. |
| “Used in” list for components | Confirmed | Yes | mrp_bom_views.xml |
19.0 had only a count. |
| Work order Kanban: reorder, dates follow | Confirmed | Yes | 3e59942c | Moving a card takes the start date of the next one. |
| Shop Floor: badge scan, quality checks | Confirmed (Enterprise) | No | mrp_workorder |
HR and Payroll
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| Belgian salary configurator, online signature | Confirmed (Enterprise) | No | hr_contract_salary, l10n_be_hr_contract_salary |
|
| Payroll setup and dashboard | Confirmed (Enterprise) | Yes | hr_payroll |
|
| A new employee’s payslips wait for review | Partly | Yes | hr_payroll |
The review state is new; it blocks payslips only if the warning’s Block Payslips option is on, which is off by default. |
| Belgian warnings: minimum wage, joint committee, establishment unit | Confirmed (Enterprise) | Yes | l10n_be_hr_payroll |
With an Adjust Wage action. |
| Meal vouchers through Monizze | Not found | — | l10n_be_hr_payroll |
A monthly meal-voucher file exists; no Monizze integration. DmfA, DRS, Dimona and 274 declarations are there. |
Accounting
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| KPI dashboard | Confirmed | Yes | ce8557f2 | |
| E-invoice bills posted automatically, duplicates held | Confirmed | No | account_move.py |
|
| Bill linked to a fleet vehicle from the e-invoice | Confirmed | Yes | a169df38 | Matched by VIN or plate. |
| Analytic distribution predicted | Confirmed (Enterprise) | Yes | account_accountant |
|
| Lines grouped by account and tax, remembered per vendor | Partly | No | account_move.py |
Grouping existed in 19.0; no per-vendor memory found. |
| Deferral dates from the e-invoice, deferral account per expense account | Confirmed | Partly | account_edi_common.py |
Dates were imported in 19.0; the account per expense account is new (Enterprise). |
| Studio fields filled from the e-invoice | Confirmed | No | ubl_20_optional_fields.py |
|
| Several depreciation boards per asset | Confirmed (Enterprise) | Yes | account_asset |
|
| Start depreciating an asset under construction | Confirmed (Enterprise) | Yes | account_asset |
A wizard closes the old asset and creates the new one. |
| Pay now through the bank | Confirmed (Enterprise) | No | account_online_payment |
The module existed in 19.0. |
| Columns per company out of the box | Partly | — | account_reports |
The built-in horizontal group is by ledger; per-company columns not found. |
| Currency translation adjustment line | Confirmed (Enterprise) | Yes | account_reports |
|
| Indirect cash flow statement | Confirmed (Enterprise) | Yes | account_reports |
19.0 had only the direct method. |
| Intercompany comparison | Confirmed (Enterprise) | Yes | account_reports |
Accounting firms
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| Databases app with KPIs across clients | Confirmed (Enterprise) | No | databases |
Online, Odoo.sh and on-premise. |
| AI sorts the inbox into folders | Partly | No | ai_documents |
Sorting existed in 19.0; the reason is not logged in the chatter. |
| Ask a client for a document | Confirmed (Enterprise) | — | documents |
|
| Validate several bank transactions at once | Partly | — | account_accountant |
Bulk validate is there; an activity on several transactions was not found. |
| AI checks the VAT return against local rules | Not found | — | l10n_be_reports |
The Belgian checklist has a deductibility item, but it is a manual check. |
| Tax overview by fiscal position and country | Not found | — | account_reports |
The payment QR code on the return existed in 19.0. |
| Year-end working files with checks | Confirmed (Enterprise) | Yes | account_reports, account_reports_spreadsheet |
Audit cycles, check templates, a linked spreadsheet. |
| Annual report with your own text | Partly | No | account_reports |
The annual statements are as in 19.0; no free-text pages found. |
Point of Sale
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| Floor plan editor with decor | Confirmed | Yes | add_decor_popup.xml |
|
| Bookings list with guest notes | Confirmed (Enterprise) | No | pos_restaurant_appointment |
Guest notes not found; tables are reassigned by long press. |
| Combo suggestion | Confirmed | Yes | combo_suggestion.js |
|
| Snooze a product | Confirmed | Yes | pos_snooze.py |
For 1, 2 or 4 hours or until the session ends; self-ordering respects it. |
| Self-ordering by QR code and kiosk | Confirmed | No | pos_config.py |
Industries and other apps
| Claim | Status | New in 20 | Where | Note |
|---|---|---|---|---|
| Industries tab in Apps | Confirmed | — | ir_module.py |
Packages come from the Odoo Apps server, not from the code; the count of 105 can’t be checked. |
| Hotel package | Not checkable | — | — | An industry package, not in Community or Enterprise. |
| Membership with a card scanned at the front desk | Partly | No | product_template.py |
A membership product with a member pricelist exists; the emailed card and the kiosk scan were not found. |
| Field Service on Planning | Confirmed (Enterprise) | Yes | planning_field_service |
19.0 used industry_fsm. |
| ESG app with emission factor databases | Confirmed (Enterprise) | — | esg, ai_esg |
Shown in the video before the keynote. |
What to take from it
- Much of the demo was already in 19. The salary configurator, the Gmail and Outlook plugin, lead generation, the Databases app, payment initiation and self-ordering were shown in an Odoo 20 story, but all of them were in 19.0. That matters if you are deciding whether to upgrade.
- Clearly new in 20: buying numbers and call flows in Odoo Phone, the Timesheet Assistant, section quantities, the Sales KPI bar, the work order planning Kanban, the floor plan editor and combo suggestions, offline editing, AI agents with skills, MCP, and the new consolidation reports.
- Not as shown: AI still uses IAP credits; we found no AI check of VAT returns, no Monizze integration and no end-of-day timesheet reminder. These may come from services outside the code or arrive later. We will update this section if they appear in
20.0.
We track every week’s commits to 20.0 on the Odoo 20 page, and migration-relevant changes are flagged in each weekly digest.