ZATCA e-factuur QR (Saudi FATOORA)
ZATCA (Zakat-, belasting- en douaneautoriteit) van Saudi-Arabië verplicht een QR op elke belastingfactuur in het Koninkrijk. Fase 1 is vereenvoudigd TLV; Fase 2 voegt cryptografische verzegeling toe via integratie met het FATOORA-platform. Niet-conforme facturen worden geweigerd door de boekhoudsoftware van de koper en zijn ongeldig voor BTW-teruggave.
Officiële specificatie:ZATCA E-Invoicing Resolutie & Uitvoeringsregels, actueel t/m 2026.
Fase 1 (Generatie): van kracht sinds 4 december 2021. Alle BTW-geregistreerde bedrijven moeten digitale facturen met QR uitreiken.
Fase 2 (Integratie): uitrol per bedrijfsgrootte golf vanaf 1 januari 2023. Voegt digitale handtekening + ZATCA-goedkeuring toe voor standaardfacturen en realtime rapportage voor vereenvoudigde facturen.
Fase 1 (Generatie): van kracht sinds 4 december 2021. Alle BTW-geregistreerde bedrijven moeten digitale facturen met QR uitreiken.
Fase 2 (Integratie): uitrol per bedrijfsgrootte golf vanaf 1 januari 2023. Voegt digitale handtekening + ZATCA-goedkeuring toe voor standaardfacturen en realtime rapportage voor vereenvoudigde facturen.
Wat het is
De QR codeert een Base64-string. Decodeer de Base64 om een binaire TLV-reeks te krijgen met 5 verplichte velden in vaste volgorde:
| Tag | Veld | Type | Opmerkingen |
|---|---|---|---|
01 | Naam verkoper | UTF-8-string | Handelsnaam van de verkoper. Arabisch en Latijn beide geaccepteerd. |
02 | BTW-registratienummer | 15 cijfers | Begint met 3 voor Saudische entiteiten. Formaat: 3XXXXXXXXXXXXX3. |
03 | Tijdstempel factuur | ISO 8601 | Bijv. 2026-04-18T10:30:00Z. Moet tijdzone bevatten. |
04 | Totaal factuur (incl. BTW) | Decimale string | Bijv. 115.00. Valuta is impliciet SAR. |
05 | BTW-bedrag | Decimale string | Bijv. 15.00. Huidig standaardtarief 15%. |
06 | Hash factuur (Fase 2) | Base64 SHA-256 | SHA-256 van de canonieke factuur-XML. |
07 | Digitale handtekening (Fase 2) | Base64 | ECDSA over de facturhash met het CSID-certificaat van de verkoper. |
08 | Publieke sleutel (Fase 2) | Base64 X.509 | ECDSA-publieke sleutel van de verkoper (uit het CSID). |
09 | ZATCA-stempel (Fase 2) | Base64 | Tegenhandtekening van ZATCA. Alleen aanwezig na ZATCA-goedkeuring. |
Elk TLV-record is 1 tagbyte + 1 lengtebyte + <lengte> waardebytes. De hele reeks wordt dan Base64-gecodeerd om de QR-payload te worden.
Fase 1 (vereenvoudigd) vs Fase 2 (integratie)
| Aspect | Fase 1 | Fase 2 |
|---|---|---|
| QR-inhoud | Alleen tags 01–05 | Tags 01–05 plus 06, 07, 08, optioneel 09 |
| ZATCA-integratie | Geen, offline | Realtime API voor vereenvoudigde facturen, goedkeuringsstroom voor standaardfacturen |
| Vereiste certificaten | Nee | Ja, CSID (Cryptografische Stempelidentificator) uitgegeven door ZATCA |
| Ingangsdatum | 2021-12-04 (alle bedrijven) | 2023-01-01 (progressieve golven per omzet) |
| Factuuromvang | B2C (vereenvoudigd) + B2B (standaard) | B2C vereenvoudigd: realtime rapportage. B2B standaard: goedkeuring (pre-validatie) voor uitgifte. |
Canonieke testvectoren
Voorbeeld TLV (voor Base64):
01 0A "Acme Saudi" 02 0F "300000000000003" 03 14 "2026-04-18T10:30:00Z" 04 06 "115.00" 05 05 "15.00"Na Base64-codering:
AQpBY21lIFNhdWRpAg8zMDAwMDAwMDAwMDAwMDMDFDIwMjYtMDQtMThUMTA6MzA6MDBaBAYxMTUuMDAFBTE1LjAw| Geval | Invoer | Base64-voorvoegsel |
|---|---|---|
| Fase 1, minimaal vereenvoudigd | seller=Acme Saudi | AQpBY21lIFNhdWRp... |
| Arabische naam verkoper | seller=شركة أكمي | Naam verkoper UTF-8-gecodeerd in TLV voor Base64. |
| Fase 2 standaardfactuur | Alles hierboven plus hash=<SHA-256 Base64> | Veel langere Base64. Decoders moeten extra tags voorbij 05 tolereren. |
Veelgemaakte fouten
- Lengte BTW-nummer. ZATCA BTW-nummers zijn precies 15 cijfers, beginnen en eindigen met
3. Alles anders faalt de validatie aan de factuurinvoerzijde. - Tijdstempel zonder tijdzone. De specificatie vereist ISO 8601 met een expliciete zone (
Zof+03:00). Lokale tijdstempels zonder zone worden geweigerd. - Coderingsvolgorde. TLV-velden moeten in tagnummervolgorde verschijnen (01, 02, 03, 04, 05, …). Herordenen laat de QR correct decoderen maar sommige validators markeren het als niet-canoniek.
- Decimaalopmaak. Factuur totaal en BTW-bedrag gebruiken punt-decimaal (
115.00), niet komma-decimaal (115,00). Ook geen duizendtallen-scheidingstekens. - Valuta is impliciet SAR. Facturen in vreemde valuta worden toch geconverteerd naar SAR voor het QR-veld. De onderliggende XML kan de oorspronkelijke valuta bevatten; de QR niet.
- Fase 2 goedkeuringsfouten. Een standaardfactuur ingediend bij ZATCA's goedkeurings-API kan worden geweigerd (verkeerd CSID, misvormde XML, verkeerde belastingberekening). De factuur is juridisch ongeldig totdat deze is goedgekeurd. Implementeer een herhaallus met exponentiële terugval; dien de factuur niet in totdat de goedkeuring slaagt.
- CSID-certificaatrotatie. Fase 2 CSID's verlopen (doorgaans 1 jaar). Bouw een verlengingscontrole in uw e-facturatiesysteem in, anders kunt u plotseling geen facturen meer uitreiken.
Scannercompatibiliteit
| Lezer | Ondersteuning | Opmerkingen |
|---|---|---|
| ZATCA FATOORA app | Nativ | Officiële ministerie-app; verifieert Fase 2-handtekeningen tegen ZATCA PKI. |
| Saudisch boekhoudsoftware (SAP B1, Oracle, Microsoft Dynamics) | Nativ (post-2023) | Gelokaliseerde Saudische builds hebben ZATCA-parsing in de AP-pipeline. |
| iOS Camera | Ruwe Base64 | Niet herkend als belastingfactuur. Gebruiker moet de FATOORA-app openen. |
| Android Camera / Google Lens | Ruwe Base64 | Zelfde, geen native parsing. |
| Audit-tools van derden (PwC, KPMG, Deloitte Saudische eenheden) | Nativ | Audit-technologiesuites parseren en verifiëren Fase 2-handtekeningen. |
Zie ook
- /zatca-saudi-einvoice-qr-code/, de generator.
- /standards/, terug naar de standaardenindex.
- ZATCA Ontwikkelaarsportaal, officiële bronnen en de FATOORA-sandbox.