Saudische Fatoora UUID & Hash (ZATCA Phase 2)-Prüfer
Überprüfen Sie die Gültigkeit und Prüfziffer von Saudische Fatoora UUID & Hash (ZATCA Phase 2).
Über die Prüfung von Saudische Fatoora UUID & Hash (ZATCA Phase 2)
Das Fatoora-Projekt ist die staatliche E-Rechnungsplattform Saudi-Arabiens (ZATCA). Phase 2 verlangt, dass jede Rechnung digital signiert wird und einen sequentiellen kryptografischen Hash enthält, der sie mit der vorherigen Rechnung verkettet.
Die Spezifikation verlangt eine kanonische UUID v4 im Tag `<cbc:UUID>` des UBL-2.1-XML und einen Base64-kodierten SHA-256-Hash (44 Zeichen) im Tag `<ext:UBLExtensions>`.
Anatomie & Struktur des Fatoora-QR-Codes (TLV Base64) — Saudi-Arabien
Der E-Rechnungs-QR-Code codiert 5 obligatorische TLV-Tags:
| Position | Feld | Länge | Bedeutung & Regel | Beispiel |
|---|---|---|---|---|
| Tag 1 | Verkäufername | Variabel | Unternehmensname in UTF-8 | Acme Corp |
| Tag 2 | USt-IdNr. des Verkäufers | 15 Ziffern | 15-stellige USt-IdNr. mit 3 an Anfang und Ende | 300123456700003 |
| Tag 3 | Rechnungszeitpunkt | ISO 8601 | Zeitstempel im Format JJJJ-MM-TTHH:mm:ssZ | 2024-01-15T12:00:00Z |
| Tag 4 | Rechnungsgesamtbetrag | Dezimal | Gesamtbetrag inkl. MwSt. | 115.00 |
| Tag 5 | MwSt-Betrag | Dezimal | Ausgewiesener Steuerbetrag | 15.00 |
TLV- und Base64-Codierung (ZATCA Fatoora)
Codierungsalgorithmus für den steuerlichen QR-Code:
Binäre TLV-Verkettung + Base64-Codierung
- 1. Für jedes Feld (1 bis 5) Tag-Nummer (1 Byte) schreiben.
- 2. Länge in Bytes (1 Byte) schreiben.
- 3. Textbytes in UTF-8 schreiben.
- 4. Alle Blöcke verketten und den Binärpuffer als Base64 codieren.