Skip to content
DevMarket
Odoo ModulesWordPress PluginsWordPress ThemesShopify ThemesApp TemplatesScripts & UtilitiesBlogSell on DevMarket
Odoo guides

Odoo for Saudi Arabia: VAT, Arabic, E-Invoicing and Local Setup

Odoo documents a Saudi localisation with VAT taxes, Arabic invoice support and ZATCA e-invoicing modules. See what each part does, what to set on the company, where data can be hosted and what to ask a partner.

By DevMarket EditorialPublished: 9 min read
Odoo for Saudi Arabia: VAT, Arabic, E-Invoicing and Local Setup
On this page

Odoo Saudi Arabia support comes in three parts: a country package with a Saudi chart of accounts and 15% VAT taxes, Arabic with right-to-left layouts, and the ZATCA e-invoicing modules for Phase 1 and Phase 2. This guide describes the Odoo KSA localization as Odoo's 19.0 documentation presents it, as of October 2026, and shows what to configure and what to ask a partner. It is general information, not legal or tax advice. Your business remains responsible for compliance, so confirm the current requirements with ZATCA and your accountant.

In short

  • Odoo documents a Saudi Arabia localisation with a chart of accounts, standard 15% VAT plus zero-rated and exempt taxes, fiscal positions, withholding taxes and a VAT and Withholding Return.
  • Odoo's page says Saudi tax invoices must be in Arabic, with English allowed alongside. A self-hosted server needs the rtlcss package for right-to-left screens.
  • Phase 1 comes with the l10n_sa module and Phase 2 with l10n_sa_edi. The documentation states no edition for them, so confirm with a partner.
  • Odoo's privacy policy lists Saudi Arabia as a production location of its Middle East region, with backups in Europe and Canada.
  • A module is not compliance: you still test, configure the company and follow ZATCA's current rules.

What does the Odoo KSA localization include?

You set Odoo up for Saudi Arabia in layers, in the order shown below, and its Saudi Arabia page lists the modules:

A row of cards joined by arrows from left to right
Set Odoo up in this order: country package, company data, language, then ZATCA testing before any live invoice.
ModuleTechnical nameWhat the documentation says
Saudi Arabia - Accountingl10n_saDefault package, with Phase 1 QR code support
Saudi Arabia - Accounting Reportsl10n_sa_reportsAccounting reports
Saudi Arabia - E-invoicingl10n_sa_ediZATCA Phase 2 API integration
Saudi Arabia - E-invoicing (Simplified)l10n_sa_edi_posE-invoicing through Point of Sale
Saudi Arabia - Point of Salel10n_sa_posCompliance fields for PoS invoices
Saudi Arabia - Withholding Taxl10n_sa_withholding_taxInstalls Withholding Tax on Payment

The core modules install with the localisation, and you add the others from Apps. The package provides a Saudi chart of accounts, preconfigured taxes (standard 15% VAT, zero-rated and exempt), fiscal positions based on registration status, withholding taxes, and a VAT and Withholding Return that exports to Excel or PDF.

Which edition? The page does not say. In Odoo's public Community source on GitHub (19.0 branch, checked on 21 October 2026) we found l10n_sa, l10n_sa_edi, l10n_sa_pos, l10n_sa_edi_pos and l10n_sa_withholding_tax under the LGPL-3 licence, but not l10n_sa_reports. Odoo's editions page lists localisations and reports in its Enterprise-only Accounting row, so the sources do not line up neatly: ask a partner what your plan includes. Our Community vs Enterprise guide has the wider edition picture.

What must you configure on the company?

ZATCA onboarding can be rejected when company data is incomplete. Odoo lists these fields for the company record, and the same applies to the relevant contact forms, so check your customers too:

  • Company Name, at most 63 characters.
  • Every address field, including District, Building Number and Plot Identification.
  • The Identification Scheme (Tax Identification Number, Commercial Registration Number, Momra License, MLSD License, 700 Number or Sagia License) and the VAT Number.
  • Currency set to SAR.

For a branch, enter the parent's VAT Number on the branch contact and the branch's Commercial Registration Number in Identification Scheme. Bill through the parent's sales journal, or onboard a journal per branch.

Does Odoo support Arabic and right-to-left layouts?

Largely yes, but check the result yourself. Odoo's documentation covers three points:

  • Language. Add Arabic in the Settings app (Languages > Add Languages), then set the Language field on the customer form (Accounting > Customers > Customers): Odoo generates that customer's documents in it.
  • Arabic on invoices. The Saudi page says VAT rules require tax invoices, simplified tax invoices and their credit and debit notes to be in Arabic, and allows bilingual invoices with English. To add Arabic as a second language, enable Gulf Cooperation Council Format in Accounting > Configuration > Settings (Customer Invoices), and in Point of Sale > Configuration > Settings (Bills & Receipts) for receipts.
  • Right-to-left layout. On your own server, the source-install guide says Arabic needs the rtlcss package. Our Ubuntu guide shows where it fits.

The documentation does not promise that every screen, report or third-party module looks right in Arabic, so print a real invoice, credit note and point-of-sale receipt and check direction, numbers, fonts and the QR code. Our right-to-left checklist helps.

How does ZATCA e-invoicing work in Odoo?

Phase 1, compliant invoices with a QR code, comes with l10n_sa. Phase 2, the integration with ZATCA's platform, comes with l10n_sa_edi, and l10n_sa_edi_pos covers Point of Sale. ZATCA sets the dates and the waves, as our Phase 2 guide explains. In Odoo's description, a business-to-business sale produces a Tax Invoice that ZATCA clears, and a business-to-consumer sale produces a Simplified Tax Invoice with a QR code, reported to ZATCA's Fatoora endpoint.

Odoo onboards in three modes, set in Accounting > Configuration > Settings (Saudi Arabia Electronic Invoicing, ZATCA API mode):

ModePurposeLegally valid
SandboxShared, pre-configured test environmentNo
Simulation (Pre-Production)Your own test, on a duplicate of the live databaseNo
ProductionLive environmentYes

Onboard every sales journal separately: Accounting > Configuration > Journals, Sales journal, ZATCA tab, Onboard, then enter the 6-digit one-time password (OTP) from ZATCA's Fatoora portal (it expires after 60 minutes; the sandbox pre-fills it). After confirming an invoice, click Process now and check for Action Successful. In the chatter, green means accepted, yellow accepted with warnings (fix them, as warnings may become rejections) and red rejected, which is not legally valid until you correct the cause and click Retry. Once a Production database has submitted an invoice, it cannot return to Sandbox or Simulation. For point of sale, install l10n_sa_edi_pos, onboard the PoS's default invoice journal and assign a customer to every order.

A module is not compliance. The documentation cannot tell you your wave or whether your setup meets ZATCA's current rules. Test your real invoice flows, and have your accountant confirm your position against ZATCA's e-invoicing page.

Where can your Odoo data be hosted?

RouteWhat Odoo saysNotes
Odoo OnlinePrivate databases hosted and managed by OdooThe SLA page lists five regions, including a Middle East one. No custom or Apps Store modules
Odoo.shOdoo's cloud platform, with a Hosting location chosen when you create the projectNeeds an Enterprise subscription that includes Odoo.sh
Your own serverYou install and run OdooAny location you choose. You handle security, backups and updates

Odoo's privacy policy says a database is hosted in the cloud region closest to the customer and can be moved on request, subject to availability. It lists India and Saudi Arabia as production locations for its Middle East & Southern Asia region, with backups in Europe and Canada that you cannot choose or restrict. These can change, so confirm them with Odoo. Whether that suits your data, or whether ZATCA or other rules say where invoice records must be kept, is a question for your lawyer and accountant.

What should you ask an Odoo partner in Saudi Arabia?

Odoo lists implementation partners by country on its partners page. Ask each one, and get the answers in writing:

  • Which Odoo version and edition do you propose, and what does it include for Saudi reports and e-invoicing?
  • Which Saudi companies are live on ZATCA Phase 2 with that version, and can I speak to one?
  • Who handles onboarding and certificate renewals, and who updates the modules when ZATCA changes a specification?
  • How will you test in Sandbox and Simulation, using my invoice types, credit notes and refunds, and where will the database and backups be hosted?

Setup checklist for a Saudi company

  1. Ask your accountant to confirm your VAT status, invoice types and e-invoicing wave, and choose the Odoo version, edition, app and hosting. The accounting guide shows how Invoicing and Accounting differ.
  2. Create the database with Saudi Arabia as the country, check the Package and set the currency to SAR.
  3. Complete the company record: name, address fields, Identification Scheme, VAT Number and branches.
  4. Add Arabic, set customer languages, enable Gulf Cooperation Council Format and print test invoices.
  5. Activate the taxes you use, set them on products and, as Odoo's page advises, apply a 15% tax to any global discount line.
  6. Check that l10n_sa_edi is installed, then test in Sandbox and in Simulation on a duplicate database.
  7. Onboard each sales journal in Production only when your partner and accountant agree, then watch the responses.
  8. Teach staff to correct issued invoices with credit and debit notes, choosing the ZATCA Reason, not by editing them.

Frequently asked questions

Does Odoo support ZATCA Phase 2?

Odoo's documentation describes a Phase 2 integration module, l10n_sa_edi, with Sandbox, Simulation and Production modes. Compliance also depends on your wave, data, setup and ZATCA's current rules, so test and confirm with ZATCA and your accountant.

Can Odoo print invoices in Arabic?

According to Odoo's page, tax invoices must be in Arabic, with bilingual invoices allowed. Use the customer Language field and the Gulf Cooperation Council Format option, then print a real invoice and check it.

Which Odoo version should I use?

Odoo's version table lists 20.0 as released in September 2026, with 19.0 in standard support until September 2028 (planned). On 21 October 2026 the Saudi Arabia page was identical in the 20.0 documentation. Ask your partner to confirm ZATCA support for your version.

What if ZATCA rejects an invoice from Odoo?

Odoo shows ZATCA's response in the invoice's chatter. A rejected invoice is not legally valid, so correct the cause and click Retry.

Next steps

Start with your accountant: VAT status, wave and invoice types. Then read ZATCA e-invoicing phase 2 for online stores and VAT and invoices for online stores in Saudi Arabia. If you are still building the shop, read how to start an online store in Saudi Arabia. DevMarket does not offer ZATCA integration or implementation, and a marketplace listing, ours included, is not evidence that a module meets Phase 2. You can browse Odoo modules for other needs.

Find the right software for the job

Every item on DevMarket has a human-reviewed release, an instant licence key and clear update and support terms.