diff --git a/content/applications/finance/fiscal_localizations/saudi_arabia.rst b/content/applications/finance/fiscal_localizations/saudi_arabia.rst index 778aee69b6..5440b6a824 100644 --- a/content/applications/finance/fiscal_localizations/saudi_arabia.rst +++ b/content/applications/finance/fiscal_localizations/saudi_arabia.rst @@ -2,11 +2,12 @@ Saudi Arabia ============ -Configuration -============= +.. _localizations/saudi-arabia/modules: + +Modules +======= -:ref:`Install ` the following modules to get all the features of the Saudi Arabian -localization: +The following modules related to the Saudi Arabian localization are available: .. list-table:: :header-rows: 1 @@ -17,126 +18,562 @@ localization: - Description * - Saudi Arabia - Accounting - `l10n_sa` - - Default :ref:`fiscal localization package ` + - Default :ref:`fiscal localization package ` for Saudi Arabia + with Phase 1 QR code support. * - Saudi Arabia - E-invoicing - `l10n_sa_edi` - - ZATCA e-invoices implementation + - Enables ZATCA Phase 2 API integration for e-invoicing compliance. + * - Saudi Arabia - E-invoicing (Simplified) + - `l10n_sa_edi_pos` + - Enables e-invoicing through PoS. * - Saudi Arabia - Point of Sale - `l10n_sa_pos` - - Point of Sale compliance + - Adds compliance fields and behavior for PoS invoices. + * - Saudi Arabia - Accounting Reports + - `l10n_sa_reports` + - Accounting reports for Saudi Arabia + * - Saudi Arabia - Withholding Tax + - `l10n_sa_withholding_tax` + - Forces the installation of the Withholding Tax on Payment module. + +.. note:: + The localization's core modules are installed automatically with the localization. The rest can + be manually :doc:`installed `. + +.. seealso:: + :doc:`Saudi Arabia Payroll localization documentation <../../hr/payroll/payroll_localizations/saudi_arabia>` + +.. _localizations/saudi-arabia/loc-review: + +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: + +- :doc:`../accounting/get_started/chart_of_accounts`: a predefined structure aligned with Saudi + Arabian regulations +- :ref:`localizations/saudi-arabia/taxes`: preconfigured tax rates, including standard 15% VAT, + zero-rated, and exempt options +- :doc:`../accounting/taxes/fiscal_positions`: automated tax adjustments based on customer or + supplier registration status +- :ref:`Withholding taxes `: predefined withholding + tax rules for applicable service categories +- :ref:`localizations/saudi-arabia/tax-reporting`: automated tax reports +- :ref:`E-invoicing (ZATCA) `: integration for electronic + invoicing in line with Saudi Arabian government requirements + +.. _localizations/saudi-arabia/taxes: + +Taxes +----- + +The Saudi Arabian localization includes preconfigured sales, purchase, and withholding :doc:`taxes +<../accounting/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-:abbr:`GCC (Gulf Cooperation Council)` + 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-:abbr:`GCC (Gulf + Cooperation Council)` country. + | VAT is typically calculated at the standard rate (15%) and is paid to the Customs Authority at + the point of importation. + +.. important:: + When assigning :doc:`discounts <../../sales/sales/products_prices/prices/discounts>` to invoices, + assign a 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 :ref:`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. + +.. _localizations/saudi-arabia/withholding-taxes: + +Withholding taxes +----------------- + +There are two available methods for calculating :doc:`withholding tax +<../accounting/taxes/retention>`: 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. + +.. note:: + 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. + +.. _localizations/saudi-arabia/tax-reporting: + +Tax reporting +------------- + +The :ref:`VAT and Withholding Return ` provide a detailed +breakdown of taxable, zero-rated, exempt, and withholding transactions. Like other financial +reports, the :guilabel:`VAT` and :guilabel:`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. + +.. _localizations/saudi-arabia/company-contacts: + +Company and contacts +==================== + +To ensure proper integration with :ref:`ZATCA `, the following +fields are required on the :ref:`company record `: -ZATCA e-invoices -================ +- :guilabel:`Company Name` (must match exactly VAT certificate) +- All relevant :guilabel:`Address` fields, including the :guilabel:`District`, :guilabel:`Building + Number`, and :guilabel:`Plot Identification` +- :guilabel:`Identification Scheme` + + - :guilabel:`Tax Identification Number` + - :guilabel:`Commercial Registration Number` + - :guilabel:`Momra License` + - :guilabel:`MLSD License` + - :guilabel:`700 Number` + - :guilabel:`Sagia License` + +- :guilabel:`VAT Number` +- :guilabel:`Currency` must be set to :guilabel:`SAR`. + +.. important:: + All fields must be completed accurately to avoid rejection during :ref:`ZATCA onboarding + `. + +.. note:: + The same configuration applies to all relevant :doc:`contact <../../essentials/contacts>` forms. + +.. _localizations/saudi-arabia/branches: + +Branches configuration +---------------------- + +Set up your company :ref:`branches ` in compliance with :ref:`ZATCA rules +`. + +.. important:: + On the branch contact form, enter the same :guilabel:`VAT Number` as the parent company and enter + the branch :guilabel:`Commercial Registration Number (CRN)` in the :guilabel:`Identification + Scheme` field. + +.. note:: + 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. + +.. _localizations/saudi-arabia/invoicing-language: + +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 :menuselection:`Accounting --> + Customers --> Customers` or :menuselection:`Point of Sale --> Orders --> Customers`, and open the + relevant customer form. In the :guilabel:`Language` field, update the language. All documents are + then automatically generated in the selected language for that customer. + + .. important:: + Saudi Arabia's VAT regulations require :guilabel:`Tax Invoices` and :guilabel:`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 :guilabel:`Tax Invoices`: Go to :menuselection:`Accounting --> Configuration --> Settings`, + in the :guilabel:`Fiscal Localization` section. + - For Point of Sale receipts: Go to :menuselection:`Point of Sale --> Configuration --> Settings`, + and navigate to the :guilabel:`Bills & Receipts` section. + + Then, enable the :guilabel:`Gulf Cooperation Council Format` option, and :guilabel:`Save`. + +.. _localizations/saudi-arabia/zatca: + +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 :guilabel:`Tax Invoice` is issued, whereas in a B2C scenario, a +:guilabel:`Simplified Tax Invoice` is generated. + .. seealso:: `ZATCA e-invoicing page `_ -Company information -------------------- +.. _localizations/saudi-arabia/step-by-step: -Go to :menuselection:`Settings --> General Settings --> Companies`, click :guilabel:`Update info`, -and ensure the following company information is complete and up-to-date. +Step-by-step process +-------------------- -- The full :guilabel:`Company Name`. -- All relevant :guilabel:`Address` fields, including the :guilabel:`Building Number` and - :guilabel:`Plot Identification` (four digits each). -- Select an enterprise :guilabel:`Identification Scheme`. It is recommended to use the - :guilabel:`Commercial Registration Number`. -- Enter the :guilabel:`Identification Number` for the selected :guilabel:`Identification Scheme`. -- The :guilabel:`VAT` number. -- Ensure the :guilabel:`Currency` is set to :guilabel:`SAR`. +When onboarding to ZATCA (Phase 2), there are three modes: -.. note:: - It is also necessary to fill out similar information for partner companies. +- :ref:`Sandbox `: common preconfigured testing environment +- :ref:`Simulation (Pre-Production) `: unique + testing environment +- :ref:`Production `: live environment -Simulation mode ---------------- +.. _localizations/saudi-arabia/sandbox: -.. important:: - It is strongly recommended to thoroughly test all invoicing workflows using the Fatoora - **simulation** portal first, as **any** invoice submitted to the regular Fatoora portal will be - accounted for, which could lead to fines and penalties. +Sandbox +~~~~~~~ -Fatoora simulation portal -~~~~~~~~~~~~~~~~~~~~~~~~~ +.. Tip:: + Use VAT Number 399999999900003 on your company setup for sandbox testing. -Log in on the `Fatoora portal `_ using the company's ZATCA -credentials. Then, click the :guilabel:`Fatoora Simulation Portal` button to switch to the -simulation portal. +#. | Set the database + | Go to :menuselection:`Accounting --> Configuration --> Settings` and, in the :guilabel:`Saudi + Arabia Electronic Invoicing` section, ensure the :guilabel:`ZATCA API mode` is set to + :guilabel:`Sandbox`. -.. seealso:: - `ZACTA Fatoora portal user manual version 3 (May 2023) `_ +#. | Company information verification + | Make sure all :ref:`company ` information is + complete. + +#. Onboard sales journals -.. _saudi-arabia/api-mode: + - Go to :menuselection:`Accounting --> Configuration --> Journals`. + - Open the :guilabel:`Sales` journal. + - Under the ZATCA tab, click :icon:`fa-refresh` :guilabel:`Onboard`. + - In the :guilabel:`Enter the OTP` window, the 6-digit :guilabel:`OTP` is pre-populated. Click + :guilabel:`Confirm`. -ZATCA API integration -~~~~~~~~~~~~~~~~~~~~~ +#. Invoice testing -On Odoo, go to :menuselection:`Accounting --> Configuration --> Settings`. Under :guilabel:`ZATCA -API Integration`, select the :guilabel:`Simulation (Pre-Production)` :guilabel:`API mode` and click -:guilabel:`Save`. + - :ref:`Create ` and :ref:`confirm + ` customer invoices. + - Once the invoice is confirmed, a blue banner appears; click :guilabel:`Process now`. + - Ensure the :ref:`response from the API ` is + :guilabel:`Action Successful`. If not, review the API response displayed in the chatter and + take the appropriate actions. -.. _saudi-arabia/journals: +.. _localizations/saudi-arabia/simulation: -Sales journals -~~~~~~~~~~~~~~ +Simulation +~~~~~~~~~~ -Each sales journal on Odoo needs to be configured. To do so, go to :menuselection:`Accounting --> -Configuration --> Journals`, open any sales journal (e.g., Customer Invoices), and go to the -:guilabel:`ZATCA` tab. Once there, enter any :guilabel:`Serial Number` to identify the journal. +#. Set the database + + - Duplicate your Live/Production database. + - Go to :menuselection:`Accounting --> Configuration --> Settings` and, in the :guilabel:`Saudi + Arabia Electronic Invoicing` section, ensure the :guilabel:`ZATCA API mode` is set to + :guilabel:`Simulation (Pre-Production)`. + +#. | Company information verification + | Make sure all :ref:`company ` information is + complete. + +#. Onboard sales journals + + - Go to :menuselection:`Accounting --> Configuration --> Journals`. + - Open the :guilabel:`Sales` journal. + - Under the ZATCA tab, click :icon:`fa-refresh` :guilabel:`Onboard`. + - In the :guilabel:`Enter the OTP` window, enter the 6-digit :guilabel:`OTP` retrieved from the + Fatoora Simulation Portal under the Testing Environment. Then click :guilabel:`Confirm`. + +#. Invoice testing + + - :ref:`Create ` and :ref:`confirm + ` customer invoices. + - Once the invoice is confirmed, a blue banner appears; click :guilabel:`Process now`. + - Ensure the :ref:`response from the API ` is + :guilabel:`Action Successful`. If not, review the API response displayed in the chatter and + take the appropriate actions. + +.. _localizations/saudi-arabia/production: + +Production +~~~~~~~~~~ + +#. | In your Live/Production database + | Go to :menuselection:`Accounting --> Configuration --> Settings` and, in the :guilabel:`Saudi + Arabia Electronic Invoicing` section, ensure the :guilabel:`ZATCA API mode` is set to + :guilabel:`Production`. + +#. | Company information verification + | Make sure all :ref:`company ` information is + complete. + +#. Onboard sales journals + + - Go to :menuselection:`Accounting --> Configuration --> Journals`. + - Open the :guilabel:`Sales` journal. + - Under the ZATCA tab, click :icon:`fa-refresh` :guilabel:`Onboard`. + - In the :guilabel:`Enter the OTP` window, enter the 6-digit :guilabel:`OTP` retrieved from the + Fatoora Simulation Portal under the Production Environment. Then click :guilabel:`Confirm`. .. note:: - The same serial number can be used for all of the company's sales journals. + - :guilabel:`Simulation (Pre-Production)` mode invoices are not legally valid. + - Each :guilabel:`Sales` journal must be onboarded separately. + +.. warning:: + - Once the API mode is switched to :guilabel:`Production` and an invoice is submitted to ZATCA, + it cannot be changed back to :guilabel:`Sandbox` or :guilabel:`Simulation (Pre-Production)`. + - OTP’s generated from either the Fatoora Simulation or Production portal expire after 60 minutes + and need to be regenerated. + +.. _localizations/saudi-arabia/invoice-submission: + +Invoice submission to ZATCA +--------------------------- -Next, click :guilabel:`Onboard Journal`. In the dialog box, providing an :abbr:`OTP (one-time -password)` code is required. To retrieve it, open the `Fatoora simulation portal -`_, click :guilabel:`Onboard New Solution Unit/Device`, choose the -number of OTP codes to generate (one per journal to configure), and click :guilabel:`Generate OTP -Code`. Copy an OTP code, it into the dialog box on Odoo, and click :guilabel:`Request`. +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: + +.. list-table:: + :header-rows: 1 + + * - Code + - Action + * - :guilabel:`200 – Action Successful` + - No action required. + * - :guilabel:`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. + * - :guilabel:`303 – Clearance Switched Off` + - Submit the invoice through the reporting flow instead of clearance. + * - :guilabel:`400 – Action Failed (Rejected)` + - Review the detailed error message, correct the issue, and resubmit. + * - :guilabel:`401 – Unauthorized` + - - Check the authentication certificate and secret key. + - Correct the credentials and resubmit. + * - :guilabel:`413 – Payload Too Large (Invoice Not Received)` + - Reduce the invoice payload size and resend. + * - :guilabel:`429 – Too Many Requests (Invoice Not Received)` + - Resend the invoice. + * - :guilabel:`500 – Internal Server Error (Invoice Not Received)` + - Resend the invoice. + * - :guilabel:`503 – Service Unavailable (Invoice Not Received)` + - Resend the invoice. + * - :guilabel:`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 :guilabel:`Retry`. + +.. important:: + - Invoices rejected by ZATCA remain in a :guilabel:`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) + `_. + +.. _localizations/saudi-arabia/qr-code-verification: + +QR code verification +-------------------- + +To verify the QR Code on the invoice, scan it using the official `ZATCA app +`_. .. note:: - OTP codes expire after one hour. + - 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). -.. tip:: - If any issue occurs during onboarding, click :guilabel:`Regenerate CSR` to start again. -Testing -~~~~~~~ +.. _localizations/saudi-arabia/debit-and-credit-notes: + +Debit and credit notes +---------------------- + +To create a :ref:`credit ` or :ref:`debit +` note, include a ZATCA-approved reason from the +:guilabel:`ZATCA Reason` field in the :guilabel:`Credit`/:guilabel:`Debit` window, as required by +ZATCA regulations: -When confirming an invoice, there is now an option to process the invoice, sending it directly the -Fatoora simulation portal. Odoo displays the portal's response after each submission. Only rejected -invoices can be reset to draft and edited on Odoo. Furthermore, at the end of each day, Odoo sends -all unprocessed invoices to the portal. +- 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. .. tip:: - - Testing all invoicing workflows, preferably with real invoices and for a reasonable amount of - time, is recommended. - - Compare the invoices received statistics page on the Fatoora simulation portal with the list of - invoices on Odoo to ensure both align. + The :guilabel:`ZATCA Reason` field is also available in the credit/debit note :guilabel:`Other + Info` tab. -Taxes -~~~~~ +.. note:: + 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 :guilabel:`Customer + Reference` field. + +.. _localizations/saudi-arabia/advance-payments: + +Down payments (advance payments) +-------------------------------- + +Handle :doc:`down payments (advance payments) <../../sales/sales/invoicing/invoicing_policy>` in +compliance with `ZATCA’s guidelines +`_. + +.. _localizations/saudi-arabia/retention: + +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. -When using a **0% tax** in a customer invoice, it is necessary to specify the reason behind such a -rate. To configure taxes, go to :menuselection:`Accounting --> Configuration --> Settings --> -Taxes`, and open the tax to edit. Under the :guilabel:`Advanced Options`, select an -:guilabel:`Exemption Reason Code` and click :guilabel:`Save`. +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. -When using **retention** or **withholding an amount** in a customer invoice, the tax used to retain -the amount needs to be specified. +The Odoo retention workflow ensures, through tax position, that the retention amount does not reduce +the taxable amount. -Production mode ---------------- +.. note:: + Any negative tax (e.g., -20%) configured with the :guilabel:`Withhold On Payment` 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. + +.. important:: + When creating a new retention tax, create a :guilabel:`Retention` tax group and assign it to this + newly created retention tax to comply with ZATCA rules. -When ready for production, change the :ref:`API mode ` to -:guilabel:`Production` and click :guilabel:`Save`. +Within this same tax position, retention can also be applied as an independent negative invoice line +using a 0% (Not Subject to VAT) tax. .. warning:: - Setting the :guilabel:`API mode` to :guilabel:`Production` is **irreversible**. + The 0% (Not Subject to VAT) tax is already preconfigured according to ZATCA rules; do not modify + it. + +.. _localizations/saudi-arabia/generated-documents: + +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 +:icon:`fa-paperclip` :guilabel:`(attachments)` icon. + +Additionally, the invoice PDF generated when using :guilabel:`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. + +.. important:: + Successfully ZATCA-submitted invoices can only be reset to draft in :ref:`Sandbox + ` or :ref:`Simulation (Pre-Production) + ` modes. + +.. note:: + PDF/A-3 with the embedded UBL 2.1 is generated automatically using either :guilabel:`Send` or + :guilabel:`Print`. + +.. _localizations/saudi-arabia/pos: + +Point of sale +============= + +.. _localizations/saudi-arabia/pos-zatca-configuration: + +ZATCA integration configuration +------------------------------- + +.. note:: + Make sure the :guilabel:`Saudi Arabia - E-invoicing (Simplified) (l10n_sa_edi_pos)` module is + :ref:`installed `. + +PoS orders must be properly reported in compliance with ZATCA Phase 2. To do so, follow these steps: + +- Onboard the :guilabel:`Invoices` default journal in the :ref:`PoS settings + `: + + - Go to :menuselection:`Point of Sale --> Configuration --> Settings` and navigate to the + :guilabel:`Accounting` section. + - In the :guilabel:`Default Journals` section, click the :icon:`oi-arrow-right` :guilabel:`(right + arrow)` in the :guilabel:`Invoices` field to open the default invoices journal. + - Under the ZATCA tab, click :icon:`fa-refresh` :guilabel:`Re-Onboard`. + - In the :guilabel:`Enter the OTP` window, enter the 6-digit :guilabel:`OTP` retrieved from the + Fatoora Simulation Portal under the Production Environment. Then click :guilabel:`Confirm`. + +- :ref:`Assign a customer ` to the order before finalizing the transaction. -The sales journals initially linked to the simulation portal now needs to be linked to the regular -portal. To do so, :ref:`onboard the journals ` again, ensuring to use the -regular `Fatoora portal `_ this time. +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.