沙特阿拉伯

模块

The following modules related to the Saudi Arabian localization are available:

名称

技术名称

说明

沙特阿拉伯 - 会计制度

l10n_sa

Default fiscal localization package for Saudi Arabia with Phase 1 QR code support.

Saudi Arabia - Accounting Reports

l10n_sa_reports

Accounting reports for Saudi Arabia

沙特阿拉伯 - 电子发票

l10n_sa_edi

Enables ZATCA Phase 2 API integration for e-invoicing compliance.

Saudi Arabia - E-invoicing (Simplified)

l10n_sa_edi_pos

Enables e-invoicing through PoS.

沙特阿拉伯 - 销售点

l10n_sa_pos

Adds compliance fields and behavior for PoS invoices.

Saudi Arabia - Withholding Tax

l10n_sa_withholding_tax

Forces the installation of the Withholding Tax on Payment module.

注解

The localization’s core modules are installed automatically with the localization. The rest can be manually installed.

Localization overview

The Saudi Arabian localization package ensures compliance with Saudi Arabian fiscal and accounting regulations. It includes tools for managing taxes, fiscal positions, reporting, and a predefined chart of accounts tailored to Saudi Arabia’s standards.

The Saudi Arabian localization package provides the following key features to ensure compliance with local fiscal and accounting regulations:

税率

The Saudi Arabian localization includes preconfigured sales, purchase, and withholding taxes:

  • Standard VAT (15%): The prevailing rate applied to the majority of goods and services supplied within the Kingdom.
    The supplier charges 15% VAT on the sale (Output VAT) and is generally entitled to deduct the VAT paid on its business purchases (Input VAT).

    Example

    Most commercial sales, retail goods, telecommunication services, non-exempt private education, and non-exempt private healthcare.

  • Zero-rated VAT (0%): These are taxable supplies where the rate of tax applied is 0%.
    The supplier charges no VAT on the sale, but, critically, is fully entitled to recover the input VAT paid on costs related to making those supplies.

    Example

    • Exports: Supplies of goods and services to a non-GCC resident or for consumption outside the Kingdom.

    • International transport: Services for the international transport of passengers and goods, and related services.

    • Specific goods: Supplies of qualifying medicines and qualifying medical equipment, as specified by ZATCA/Ministry of Health.

    • Residential property: First supply of a new residential building/property to a Saudi citizen, up to a value of SAR 1,000,000 (subject to specific conditions).

    • Investment metals: Qualifying gold, silver, and platinum of 99% purity or higher (supplied for investment).

  • Exempt transactions: These transactions fall outside the scope of VAT, meaning they are not subject to the tax.
    The supplier does not charge any VAT on the sale and is not entitled to recover the input VAT paid on costs related to making these supplies (resulting in an unrecoverable cost).

    Example

    • Financial services: interest on loans, provision of credit, operations of current/deposit/savings accounts, issuance or transfer of money or securities, and life insurance.

    • Real estate: bare rental (leasing) of residential property.

  • Import VAT: VAT is levied on goods brought into the Kingdom from a non-GCC country.
    VAT is typically calculated at the standard rate (15%) and is paid to the Customs Authority at the point of importation.

重要

When assigning discounts to invoices, assign a 15% tax on the line containing a global discount to comply with ZATCA rules.

Reverse charge mechanism (RCM)

  • Description: Mechanism that shifts the responsibility for accounting for VAT from the non-resident supplier to the resident recipient of the goods or services.

  • Mechanism: The VAT-registered recipient must calculate and account for the VAT (as both output VAT and input VAT) in their VAT return. This typically results in a net zero effect on the VAT return, provided the input tax is fully deductible.

  • Application: Primarily used for B2B supplies of services from a non-resident supplier to a VAT-registered business in Saudi Arabia.

预提税/预扣税

There are two available methods for calculating withholding tax: gross and deducted.

  • Gross withholding: This is the primary configuration, where the withholding amount is calculated in addition to the bill total. For example, if the total bill is entered as 115 SAR, the system calculates the base plus Withholding Tax (WHT) without reducing the payment amount.

  • Deducted withholding: It reduces the payable amount by the withholding amount directly, meaning the total payment reflects the deduction upfront. This affects how the accounting entries and payable lines are booked, as seen in the comparison screenshots provided.

注解

Deducted withholding taxes are not enabled by default. To activate it, go to Accounting –> Configuration –> Taxes and enable the relevant withholding tax.

The following Withholding Tax (WHT) configurations are preloaded and available for use:

  • 5% Withholding Tax: Applied on payments for rent, dividends, technical and consulting services, air and maritime freight, as well as interest, insurance, and reinsurance premiums.

  • 15% Withholding Tax: Applies to royalties and other general service payments made to non-residents.

  • 20% Withholding Tax: Reserved for management fees and specific high-value service payments.

Tax reporting

The VAT and Withholding Return provide a detailed breakdown of taxable, zero-rated, exempt, and withholding transactions. Like other financial reports, the VAT and Withholding Return can be filtered by period, compared against other periods, and exported in Excel and PDF formats, ensuring compliance with Saudi Arabia tax laws.

Company and contacts

To ensure proper integration with ZATCA, the following fields are required on the company record:

  • Company Name (must match exactly VAT certificate)

  • All relevant Address fields, including the District, Building Number, and Plot Identification

  • Identification Scheme

    • Tax Identification Number

    • Commercial Registration Number

    • Momra License

    • MLSD License

    • 700 Number

    • Sagia License

  • VAT Number

  • Currency must be set to SAR.

重要

All fields must be completed accurately to avoid rejection during ZATCA onboarding.

注解

The same configuration applies to all relevant contact forms.

Branches configuration

Set up your company branches in compliance with ZATCA rules.

重要

On the branch contact form, enter the same VAT Number as the parent company and enter the branch Commercial Registration Number (CRN) in the Identification Scheme field.

注解

Either use the parent company’s sales journal to follow a centralized billing system model, or onboard a new branch-specific journal to set up a multi-threaded system with parallel invoice processing.

Invoicing language

Invoices can be issued in different languages to meet regional or customer-specific requirements at two levels:

  • Customer level: To assign a preferred language to a customer, go to Accounting ‣ Customers ‣ Customers or Point of Sale ‣ Orders ‣ Customers, and open the relevant customer form. In the Language field, update the language. All documents are then automatically generated in the selected language for that customer.

    重要

    Saudi Arabia’s VAT regulations require Tax Invoices and Simplified Tax Invoices (along with corresponding credit notes or debit notes) to be in Arabic, mandatorily. Invoices can be bilingual, including English.

  • Company level: To add Arabic as a secondary language to meet Saudi Arabia VAT regulations:

    • For Tax Invoices: Go to Accounting ‣ Configuration ‣ Settings, in the Fiscal Localization section.

    • For Point of Sale receipts: Go to Point of Sale ‣ Configuration ‣ Settings, and navigate to the Bills & Receipts section.

    Then, enable the Gulf Cooperation Council Format option, and Save.

Electronic invoicing with ZATCA

The ZATCA e-invoicing system is designed to streamline and digitize the invoicing process for businesses operating in Saudi Arabia.

ZATCA Phase 2 employs a clearance e-invoicing model for Business-to-Business (B2B) transactions. Conversely, for Business-to-Consumer (B2C) transactions, Odoo generates a QR code and subsequently reports these transactions to the Fatoora reporting endpoint.

In a B2B scenario, a Tax Invoice is issued, whereas in a B2C scenario, a Simplified Tax Invoice is generated.

Step-by-step process

When onboarding to ZATCA (Phase 2), there are three modes:

  • Sandbox: Common pre-configured testing environment; use it to simulate integration functionality out of the box.

  • Simulation (Pre-Production): User-specific testing environment; use it to simulate your unique integration.

  • Production: Live environment

Sandbox

小技巧

Use VAT Number 399999999900003 on your company setup for sandbox testing.

  1. Set the database
    Go to Accounting ‣ Configuration ‣ Settings and, in the Saudi Arabia Electronic Invoicing section, ensure the ZATCA API mode is set to Sandbox.
  2. Company information verification
    Make sure all company information is complete.
  3. Onboard sales journals

    • Go to Accounting ‣ Configuration ‣ Journals.

    • Open the Sales journal.

    • Under the ZATCA tab, click Onboard.

    • In the Enter the OTP window, the 6-digit OTP is pre-populated. Click Confirm.

  4. Invoice testing

    • Create and confirm customer invoices.

    • Once the invoice is confirmed, a blue banner appears; click Process now.

    • Ensure the response from the API is Action Successful. If not, review the API response displayed in the chatter and take the appropriate actions.

Simulation (Pre-Production)

  1. Set the database

    • Duplicate your Live/Production database.

    • Go to Accounting ‣ Configuration ‣ Settings and, in the Saudi Arabia Electronic Invoicing section, ensure the ZATCA API mode is set to Simulation (Pre-Production).

  2. Company information verification
    Make sure all company information is complete.
  3. Onboard sales journals

    • Go to Accounting ‣ Configuration ‣ Journals.

    • Open the Sales journal.

    • Under the ZATCA tab, click Onboard.

    • In the Enter the OTP window, enter the 6-digit OTP retrieved from the Fatoora Simulation Portal under the Testing Environment. Then click Confirm.

  4. Invoice testing

    • Create and confirm customer invoices.

    • Once the invoice is confirmed, a blue banner appears; click Process now.

    • Ensure the response from the API is Action Successful. If not, review the API response displayed in the chatter and take the appropriate actions.

注解

Simulation (Pre-Production) mode invoices are not legally valid.

Production

  1. In your Live/Production database
    Go to Accounting ‣ Configuration ‣ Settings and, in the Saudi Arabia Electronic Invoicing section, ensure the ZATCA API mode is set to Production.
  2. Company information verification
    Make sure all company information is complete.
  3. Onboard sales journals

    • Go to Accounting ‣ Configuration ‣ Journals.

    • Open the Sales journal.

    • Under the ZATCA tab, click Onboard.

    • In the Enter the OTP window, enter the 6-digit OTP retrieved from the Fatoora Portal under the Production Environment. Then click Confirm.

  4. Invoice synchronization

    • Create and confirm customer invoices.

    • Once the invoice is confirmed, a blue banner appears; click Process now.

    • Ensure the response from the API is Action Successful. If not, review the API response displayed in the chatter and take the appropriate actions.

注解

Each Sales journal must be onboarded separately.

If a sales journal is no longer needed as a ZATCA solution unit, make sure to revoke it in your Fatoora portal. To do so, click View List of Solutions And Devices, select the relevant solution and device under Revoke CSID, then click Revoke and Confirm.

警告

  • Once the API mode is switched to Production and an invoice is submitted to ZATCA, it cannot be changed back to Sandbox or Simulation (Pre-Production).

  • OTP’s generated from either the Fatoora Simulation or Production portal expire after 60 minutes and need to be regenerated.

Invoice submission to ZATCA

After submitting the invoice to ZATCA, a structured response message is returned by the API in the chatter.

Example

[202] BR-KSA-F-13 : [BR-KSA-F-13] - Please recheck Other Seller/Buyer ID (BT-29 or BT-46) as it contains an invalid value.

Common codes that can be received:

代号

Action

200 – Action Successful

No action required.

202 – Action Successful (with Warnings)

  • Share the warnings with the solution provider to correct them as soon as possible.

  • Warnings are temporarily accepted but may become rejections in the future.

  • Frequent warnings may trigger investigation, education, or auditing by ZATCA.

303 – Clearance Switched Off

Submit the invoice through the reporting flow instead of clearance.

400 – Action Failed (Rejected)

Review the detailed error message, correct the issue, and resubmit.

401 – Unauthorized

  • Check the authentication certificate and secret key.

  • Correct the credentials and resubmit.

413 – Payload Too Large (Invoice Not Received)

Reduce the invoice payload size and resend.

429 – Too Many Requests (Invoice Not Received)

Resend the invoice.

500 – Internal Server Error (Invoice Not Received)

Resend the invoice.

503 – Service Unavailable (Invoice Not Received)

Resend the invoice.

504 – Request Timed Out (Invoice Not Received)

Resend the invoice.

The color of the message displayed in the chatter after an invoice is confirmed and submitted indicates the following information:

  • Green: invoice successfully accepted - The invoice is fully compliant and has been successfully validated by ZATCA.

  • Yellow: invoice accepted with warnings - The invoice is legally valid but was accepted with a warning. The issue should be reviewed and corrected for future submissions.

  • Red: invoice was rejected - The invoice was not accepted by ZATCA and is not legally valid. It must be corrected and resubmitted.

If the invoice is rejected, an error message is displayed in the invoice’s chatter. Correct the underlying issue described in the message description in the invoice or company settings. Then, to resubmit the invoice, click Retry.

重要

  • Invoices rejected by ZATCA remain in a Rejected state and are not considered legally valid.

  • In case of any incidents, technical errors, or emergency matters that prevent the generation of e-invoices/e-receipts, notify ZATCA. Once the issue has been resolved, contact ZATCA again using the same communication channel. For specific failure scenarios, refer to the steps outlined in ZATCA’s guidelines (page 45).

QR code verification

To verify the QR Code on the invoice, scan it using the official ZATCA app.

Once in the app, click Services. In the E-Invoice Validation section, click Start Service. Then, begin scanning the invoices’ QR codes.

注解

  • The QR verification output does not display a currency symbol. The invoice amount is always shown as a plain numeric value, irrespective of the currency used.

  • An invoice with a related contact (e.g., Invoicing Address) is sent to the clearance API (B2B).

Debit and credit notes

To create a credit or debit note, include a ZATCA-approved reason from the ZATCA Reason field in the Credit/Debit window, as required by ZATCA regulations:

  • Cancellation or suspension of the supplies after their occurrence, either wholly or partially.

  • Essential change or amendment in the supply that results in a change to the VAT due.

  • Amendment of the supply value that was pre-agreed between the supplier and the consumer.

  • Goods or services refund.

  • Change in the seller’s or buyer’s information.

小技巧

The ZATCA Reason field is also available in the credit/debit note Other Info tab.

注解

Whenever the credit/debit note is unrelated/independent, fill in the sequential number of the original invoice(s) that the credit/debit note is related to in the Customer Reference field.

Down payments (advance payments)

Handle down payments (advance payments) in compliance with ZATCA’s guidelines.

Retention

Retention is an amount temporarily held by the customer, defined by the commercial contract, to ensure the quality and completion of the work. It is usually a percentage of the invoice value (e.g., 5-10%) and serves as security against future defects; it is ultimately paid back to the contractor once the warranty period expires.

For ZATCA, the commonly applied rule is that VAT is calculated based on the full invoice amount, even if the customer withholds a portion as retention. ZATCA advises taxpayers to first determine the tax position, specifically whether the retention amount reduces the taxable amount or not. Tax position depends on contractual terms.

The Odoo retention workflow ensures, through tax position, that the retention amount does not reduce the taxable amount.

注解

Any negative tax (e.g., -20%) configured with the Is Retention checkbox enabled has no impact on the UBL 2.1. It only applies when this retention tax is used in conjunction with a generic tax (e.g., 15%) on the invoice line and represents a percentage of that invoice line. For example, if a taxpayer wants to retain 20% of the invoiced goods, both the 15% tax and the -20% retention tax would be applied to the invoice line.

Within this same tax position, retention can also be applied at the invoice level as an separate negative invoice line using a 0% (Not Subject to VAT) tax rate.

警告

  • Using a negative tax with Is Retention enabled, along with a generic tax on the invoice line, usually indicates that VAT has been paid on the full taxable amount. Therefore, the final invoice for releasing the retention amount does not qualify as a Tax Invoice and should not be submitted to ZATCA.

  • The 0% (Not Subject to VAT) tax is already preconfigured according to ZATCA rules; do not modify it.

重要

  • When creating a new retention tax, create a Retention tax group and assign it to this newly created retention tax to comply with ZATCA rules.

  • To add the Retention Amount as a note on the invoice line, click Add a note to comply with ZATCA rules. For example - Retention Amount: [retention amount] SAR

Generated documents

Once an invoice is submitted, a UBL 2.1 XML file is generated and sent to ZATCA API endpoints. For auditability, this XML file is stored in the chatter. To display it, click the (attachments) icon.

Additionally, the invoice PDF generated when using Send is displayed in the chatter. Both the XML and PDF files are permanently attached to the invoice and cannot be deleted to ensure compliance with ZATCA regulations.

重要

Successfully ZATCA-submitted invoices can only be reset to draft in Sandbox or Simulation (Pre-Production) modes.

小技巧

To automatically generate a PDF/A-3 with the embedded UBL 2.1, click Send.

Point of sale

ZATCA integration configuration

注解

Make sure the Saudi Arabia - E-invoicing (Simplified) (l10n_sa_edi_pos) module is installed.

PoS orders must be properly reported in compliance with ZATCA Phase 2. To do so, follow these steps:

  • Onboard the Invoices default journal in the PoS settings:

    • Go to Point of Sale ‣ Configuration ‣ Settings. In the yellow banner, select the relevant Point of Sale, then navigate to the Accounting section.

    • In the Default Journals section, find the Invoices field and click the (right arrow) to open the default Sales journal.

    • Under the ZATCA tab, click Onboard.

    • In the Enter the OTP window, enter the 6-digit OTP retrieved from the Fatoora Portal under the Production Environment. Then click Confirm.

  • Assign a customer to the order before finalizing the transaction.

These steps ensure that each receipt is processed as a compliant e-invoice and reported to the ZATCA portal in real time. Once the receipt is generated, the Phase 2 QR code automatically appears on both the printed receipt and the PDF.