ZATCA e-faktura QR (Saudi FATOORA)
ZATCA (Zakat, Tax and Customs Authority) i Saudi-Arabia krever en QR på hver skattefaktura utstedt i Kongeriket. Fase 1 er forenklet TLV; Fase 2 legger til kryptografisk forsegling via integrasjon med FATOORA-plattformen. Ikke-samsvarende fakturaer avvises av kjøperens regnskapsprogramvare og er ugyldige for momsrefusjon.
Kanonisk spesifikasjon:ZATCA E-Invoicing Resolution & Implementing Regulations, gyldig til og med 2026.
Fase 1 (generering): I kraft siden 4. desember 2021. Alle momsregistrerte bedrifter må utstede digitale fakturaer med QR.
Fase 2 (integrasjon): Innføres i bølger etter bedriftsstørrelse siden 1. januar 2023. Legger til digital signatur + ZATCA-klarering for standardfakturaer og sanntidsrapportering for forenklede fakturaer.
Fase 1 (generering): I kraft siden 4. desember 2021. Alle momsregistrerte bedrifter må utstede digitale fakturaer med QR.
Fase 2 (integrasjon): Innføres i bølger etter bedriftsstørrelse siden 1. januar 2023. Legger til digital signatur + ZATCA-klarering for standardfakturaer og sanntidsrapportering for forenklede fakturaer.
Hva det er
QR-koden koder en Base64-streng. Dekod Base64 for å få en binær TLV-sekvens med 5 obligatoriske felt i fast rekkefølge:
| Tag | Felt | Type | Merknader |
|---|---|---|---|
01 | Selgernavn | UTF-8-streng | Selgerens handelsnavn. Arabisk og latinsk begge akseptert. |
02 | Momsregistreringsnummer | 15 sifre | Begynner med 3 for saudiske enheter. Format: 3XXXXXXXXXXXXX3. |
03 | Fakturatidsstempel | ISO 8601 | F.eks. 2026-04-18T10:30:00Z. Må inkludere tidssone. |
04 | Fakturatotal (med moms) | Desimalstreng | F.eks. 115.00. Valuta er implisitt SAR. |
05 | Momsbeløp | Desimalstreng | F.eks. 15.00. For øyeblikket 15% standardsats. |
06 | Fakturahash (Fase 2) | Base64 SHA-256 | SHA-256 av det kanoniske faktura-XML-et. |
07 | Digital signatur (Fase 2) | Base64 | ECDSA over fakturahash med selgerens CSID-sertifikat. |
08 | Offentlig nøkkel (Fase 2) | Base64 X.509 | Selgerens ECDSA offentlige nøkkel (fra CSID). |
09 | ZATCA-stempel (Fase 2) | Base64 | ZATCAs kontrasignatur. Til stede kun etter ZATCA-klarering. |
Hver TLV-post er 1 tag-byte + 1 lengde-byte + <lengde> verdi-bytes. Hele sekvensen er deretter Base64-kodet som QR-nyttelast.
Fase 1 (forenklet) vs Fase 2 (integrasjon)
| Aspekt | Fase 1 | Fase 2 |
|---|---|---|
| QR-innhold | Bare tagger 01–05 | Tagger 01–05 pluss 06, 07, 08, valgfritt 09 |
| ZATCA-integrasjon | Ingen, offline | Sanntids-API for forenklede fakturaer, klaeringsflyt for standardfakturaer |
| Sertifikater kreves | Nei | Ja, CSID (Cryptographic Stamp Identifier) utstedt av ZATCA |
| Ikrafttredelsesdato | 2021-12-04 (alle bedrifter) | 2023-01-01 (rullende bølger etter omsetning) |
| Fakturaomfang | B2C (forenklet) + B2B (standard) | B2C forenklet: sanntidsrapport. B2B standard: klarering (forhåndsvalidering) før utstedelse. |
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"Etter Base64-koding:
AQpBY21lIFNhdWRpAg8zMDAwMDAwMDAwMDAwMDMDFDIwMjYtMDQtMThUMTA6MzA6MDBaBAYxMTUuMDAFBTE1LjAw| Tilfelle | Innganger | Base64-prefiks |
|---|---|---|
| Fase 1, minimal forenklet | seller=Acme Saudi | AQpBY21lIFNhdWRp... |
| Arabisk selgernavn | seller=شركة أكمي | Selgernavn UTF-8-kodet inni TLV før Base64. |
| Fase 2 standardfaktura | Alt det ovenstående pluss hash=<SHA-256 Base64> | Mye lengre Base64. Dekodere må tolerere ekstra tagger etter 05. |
Vanlige fallgruver
- Momsnummerets lengde. ZATCA-momsnumre er nøyaktig 15 sifre og starter og slutter med
3. Alt annet feiler validering på fakturainntak-siden. - Tidsstempel uten tidssone. Spesifikasjonen krever ISO 8601 med en eksplisitt sone (
Zeller+03:00). Naive lokale tidsstempler avvises. - Kodingsrekkefølge. TLV-felt må vises i tagnummerrekkefølge (01, 02, 03, 04, 05, …). Omrekkefølge gjør QR-dekoding vellykket, men noen validatorer markerer det som ikke-kanonisk.
- Desimalformatering. Fakturatotal og momsbeløp bruker punktdesimal (
115.00), ikke kommadesimal (115,00). Heller ingen tusentalls-separatorer. - Valuta er implisitt SAR. Fakturaer i utenlandsk valuta konverteres likevel til SAR for QR-feltet. Det underliggende XML kan inneholde den opprinnelige valutaen; QR gjør det ikke.
- Fase 2-klareringsfeil. En standardfaktura sendt til ZATCAs klaring-API kan avvises (dårlig CSID, feil XML, feil skatteberegning). Fakturaen er juridisk ugyldig til den er klarert. Behold en gjenforsøksløkke med eksponensielt tilbakefall; ikke utsted fakturaen inntil klarering lykkes.
- CSID-sertifikatrotasjon. Fase 2-CSID-er utløper (vanligvis 1 år). Bygg en fornyelsesjekk inn i e-fakturasystemet ditt ellers slutter du plutselig å kunne utstede fakturaer.
Skannerkompatibilitet
| Leser | Støtte | Merknader |
|---|---|---|
| ZATCA FATOORA-app | Nativt | Offisiell ministeriapp; verifiserer Fase 2-signaturer mot ZATCA PKI. |
| Saudiarabisk regnskapsprogramvare (SAP B1, Oracle, Microsoft Dynamics) | Nativt (etter 2023) | Lokaliserte saudiarabiske bygg har ZATCA-tolkning i AP-pipelinen. |
| iOS-kamera | Rå Base64 | Ikke gjenkjent som skattefaktura. Brukeren må åpne FATOORA-appen. |
| Android-kamera / Google Lens | Rå Base64 | Samme, ingen nativ tolkning. |
| Tredjeparts revisjonsverktøy (PwC, KPMG, Deloitte Saudi-enheter) | Nativt | Revisjonsteknologi-suiter tolker og verifiserer Fase 2-signaturer. |
Se også
- /zatca-saudi-einvoice-qr-code/, generatoren.
- /standards/, tilbake til standardindeksen.
- ZATCA Developers Portal, autoritative ressurser og FATOORA-sandkassen.