ZATCA e-faktura QR (Saudi FATOORA)
ZATCA (Zakat, Tax and Customs Authority) i Saudiarabien kräver en QR på varje skattefaktura utfärdad i Kungadömet. Fas 1 är förenklad TLV; Fas 2 lägger till kryptografisk försegling via integration med FATOORA-plattformen. Icke-kompatibla fakturor avvisas av köparens bokföringsprogram och är ogiltiga för momsåterbäring.
Kanonisk specifikation:ZATCA E-Invoicing Resolution & Implementing Regulations, gällande till och med 2026.
Fas 1 (generering): I kraft sedan 4 december 2021. Alla momsregistrerade företag måste utfärda digitala fakturor med QR.
Fas 2 (integration): Driftsätts i omgångar efter företagsstorlek sedan 1 januari 2023. Lägger till digital signatur + ZATCA-godkännande för standardfakturor och realtidsrapportering för förenklade fakturor.
Fas 1 (generering): I kraft sedan 4 december 2021. Alla momsregistrerade företag måste utfärda digitala fakturor med QR.
Fas 2 (integration): Driftsätts i omgångar efter företagsstorlek sedan 1 januari 2023. Lägger till digital signatur + ZATCA-godkännande för standardfakturor och realtidsrapportering för förenklade fakturor.
Vad det är
QR-koden kodar en Base64-sträng. Avkoda Base64 för att få en binär TLV-sekvens med 5 obligatoriska fält i fast ordning:
| Tag | Fält | Typ | Anteckningar |
|---|---|---|---|
01 | Säljarnamn | UTF-8-sträng | Säljarens handelsnamn. Arabiska och latinska bokstäver accepteras båda. |
02 | Momsregistreringsnummer | 15 siffror | Börjar med 3 för saudiska enheter. Format: 3XXXXXXXXXXXXX3. |
03 | Fakturatidsstämpel | ISO 8601 | T.ex. 2026-04-18T10:30:00Z. Måste inkludera tidszon. |
04 | Fakturatotal (med moms) | Decimalsträng | T.ex. 115.00. Valutan är implicit SAR. |
05 | Momsbelopp | Decimalsträng | T.ex. 15.00. Nuvarande standardsats 15%. |
06 | Faktura-hash (Fas 2) | Base64 SHA-256 | SHA-256 av det kanoniska faktura-XML:et. |
07 | Digital signatur (Fas 2) | Base64 | ECDSA över faktura-hash med säljarens CSID-certifikat. |
08 | Publik nyckel (Fas 2) | Base64 X.509 | Säljarens ECDSA publika nyckel (från CSID). |
09 | ZATCA-stämpel (Fas 2) | Base64 | ZATCAs kontrasignatur. Finns bara efter ZATCA-godkännande. |
Varje TLV-post är 1 tag-byte + 1 längd-byte + <längd> värde-bytes. Hela sekvensen kodas sedan i Base64 som QR-nyttolast.
Fas 1 (förenklad) vs Fas 2 (integration)
| Aspekt | Fas 1 | Fas 2 |
|---|---|---|
| QR-innehåll | Bara taggar 01–05 | Taggar 01–05 plus 06, 07, 08, valfritt 09 |
| ZATCA-integration | Ingen, offline | Realtids-API för förenklade fakturor, godkännandeflöde för standardfakturor |
| Certifikat krävs | Nej | Ja, CSID (Cryptographic Stamp Identifier) utfärdat av ZATCA |
| Ikraftträdandedatum | 2021-12-04 (alla företag) | 2023-01-01 (rullande omgångar per omsättning) |
| Fakturaomfång | B2C (förenklad) + B2B (standard) | B2C förenklad: realtidsrapport. B2B standard: godkännande (förvalidering) innan utfärdande. |
Kanoniska testvektorer
Exempel TLV (före 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| Fall | Inmatningar | Base64-prefix |
|---|---|---|
| Fas 1, minimal förenklad | seller=Acme Saudi | AQpBY21lIFNhdWRp... |
| Arabiskt säljarnamn | seller=شركة أكمي | Säljarnamn UTF-8-kodat inuti TLV före Base64. |
| Fas 2 standardfaktura | Allt ovanstående plus hash=<SHA-256 Base64> | Mycket längre Base64. Avkodare måste tolerera extra taggar efter 05. |
Vanliga fallgropar
- Momsnumrets längd. ZATCA-momsnummer är exakt 15 siffror och börjar och slutar med
3. Allt annat misslyckas vid validering på faktura-ingest-sidan. - Tidsstämpel utan tidszon. Specifikationen kräver ISO 8601 med en explicit zon (
Zeller+03:00). Naiva lokala tidsstämplar avvisas. - Kodningsordning. TLV-fält måste visas i tagnummerordning (01, 02, 03, 04, 05, …). Omordning gör QR-avkodning framgångsrik men vissa validatorer markerar det som icke-kanoniskt.
- Decimalformatering. Fakturatotal och momsbelopp använder punktdecimal (
115.00), inte kommadecimal (115,00). Heller inga tusentalsseparatorer. - Valutan är implicit SAR. Fakturor i utländsk valuta konverteras ändå till SAR för QR-fältet. Det underliggande XML:et kan bära den ursprungliga valutan; QR-koden gör det inte.
- Fas 2-godkännandefel. En standardfaktura som skickas till ZATCAs godkännande-API kan avvisas (dåligt CSID, felaktigt XML, fel skatteberäkning). Fakturan är juridiskt ogiltig tills den godkänts. Håll en omförsöksloop med exponentiell tillbakagång; utfärda inte fakturan förrän godkännandet lyckas.
- CSID-certifikatrotation. Fas 2-CSID:er löper ut (vanligtvis 1 år). Bygg in en förnyelsecheck i ditt e-fakturasystem annars slutar du plötsligt kunna utfärda fakturor.
Skannerkompatibilitet
| Läsare | Stöd | Anteckningar |
|---|---|---|
| ZATCA FATOORA-app | Nativt | Officiell ministerapp; verifierar Fas 2-signaturer mot ZATCA PKI. |
| Saudisk bokföringsprogramvara (SAP B1, Oracle, Microsoft Dynamics) | Nativt (efter 2023) | Lokaliserade saudiska versioner har ZATCA-tolkning i AP-pipelinen. |
| iOS-kamera | Rå Base64 | Inte igenkänd som skattefaktura. Användaren måste öppna FATOORA-appen. |
| Android-kamera / Google Lens | Rå Base64 | Detsamma, ingen inbyggd tolkning. |
| Tredjepartsrevisionsverktyg (PwC, KPMG, Deloitte Saudi-enheter) | Nativt | Revisionstech-sviter tolkar och verifierar Fas 2-signaturer. |
Se även
- /zatca-saudi-einvoice-qr-code/, generatorn.
- /standards/, tillbaka till standardindexet.
- ZATCA Developers Portal, officiella resurser och FATOORA-sandlådan.