| Flow | Invoices |
|---|---|
| Clearance | Standard tax invoices (B2B, B2G) |
| Reporting | Simplified tax invoices (B2C) |
Sending
The send workflow claims the next ICV, builds and hashes the UBL document, signs it and generates the QR (for simplified invoices), submits to ZATCA and then stores the final XML and QR back on the silo entry.How it works
Set State → processing
Send to ZATCA
- Template
- Code
Saudi Arabia send invoice workflow
Credit and debit notes
Issued invoices cannot be cancelled or edited once cleared or reported. Corrections are made with credit notes (reduction) or debit notes (increase) that reference the original invoice. A note flows through the same clearance or reporting model as the document it corrects, using the same send workflow.Example invoices
Every example pairs the minimal hand-authored GOBL input with the built version produced bygobl build. All carry the sa-zatca-v1 add-on. Standard invoices are cleared; simplified invoices are reported.
Standard tax invoices (clearance)
Standard invoice (B2B)
Standard invoice (B2B)
Standard credit note
Standard credit note
preceding block links it to the original document.Standard debit note
Standard debit note
preceding.Standard export invoice
Standard export invoice
Standard nominal invoice
Standard nominal invoice
Standard self-billed invoice
Standard self-billed invoice
Standard third-party invoice
Standard third-party invoice
Standard invoice in foreign currency (USD)
Standard invoice in foreign currency (USD)
Summary credit note
Summary credit note
summary.Simplified invoice (B2C)
Simplified invoice (B2C)
Simplified credit note
Simplified credit note
Simplified debit note
Simplified debit note
Simplified zero-rated invoice
Simplified zero-rated invoice
FAQ
How does Invopop decide between clearance and reporting?
How does Invopop decide between clearance and reporting?
When do I submit a standard invoice (clearance) to Invopop?
When do I submit a standard invoice (clearance) to Invopop?
When do I submit a simplified invoice (reporting) to Invopop?
When do I submit a simplified invoice (reporting) to Invopop?
Do I need to build the ICV/PIH chain myself?
Do I need to build the ICV/PIH chain myself?
How is the invoice chain created?
How is the invoice chain created?
- ICV starts at
1for the first document and increments by exactly1for every document that follows. - PIH of the first document is the hash of the value
0— the base case defined in ZATCA’s data dictionary. Every document after that sets its PIH to the hash of the immediately preceding document.
- Document type does not split the chain. Standard invoices, simplified invoices, credit notes, and debit notes all share one sequence.
- Rejected documents still occupy their slot. A document that ZATCA rejects keeps its ICV and hash; the next document chains off it, not off the last accepted one.
hash(invoice 2) as its PIH and ICV = 3:| Document | ICV | PIH points to | ZATCA result |
|---|---|---|---|
| Invoice 1 | 1 | hash of 0 (base case) | Accepted |
| Invoice 2 | 2 | hash(Invoice 1) | Rejected |
| Invoice 3 | 3 | hash(Invoice 2) | Accepted |
| Credit note 4 | 4 | hash(Invoice 3) | Accepted |
Where do I find the cleared invoice?
Where do I find the cleared invoice?
invoice.xml — for standard invoices this is the ZATCA-cleared, stamped document. The QR code is also stamped onto the document.🇸🇦 Invopop resources for Saudi Arabia
🇸🇦 Invopop resources for Saudi Arabia
| Compliance | Compliance timeline |
| Apps | |
| Guides | Registration Clearance & Reporting |
| FAQ | Saudi Arabia FAQ |
| GOBL | |
| GitHub | gobl.sa.zatca |