ZATCA e-faktura QR (Saudi FATOORA)
ZATCA (Zakat, Tax and Customs Authority) i Saudi-Arabien kræver en QR på enhver skattefaktura udstedt i Kongeriget. Fase 1 er forenklet TLV; Fase 2 tilføjer kryptografisk forsegling via integration med FATOORA-platformen. Ikke-overensstemmende fakturaer afvises af købers regnskabssoftware og er ugyldige for momsgodtgørelse.
Kanonisk specifikation:ZATCA E-Invoicing Resolution & Implementing Regulations, gyldig til og med 2026.
Fase 1 (generering): I kraft siden 4. december 2021. Alle momsregistrerede virksomheder skal udstede digitale fakturaer med QR.
Fase 2 (integration): Udrulning i bølger efter virksomhedsstørrelse siden 1. januar 2023. Tilføjer digital signatur + ZATCA-godkendelse for standardfakturaer og realtidsrapportering for forenklede fakturaer.
Fase 1 (generering): I kraft siden 4. december 2021. Alle momsregistrerede virksomheder skal udstede digitale fakturaer med QR.
Fase 2 (integration): Udrulning i bølger efter virksomhedsstørrelse siden 1. januar 2023. Tilføjer digital signatur + ZATCA-godkendelse for standardfakturaer og realtidsrapportering for forenklede fakturaer.
Hvad det er
QR-koden koder en Base64-streng. Afkod Base64 for at få en binær TLV-sekvens med 5 obligatoriske felter i fast rækkefølge:
| Tag | Felt | Type | Bemærkninger |
|---|---|---|---|
01 | Sælgernavn | UTF-8-streng | Sælgerens handelsnavn. Arabisk og latinsk begge accepteret. |
02 | Momsregistreringsnummer | 15 cifre | Starter med 3 for saudiske enheder. Format: 3XXXXXXXXXXXXX3. |
03 | Fakturatidsstempel | ISO 8601 | F.eks. 2026-04-18T10:30:00Z. Skal inkludere tidszone. |
04 | Fakturatotal (med moms) | Decimalstreng | F.eks. 115.00. Valuta er implicit SAR. |
05 | Momsbeløb | Decimalstreng | F.eks. 15.00. Aktuelt 15% standardsats. |
06 | Fakturahash (Fase 2) | Base64 SHA-256 | SHA-256 af det kanoniske faktura-XML. |
07 | Digital signatur (Fase 2) | Base64 | ECDSA over fakturahash med sælgerens CSID-certifikat. |
08 | Offentlig nøgle (Fase 2) | Base64 X.509 | Sælgerens ECDSA offentlige nøgle (fra CSID). |
09 | ZATCA-stempel (Fase 2) | Base64 | ZATCAs kontraunderskrift. Til stede kun efter ZATCA-godkendelse. |
Hver TLV-post er 1 tag-byte + 1 længde-byte + <længde> værdibytes. Hele sekvensen er derefter Base64-kodet som QR-payload.
Fase 1 (forenklet) vs Fase 2 (integration)
| Aspekt | Fase 1 | Fase 2 |
|---|---|---|
| QR-indhold | Kun tags 01–05 | Tags 01–05 plus 06, 07, 08, valgfrit 09 |
| ZATCA-integration | Ingen, offline | Realtids-API for forenklede fakturaer, godkendelsesflow for standardfakturaer |
| Certifikater krævet | Nej | Ja, CSID (Cryptographic Stamp Identifier) udstedt af ZATCA |
| Ikrafttrædelsesdato | 2021-12-04 (alle virksomheder) | 2023-01-01 (rullende bølger efter omsætning) |
| Fakturaomfang | B2C (forenklet) + B2B (standard) | B2C forenklet: realtidsrapport. B2B standard: godkendelse (forudvalidering) inden udstedelse. |
Kanoniske testvektorer
Eksempel TLV (før Base64):
01 0A "Acme Saudi" 02 0F "300000000000003" 03 14 "2026-04-18T10:30:00Z" 04 06 "115.00" 05 05 "15.00"Efter Base64-kodning:
AQpBY21lIFNhdWRpAg8zMDAwMDAwMDAwMDAwMDMDFDIwMjYtMDQtMThUMTA6MzA6MDBaBAYxMTUuMDAFBTE1LjAw| Tilfælde | Input | Base64-præfiks |
|---|---|---|
| Fase 1, minimal forenklet | seller=Acme Saudi | AQpBY21lIFNhdWRp... |
| Arabisk sælgernavn | seller=شركة أكمي | Sælgernavn UTF-8-kodet inde i TLV før Base64. |
| Fase 2 standardfaktura | Alt det ovenstående plus hash=<SHA-256 Base64> | Meget længere Base64. Dekodere skal tolerere ekstra tags efter 05. |
Almindelige faldgruber
- Momsnummerets længde. ZATCA-momsnumre er præcis 15 cifre og starter og slutter med
3. Alt andet fejler validering på faktura-ingest-siden. - Tidsstempel uden tidszone. Specifikationen kræver ISO 8601 med en eksplicit zone (
Zeller+03:00). Naive lokale tidsstempler afvises. - Kodningsrækkefølge. TLV-felter skal vises i tag-nummerrækkefølge (01, 02, 03, 04, 05, …). Ændring af rækkefølgen gør QR-dekodning vellykket, men nogle validatorer markerer den som ikke-kanonisk.
- Decimalformatering. Fakturatotal og momsbeløb bruger punktdecimal (
115.00), ikke kommadecimal (115,00). Heller ingen tusindtalsseparatorer. - Valuta er implicit SAR. Fakturaer i udenlandsk valuta konverteres stadig til SAR for QR-feltet. Det underliggende XML kan indeholde den originale valuta; QR gør det ikke.
- Fase 2-godkendelsesfejl. En standardfaktura indsendt til ZATCAs godkendelses-API kan afvises (dårlig CSID, fejlbehæftet XML, forkert skatteberegning). Fakturaen er juridisk ugyldig, indtil den er godkendt. Bevar en genforsøgsløkke med eksponentiel tilbagegang; udsted ikke fakturaen, før godkendelse lykkes.
- Rotation af CSID-certifikat. Fase 2-CSID'er udløber (typisk 1 år). Byg en fornyelseskontrol ind i din e-faktureringsstak, ellers holder du pludselig op med at kunne udstede fakturaer.
Scannerkompatibilitet
| Læser | Understøttelse | Bemærkninger |
|---|---|---|
| ZATCA FATOORA-app | Nativ | Officiel ministeriets app; verificerer Fase 2-signaturer mod ZATCA PKI. |
| Saudiarabisk regnskabssoftware (SAP B1, Oracle, Microsoft Dynamics) | Nativ (efter 2023) | Lokaliserede saudiarabiske builds har ZATCA-parsing i AP-pipelinen. |
| iOS-kamera | Rå Base64 | Ikke genkendt som skattefaktura. Brugeren skal åbne FATOORA-appen. |
| Android-kamera / Google Lens | Rå Base64 | Samme, ingen nativ parsing. |
| Tredjeparts revisionsværktøjer (PwC, KPMG, Deloitte Saudi-enheder) | Nativ | Revisions-teknologisuiter parser og verificerer Fase 2-signaturer. |
Se også
- /zatca-saudi-einvoice-qr-code/, generatoren.
- /standards/, tilbage til standardindekset.
- ZATCA Developers Portal, autoritative ressourcer og FATOORA-sandkassen.