Retail shops and restaurants issue dozens or hundreds of invoices a day at the till, most of them simplified tax invoices for individual customers. Under Phase 2 of e-invoicing, printing a receipt with a QR code is no longer enough: the receipt must come from a system connected to the Fatoora platform and be reported on time. This article covers what ZATCA requires for simplified invoices and how Odoo POS handles it according to the Odoo 19 documentation.
Tax invoice vs simplified tax invoice
Odoo's Saudi localization documentation explains that Phase 2 uses a clearance model for business-to-business sales, which get a tax invoice, while consumer sales get a simplified tax invoice for which Odoo generates a QR code and then reports it to Fatoora.
| Item | Tax invoice (B2B) | Simplified tax invoice (B2C) |
|---|---|---|
| Platform interaction | Cleared before it goes to the buyer | Reported after it is issued |
| Timing | Before sharing with the buyer | Within 24 hours of issue |
| Typical use | Sales to businesses | POS sales to individuals |
ZATCA's detailed e-invoicing guidelines state that simplified invoices are submitted in XML to Fatoora for reporting within 24 hours of generation through the APIs, after being stamped with the ZATCA-issued cryptographic stamp identifier (CSID) and carrying a Phase 2 QR code. The guidelines also cover loss of connectivity: the invoice is reported once the connection is back within the window, and if that is not possible, the dedicated ZATCA form is used.
How Odoo POS handles simplified invoices
According to the Odoo 19 documentation, the Saudi localization includes several modules, among them:
- l10n_sa_edi: Phase 2 integration with the ZATCA platform.
- l10n_sa_edi_pos (Saudi Arabia - E-invoicing (Simplified)): e-invoicing from the point of sale.
- l10n_sa_pos: fields and behaviour for POS invoices.
To report POS orders under Phase 2, the documentation lists these steps:
- Install the simplified e-invoicing module for POS.
- In the POS settings, open the default invoices (sales) journal and run Onboard from the ZATCA tab.
- Enter the 6-digit OTP from the Fatoora portal production environment.
- Assign a customer to the order before finalizing it.
The documentation states that these steps make each receipt processed as an e-invoice and reported in real time, with the Phase 2 QR code shown on both the printed receipt and the PDF.
Other settings to watch
- Language: the documentation notes that tax invoices and simplified tax invoices must be in Arabic and may be bilingual. For POS receipts there is a Gulf Cooperation Council format option under bills and receipts settings.
- Branches: a branch is set up with the parent company's VAT number and the branch's commercial registration number; you can use one central sales journal or one per branch, and each sales journal is onboarded separately.
- Test environments: Odoo offers Sandbox, Simulation and Production modes. Simulation invoices are not legally valid, and once you switch to Production and submit an invoice you cannot go back. OTPs expire after 60 minutes.
These details come from the version 19 documentation. Older versions may have different modules and steps, which is why the version should be reviewed before onboarding. See Odoo 17 end of support and upgrade planning if you are considering an upgrade.
Checklist before invoicing from the POS
- Confirm the phase and wave that apply to your business; see Phase 2 integration waves.
- Check company and branch data: VAT number, commercial registration and full address fields, including district and building number.
- Test in Sandbox or Simulation on a database copy before Production.
- Generate the Fatoora OTP right before onboarding, since it expires.
- Train cashiers on selecting the customer and on returns and credit notes.
- Assign someone to check submission status daily and handle rejected or pending invoices.
- Prepare a clear procedure for internet outages at a branch.
FAQ
Is a QR code on the receipt enough?
A QR code alone was the Phase 1 feature. In Phase 2 the invoice must be stamped and reported, and what can be configured depends on your Odoo version and your business's phase.
What if my POS is not Odoo?
Then the POS issues the simplified invoice, and Odoo records the sales in the books without issuing a second invoice. See an example in Foodics and Odoo integration.
What about card payments at the till?
That is separate from invoicing and covers terminals and bank reconciliation. See Saudi payment gateways and Odoo.
How Maham Pro can help
Maham Pro is an official Odoo partner at Ready Partner level. We review your Odoo version, POS and branch setup, and explain what is needed to connect simplified invoicing for your situation. See our retail solutions, Odoo ERP service and Odoo Accounting and ZATCA e-invoicing, then book a free 30-minute introductory session.
