Odoo 20 Accounting in Saudi Arabia: What Changes for ZATCA and VAT
Odoo 20 accounting brings Saudi companies one of the release's largest localization updates, with ZATCA inside the Send wizard and new invoice fields, plus SAMA exchange rates and stricter bank controls. Here is what changes for finance teams.
Published 2026-10-06 · METCH
Odoo 20 accounting in Saudi Arabia: what changed and why now
Odoo 20 was released in September 2026, and for Saudi companies it carries one of the largest localization updates in the release, running from ZATCA e-invoicing through to payroll (GOSI and end-of-service rules). This guide stays on the finance side: what your accountants, payables staff and finance managers will see differently after upgrading. The basics of Phase 2 itself, such as clearance, reporting and cryptographic stamps, are in our ZATCA Phase 2 guide; here we cover only what Odoo 20 changes.
Timing matters this year because of how Odoo supports its versions. Each major version gets three years of standard support:
- Odoo 20: until September 2029 (planned)
- Odoo 19: until September 2028 (planned)
- Odoo 18: until September 2027 (planned)
- Odoo 17: standard support ended in September 2026
You can upgrade from any version to a major version that is still under standard support, or whose support ended less than six months ago. Odoo Online databases running a major version must upgrade every two years. With an Odoo Enterprise subscription the upgrade itself is free, covering standard apps, Studio customizations and custom modules under a maintenance contract.
For a Saudi company still on Odoo 17 or older, the question is no longer whether to upgrade but when. Ideally, pick a quiet window away from VAT return filing and the year-end close.
Less typing, fewer mistakes in everyday bookkeeping
Vendor bills are where much of the manual entry happens, and this is where Odoo 20 saves the most typing. When a bill is entered by hand or imported, bill line prediction looks at your bill history and the line label, then pre-fills the product, account, tax, analytic distribution and even the vehicle. For a recurring supplier such as your freight forwarder or maintenance contractor, the 15% input VAT and the right expense account are typically already on the line, so the clerk reviews instead of typing.
Other entry changes worth knowing:
- Duplicate warnings come in two levels: red when a bill or invoice is almost certainly a duplicate, yellow when it deserves a look before posting. They arrived in Odoo 19, so they are new if you upgrade from 18 or older.
- Vendor bills and expense receipts can be shared from a phone straight into Odoo to be digitized.
- Any list view offers Reset to Draft for many entries at once, and an invoice's journal items can be split from the smart button.
The change your sales and purchasing teams will notice most is a Tax Included / Tax Excluded switch on sales orders, purchase orders and invoices. A showroom or consumer quote can show prices that already contain 15% VAT, so 115 riyals reads as 100 riyals net plus 15 riyals tax, while a quotation to a corporate buyer stays tax-excluded.
Bank, payments and reconciliation: tighter controls
Odoo 20 tightens the link between your books and your bank. Any entry that hits a bank account now has to originate from a bank transaction, so manual bank journal entries are no longer allowed. Reconciliation gets new tools:
- A bank reconciliation summary report of reconciled and unreconciled transactions at the period end date.
- A Run Auto Reconciliation option to re-trigger matching by hand.
- Easier splitting of one bank transaction across several accounts.
- Matching Rules with a payment tolerance and a matching order.
- Manual reconciliation on any account; the Allow Reconciliation box is now called Payment Reconciliation.
Payment statuses are renamed: In Process becomes Paid, and Paid becomes Reconciled. The payment wizard spots payments still in the new Paid (not yet reconciled) status, subtracts them from the amount due and lists outstanding payments by date, so the same supplier is not paid twice. Cash journals can be secured with entry hashing on reconciliation, which suits branches that handle petty cash.
For importers paying suppliers in US dollars, euros or yuan, Odoo 20 can now pull exchange rates directly from the Saudi Central Bank (SAMA).
Bills can also be paid from Odoo, singly or in batches with one signature, through the new payment initiation service provider (PISP) interface. Availability depends on your country and your bank's provider: Odoo's documentation walks through it with Ponto, using SEPA Credit Transfer, the euro payment scheme. Confirm with your bank before planning on it, and until then keep paying through your bank's usual channels.
Saudi localization: ZATCA in the Send wizard and new invoice fields
This is where Odoo 20 is most Saudi-specific. ZATCA synchronization now lives inside the Send wizard you already use for invoices:
- Pre-check validations show in a banner before sending, so a missing field is caught early.
- Sync history is kept in a new ZATCA tab.
- Invoices can be sent to ZATCA in batches from the list view.
- A ZATCA timeout or outage no longer blocks invoicing.
The invoice form gains new fields. You set the invoice type (Tax or Simplified) and the transaction type (Export, Summary or Nominal) on the invoice itself, which decides whether it follows the B2B or B2C path. A Supply End Date field under Other Info serves nominal invoices and continuous supplies such as monthly service contracts, and the printed invoice now shows a line-level Discount Amount column.
Master data gets stricter too. Building Number and Secondary Number in the national address must each be exactly four digits, which avoids XML rejections. Contacts can carry several identifiers, including national ID, Iqama and GCC ID, so resident and Gulf customers are recorded properly. Tax-exemption reasons include VATEX-SA-OOS for out-of-scope supplies, rounding is handled at document level, and the regions list now matches the Kingdom's 13 regions.
If your database is on Odoo 16 or earlier, the upgrade also brings items that predate Odoo 20, such as the invoice date serving as the official ZATCA issue date.
Before you upgrade: a Saudi finance checklist
Most upgrade surprises in accounting come from renamed statuses and removed workarounds, not new features. Work through this list on a copy of your database first:
- Update reports, saved filters and staff guides for the new payment statuses: Paid now means what In Process meant, and Reconciled replaces Paid.
- Find manual bank journal entries and the processes behind them, because Odoo 20 no longer accepts them.
- Check how account groups carried over to parent accounts, which now structure the chart of accounts; account codes become optional. The Saudi localization also reworked its expense accounts, so compare your chart with the updated one.
- Audit default taxes against fiscal positions. A default tax outside the invoice's fiscal position is removed, even with no replacement, which matters for export, zero-rated and exempt positions.
- Review fixed assets: asset models become depreciation models, with setup moved to the asset accounts.
- Brief the accountants who post expenses: the Employee Expenses menu is gone, and approved expenses now become draft vendor bills in the default expense journal.
- Clean contact data: four-digit building and secondary numbers, and the right ID type on each contact.
- Budget IAP credits if your team will use AI features.
Odoo's free upgrade does not cover data cleaning, in-house or third-party modules without a maintenance contract, or training. METCH's team in Riyadh covers that gap in three steps: an upgrade assessment, a test on a copy of your database, then training and a planned go-live. A free consultation is a good place to start.
Frequently asked questions
Do we have to move to Odoo 20 now, and is the upgrade free?
It depends on your current version and hosting. Standard support for Odoo 17 ended in September 2026, and Odoo Online databases on a major version must upgrade every two years. On an Odoo Enterprise subscription, Odoo upgrades standard apps, Studio customizations and custom modules under a maintenance contract at no charge. That service does not include data cleaning, in-house or third-party modules without a maintenance contract, or training.
Will our payment reports change after upgrading?
Yes. The In Process status is now called Paid, and Paid is now called Reconciled. Update any saved filter, dashboard or staff guide that relies on the old names. The manual Mark as Reconciled button has also moved to the action menu.
Does Odoo 20 change how we send invoices to ZATCA?
Yes. ZATCA sync now runs from the Send wizard, with pre-check validations in a banner, a ZATCA tab for sync history and batch sending from the list view. A ZATCA timeout or outage no longer blocks invoicing, and the invoice type and transaction type are set directly on the invoice form.
Can we pay supplier bills from Odoo 20 through our Saudi bank?
Do not count on it yet. Odoo 20 can pay bills singly or in batches through payment initiation service providers (PISP), but availability depends on the country and the provider. Odoo's documentation walks through it with Ponto, which uses SEPA Credit Transfer, the euro payment scheme. Check with your bank first, and keep paying through its usual channels until it is confirmed.
Need help with this?
METCH is a certified Odoo partner in Saudi Arabia — book a free consultation.
Get a proposal