For finance
Sales documents you can file
Reps quote in Zaps. Quotations wait for approval, invoices carry the buyer's ZATCA details and the QR code, and Odoo receives the same documents with its own numbers.


Approved before sent
By default every quotation needs someone else's approval; you can set a total below which it does not. Discounts are held to each product's maximum.
15% VAT on every line
Prices are before VAT. Totals show the VAT, and a quotation becomes an order, then an invoice.
Invoices and credit notes
Issue an invoice for everything left or chosen lines. Credit by lines or by an amount with VAT, with a reason.
ZATCA buyer details
The buyer's VAT number, ID type and national address sit on the company, checked before an invoice is issued.
One system reports
Choose whether Zaps or Odoo issues and reports tax invoices. The choice is frozen on each invoice when it is issued.
PDFs in English or Arabic
Download quotations, invoices and credit notes as a PDF in either language.
From quotation to tax invoice
Each document checked before it counts
The commerce module follows the deal, so finance sees the same customer, lines and history as sales.
Start from the deal
A quotation belongs to a deal on the board. When the customer accepts it, the deal's win is claimed and waits for approval.


Build it, then approve it
Lines from the price book or free text, a discount per line within the product's limit, totals with 15% VAT. It then waits under Waiting for me for someone who may decide it. Nobody approves their own.


Check the buyer
Before issuing, the invoice says whether it will be standard or simplified and why, and names anything ZATCA would refuse, with a link to fix the company.


The path of a tax invoice
Quotation, approval, Odoo, cleared invoice
Follow a quotation through approval and Odoo to an invoice with its QR code.
The specifics
How the numbers are kept
- 01Standard or simplified
- A company with a VAT number gets a standard (B2B) tax invoice, cleared by ZATCA. Without one, a simplified (B2C) invoice, reported.
- 02Buyer fields, checked
- A Saudi VAT number is 15 digits starting and ending with 3. The buyer ID takes one of ZATCA's eleven schemes; a foreign tax number goes in as OTH.
- 03Odoo, both ways
- Quotations, invoices and credit notes are pushed to Odoo 16, 17 or 18. Odoo's number, state, payment state and ZATCA fields are read back.
- 04Payments from Odoo
- With payment import on, payments registered in Odoo are recorded on the Zaps invoice.
- 05No double reporting
- If Zaps issues and Odoo's Saudi e-invoicing module is installed, Zaps refuses to post the invoice in Odoo, so ZATCA never receives it twice.
- 06A finance view
- Credited and net invoiced for a window, receivables by age, and booked, net invoiced and collected by month.
VAT, on prices entered before VAT
ZATCA buyer ID schemes on the company form
Odoo versions, self-hosted or Odoo Online
What is switched on, and what is verified
Quotations, orders and invoices are a module your administrator switches on. Zaps' own ZATCA phase 2 signing has passed ZATCA's developer sandbox; the console asks you to run ZATCA's simulation and SDK validator before production.
Questions
Who reports invoices to ZATCA, Zaps or Odoo?
Exactly one of them, set by your administrator. With Odoo as the issuer, Zaps signs nothing and copies Odoo's QR code onto its invoice once Odoo posts it.
Can a rep change a price below the limit?
No. A discount above the product's maximum is refused on the line, and a quotation above your approval threshold still needs someone else's approval.
What if the buyer's address is incomplete?
Issuing is refused with the missing fields named and a link to edit the company, which comes back to the invoice after saving.
See your team's day, the way it happened.
A 30-minute walkthrough on your own process: visits, journeys, quotations and the inbox, in Arabic or English.
14 days free · No card needed · Launch prices from 39 SAR