Odoo 20 Upgrade in Saudi Arabia: A Step-by-Step Plan

Odoo 20 is out. Here is a practical upgrade plan for Saudi companies: who should move now, Odoo's test-then-production process, custom code and Studio, the breaking changes, and the ZATCA and GOSI checks after go-live.

Published 2026-10-06 · METCH

Odoo 20 upgrade: now or later? Start from your version, hosting and code

Odoo 20 was released in September 2026. For a Saudi company already running Odoo, moving to it is a two-stage project rather than a single click: an upgraded test copy first, then the live database. Urgency depends on where you stand.

Odoo gives each major version three years of standard support. After that, extended support costs an additional fee and is offered only on Odoo.sh, for a limited number of versions, and on-premise. Place yourself with these criteria:

  • On Odoo 17 or older: standard support for 17.0 ended in September 2026, so start now. You can upgrade straight to Odoo 20, although Odoo notes that a smaller version gap is easier.
  • On Odoo Online: Odoo sets the deadline, not the day. You are notified a few weeks ahead and can upgrade any time before it; with no action, the upgrade runs automatically. Request a test copy first.
  • On Odoo 18 or 19: both are still under standard support, so plan an assessment rather than a rush.
  • Heavy custom code: start early, because custom modules can hold back the whole upgrade.
  • Planning to use the AI agents: budget for IAP credits.

ZATCA compliance alone may not force your hand. Several Saudi items in the Odoo 20 release notes, such as using the invoice date as the official ZATCA issuing date, are marked as available from older versions. What you only get by moving includes GOSI integration in payroll, the updated end-of-service rules and ZATCA submission from the Send wizard.

Odoo's official route: a test database first, then production

Odoo's own process is the backbone of the plan:

  • Request an upgraded test database: from the database manager on Odoo Online (Manage, then Upgrade, with the purpose set to Test), through a staging branch on Odoo.sh, or with Odoo's upgrade script on-premise. Odoo's Upgrade page is the main platform for these requests on any hosting type.
  • If you have custom modules, upgrade their source code.
  • Test thoroughly and report problems through Odoo's Support page.
  • Plan the go-live, then request the production upgrade. The database is unavailable while it runs.

Test databases are neutralized: scheduled actions, outgoing mail servers and bank synchronization are disabled, and payment providers and delivery carriers are reset to test mode. Use the copy to check invoice layouts and reports, views, integrations, automated actions and data exports, and read the upgrade report Odoo sends when each request completes. Request fresh copies as you go and rehearse fully the day before go-live. Once an Odoo Online upgrade completes, there is no going back to the previous version.

One Saudi caution: Odoo's Saudi e-invoicing module also neutralizes test copies by switching the ZATCA API mode to Sandbox. Confirm the copy shows Sandbox before anyone confirms an invoice, never switch it back to Production, and never submit real invoices from it. Schedule the production window away from month-end closing and VAT return deadlines.

Custom modules, partner modules and Studio: what the upgrade service covers

With Odoo Enterprise, upgrading to the latest version is free, including support to fix discrepancies. The service covers all standard apps, all Studio customizations as long as Studio is still installed and the subscription is still active, and developments covered by a maintenance-of-customizations subscription. It excludes cleaning existing data and configuration, and in-house or third-party modules without a maintenance contract, including those from Odoo partners.

Odoo states that a database with custom modules cannot be upgraded until a version of those modules exists for the target version, and if a new version breaks a customization, the module's maintainer must fix it. Under the Enterprise agreement, validating the upgraded database is also the customer's responsibility.

Odoo's method starts with a freeze: stop development and challenge each feature against the new standard. These Odoo 20 changes are the likeliest to break custom work:

  • Record rules are removed; a domain is set directly on each access right.
  • Font Awesome icons are replaced by Material Symbols.
  • Stored tracking values are removed.
  • Field Service worksheet templates use property fields instead of Studio fields.
  • Fields created with Studio get more readable technical names.
  • Push notifications move from Firebase to Odoo's own service.

For Saudi databases, compare any custom ZATCA work with the new standard before porting it. Odoo 20 adds invoice and transaction types on the invoice, multiple partner IDs (national ID, Iqama, GCC ID), a Supply End Date field and VATEX-SA-OOS exemption reasons. A custom field that duplicates one of these is a candidate for retirement, not migration.

Before-you-upgrade checklist: Odoo 20 changes to test on your copy

Our Odoo 20 page lists 15 changes to review before upgrading. These are the ones Saudi teams will feel most, with what to check on the test copy:

  • Parent accounts replace account groups, and account codes become optional. Finance: check how your chart-of-accounts reports are structured.
  • Payment statuses are renamed: 'In Process' becomes 'Paid', and 'Paid' becomes 'Reconciled'. Receivables: update guides and any report that filters on status.
  • Journal entries on bank accounts must come from bank transactions. Treasury: replace manual bank entries with statement-based work.
  • Taxes apply only within their fiscal position, and a default tax outside it is removed. Test standard 15% VAT invoices alongside zero-rated exports and invoices for other customers with a fiscal position.
  • Asset models become depreciation models. Review the asset setup after upgrading.
  • Field Service is merged into Planning. Service teams: move technicians and worksheets.
  • Work entries are removed, and their types merge with time-off types. Payroll: re-run leave and pay scenarios.
  • The return wizard is removed. Warehouse: rehearse a customer return end to end.
  • AI features consume IAP credits. Review your IAP services, now listed on the new My Subscription page.

The Saudi localization also reworks its expense accounts, so review your chart and asset configuration rather than assuming the old structure carries over unchanged. And check the work-entry removal against your Saudi payroll setup, including GOSI contributions, end-of-service and sick-leave rules, before the first payslip run.

After go-live: Saudi checks, training and what drives the effort

Once production is on Odoo 20, run a short Saudi checklist before the first full invoicing day:

  • The ZATCA API mode still shows Production, the company currency is still SAR, and every sales journal, including branch and PoS journals, is still onboarded. If one needs onboarding again, the OTP from the Fatoora portal expires after 60 minutes.
  • Contacts have an identification scheme and exactly four-digit Building and Secondary Numbers; Odoo 20 enforces the four digits to prevent XML rejections.
  • Invoice and transaction types are set as expected, and submission works from the Send wizard.
  • In Point of Sale, the ZATCA PDF is generated on demand, when the invoice is first viewed or downloaded.
  • SAMA is selected as the exchange-rate provider if you want Saudi Central Bank rates.
  • Payroll: GOSI integration, end-of-service settings and sick-leave deductions match your policies.

Our ZATCA e-invoicing guide covers Phase 2 setup in more depth.

Odoo's upgrade service explicitly excludes training, so plan it yourself. Brief users on the renamed payment statuses, the new returns flow, Planning for technicians, bank reconciliation from transactions and AI credit use, then update internal guides and report filters.

Effort depends on the version gap, hosting type, number of apps, custom and partner modules and whether they are maintained, Studio work, integrations, data clean-up, the number of companies, branches and ZATCA journals, test cycles and users to train. METCH's team in Riyadh can scope this with you in a free consultation: choose 'Plan my Odoo 20 upgrade' on our Odoo 20 page.

Frequently asked questions

Is upgrading to Odoo 20 free?

With Odoo Enterprise, the upgrade service is included for all standard apps, Studio customizations (while Studio is installed and the subscription is active) and developments under a maintenance-of-customizations subscription. It does not cover in-house or partner modules without a maintenance contract, data clean-up or user training, so those need their own budget.

Can we go straight from Odoo 16 or 17 to Odoo 20?

Yes. Odoo allows upgrading from any version directly to any major version still under standard support, and Odoo 20 qualifies. Odoo also notes that a smaller version gap makes the upgrade easier, so expect more testing from 16 than from 18 or 19. Standard support for 17.0 ended in September 2026.

Will ZATCA e-invoicing keep working after the upgrade to Odoo 20?

It should, but verify it. After go-live, confirm the ZATCA API mode is still Production, every sales journal is still onboarded and contacts meet the four-digit address rule. Never submit real invoices from the test copy. Some Saudi improvements listed for Odoo 20 are also available in older versions.

Do Odoo 20 AI features cost extra?

Yes. In Odoo 20, all AI features consume prepaid credits bought through Odoo's in-app purchase (IAP) service. Enterprise users with a valid subscription get free credits to try IAP features, and the new My Subscription page lists the database's IAP services alongside your plan.

Need help with this?

METCH is a certified Odoo partner in Saudi Arabia — book a free consultation.

Get a proposal