QR e-faktury ZATCA (saudyjska FATOORA)
ZATCA (Urząd ds. Zakatu, Podatków i Ceł) Arabii Saudyjskiej nakazuje umieszczenie QR na każdej fakturze podatkowej wystawionej w Królestwie. Faza 1 to uproszczony TLV; Faza 2 dodaje kryptograficzne pieczętowanie poprzez integrację z platformą FATOORA. Niezgodne faktury są odrzucane przez oprogramowanie księgowe nabywcy i nieważne do odliczenia VAT.
Kanoniczna specyfikacja:ZATCA E-Invoicing Resolution & Implementing Regulations, aktualna do 2026.
Faza 1 (generowanie): obowiązuje od 4 grudnia 2021. Wszystkie firmy zarejestrowane do VAT muszą wystawiać faktury cyfrowe z QR.
Faza 2 (integracja): wdrażana falami według wielkości firmy od 1 stycznia 2023. Dodaje podpis cyfrowy + rozliczenie ZATCA dla faktur standardowych i raportowanie w czasie rzeczywistym dla faktur uproszczonych.
Faza 1 (generowanie): obowiązuje od 4 grudnia 2021. Wszystkie firmy zarejestrowane do VAT muszą wystawiać faktury cyfrowe z QR.
Faza 2 (integracja): wdrażana falami według wielkości firmy od 1 stycznia 2023. Dodaje podpis cyfrowy + rozliczenie ZATCA dla faktur standardowych i raportowanie w czasie rzeczywistym dla faktur uproszczonych.
Co to jest
QR koduje ciąg Base64. Zdekoduj Base64, aby uzyskać binarną sekwencję TLV z 5 obowiązkowymi polami w stałej kolejności:
| Tag | Pole | Typ | Uwagi |
|---|---|---|---|
01 | Nazwa sprzedawcy | Ciąg UTF-8 | Nazwa handlowa sprzedawcy. Arabski i łaciński oba akceptowane. |
02 | Numer rejestracji VAT | 15 cyfr | Zaczyna się od 3 dla podmiotów saudyjskich. Format: 3XXXXXXXXXXXXX3. |
03 | Znacznik czasu faktury | ISO 8601 | Np. 2026-04-18T10:30:00Z. Musi zawierać strefę czasową. |
04 | Suma faktury (z VAT) | Ciąg dziesiętny | Np. 115.00. Waluta jest domyślnie SAR. |
05 | Kwota VAT | Ciąg dziesiętny | Np. 15.00. Obecna stawka standardowa 15%. |
06 | Hash faktury (Faza 2) | Base64 SHA-256 | SHA-256 kanonicznego XML faktury. |
07 | Podpis cyfrowy (Faza 2) | Base64 | ECDSA na hashu faktury z użyciem certyfikatu CSID sprzedawcy. |
08 | Klucz publiczny (Faza 2) | Base64 X.509 | Klucz publiczny ECDSA sprzedawcy (z CSID). |
09 | Pieczęć ZATCA (Faza 2) | Base64 | Kontrasygnatura ZATCA. Obecna tylko po rozliczeniu ZATCA. |
Każdy rekord TLV to 1 bajt tagu + 1 bajt długości + <długość> bajtów wartości. Cała sekwencja jest następnie zakodowana Base64 jako ładunek QR.
Faza 1 (uproszczona) vs Faza 2 (integracja)
| Aspekt | Faza 1 | Faza 2 |
|---|---|---|
| Treść QR | Tylko tagi 01–05 | Tagi 01–05 plus 06, 07, 08, opcjonalnie 09 |
| Integracja ZATCA | Brak, offline | API w czasie rzeczywistym dla faktur uproszczonych, przepływ rozliczenia dla faktur standardowych |
| Wymagane certyfikaty | Nie | Tak, CSID (Cryptographic Stamp Identifier) wydany przez ZATCA |
| Data wejścia w życie | 2021-12-04 (wszystkie firmy) | 2023-01-01 (stopniowe fale według przychodów) |
| Zakres faktury | B2C (uproszczona) + B2B (standardowa) | B2C uproszczona: raport w czasie rzeczywistym. B2B standardowa: rozliczenie (wstępna weryfikacja) przed wystawieniem. |
Kanoniczne wektory testowe
Przykład TLV (przed Base64):
01 0A "Acme Saudi" 02 0F "300000000000003" 03 14 "2026-04-18T10:30:00Z" 04 06 "115.00" 05 05 "15.00"Po kodowaniu Base64:
AQpBY21lIFNhdWRpAg8zMDAwMDAwMDAwMDAwMDMDFDIwMjYtMDQtMThUMTA6MzA6MDBaBAYxMTUuMDAFBTE1LjAw| Przypadek | Dane wejściowe | Prefiks Base64 |
|---|---|---|
| Faza 1, minimalna uproszczona | seller=Acme Saudi | AQpBY21lIFNhdWRp... |
| Arabska nazwa sprzedawcy | seller=شركة أكمي | Nazwa sprzedawcy zakodowana UTF-8 wewnątrz TLV przed Base64. |
| Faktura standardowa Fazy 2 | Wszystko powyżej plus hash=<SHA-256 Base64> | Znacznie dłuższy Base64. Dekodery muszą tolerować dodatkowe tagi po 05. |
Typowe pułapki
- Długość numeru VAT. Numery VAT ZATCA mają dokładnie 15 cyfr i zaczynają się oraz kończą na
3. Cokolwiek innego nie przechodzi walidacji po stronie przyjęcia faktury. - Znacznik czasu bez strefy czasowej. Specyfikacja wymaga ISO 8601 z jawną strefą (
Zlub+03:00). Naiwne znaczniki czasu lokalne są odrzucane. - Kolejność kodowania. Pola TLV muszą pojawiać się w kolejności numerów tagów (01, 02, 03, 04, 05, …). Zmiana kolejności powoduje, że QR dekoduje się pomyślnie, ale niektóre walidatory oznaczają go jako niekanoniczny.
- Formatowanie dziesiętne. Suma faktury i kwota VAT używają kropki dziesiętnej (
115.00), a nie przecinka (115,00). Nie ma też separatorów tysięcy. - Waluta jest domyślnie SAR. Faktury w obcej walucie są nadal przeliczane na SAR w polu QR. Bazowy XML może zawierać oryginalną walutę; QR nie.
- Niepowodzenia rozliczenia Fazy 2. Faktura standardowa przesłana do API rozliczeniowego ZATCA może zostać odrzucona (zły CSID, nieprawidłowy XML, błędne obliczenia podatkowe). Faktura jest prawnie nieważna do momentu rozliczenia. Stosuj pętlę ponawiania z wykładniczym cofaniem; nie wystawiaj faktury do czasu pomyślnego rozliczenia.
- Rotacja certyfikatu CSID. Certyfikaty CSID Fazy 2 wygasają (zazwyczaj 1 rok). Zbuduj kontrolę odnowienia w swoim systemie e-fakturowania, inaczej nagle przestaniesz móc wystawiać faktury.
Kompatybilność skanerów
| Czytnik | Obsługa | Uwagi |
|---|---|---|
| Aplikacja ZATCA FATOORA | Natywna | Oficjalna aplikacja ministerstwa; weryfikuje podpisy Fazy 2 względem ZATCA PKI. |
| Saudyjskie oprogramowanie księgowe (SAP B1, Oracle, Microsoft Dynamics) | Natywna (po 2023) | Zlokalizowane wersje saudyjskie mają parsowanie ZATCA w potoku AP. |
| Aparat iOS | Surowy Base64 | Nierozpoznawany jako faktura podatkowa. Użytkownik musi otworzyć aplikację FATOORA. |
| Aparat Android / Google Lens | Surowy Base64 | To samo, brak natywnego parsowania. |
| Narzędzia audytowe innych firm (PwC, KPMG, saudyjskie oddziały Deloitte) | Natywna | Pakiety technologii audytowej parsują i weryfikują podpisy Fazy 2. |
Zobacz też
- /zatca-saudi-einvoice-qr-code/, generator.
- /standards/, powrót do indeksu standardów.
- Portal dla deweloperów ZATCA, oficjalne zasoby i sandbox FATOORA.