ZATCA
Die ZATCA-E-Rechnungsverordnung (Zakat-, Steuer- und Zollbehörde) schreibt vor, dass Unternehmen, die in Saudi-Arabien tätig sind, elektronische Rechnungen im UBL-XML-Format generieren und einreichen müssen. Die REST API von B2Brouter ermöglicht es Ihrem Unternehmen, vollständig ZATCA-konform zu sein, indem XML-Generierung, Hash-Verkettung und Clearance in Ihrem Namen übernommen werden.
Was ist ZATCA E-Invoicing?
Section titled “Was ist ZATCA E-Invoicing?”ZATCA E-Invoicing (Fatoorah) erfordert:
- Die Generierung von Rechnungen im UBL 2.1 XML-Format mit Saudi-spezifischen Erweiterungen.
- Die Berechnung einer SHA-256-Hash-Kette, die jede Rechnung mit der vorherigen verknüpft.
- Die Einreichung jeder Rechnung bei der ZATCA Clearance API zur Validierung und digitalen Signierung.
- Die Einbindung des von ZATCA zurückgegebenen QR-Codes in die ausgestellte Rechnung.
Mit B2Brouter können Sie all dies auslagern. Sie stellen Rechnungen aus oder erstellen Steuerberichte über REST-Aufrufe, und B2Brouter übernimmt Verkettung, Clearance und QR-Code-Generierung.
Konto- (Unternehmens-) Anforderungen
Section titled “Konto- (Unternehmens-) Anforderungen”ZATCA-Rechnungen werden von saudi-arabischen Unternehmen ausgestellt. Das Konto muss country: "sa" haben. Die folgenden Felder sind für SA-Konten erforderlich:
| API-Parameter | Beschreibung | Hinweise |
|---|---|---|
name | Rechtlicher Name des Unternehmens | Erforderlich |
country | Muss "sa" sein | Erforderlich |
address | Straßenname | Erforderlich |
address2 | Gebäudenummer | Erforderlich — 4-stellige ganze Zahl |
city | Stadt | Erforderlich |
postalcode | Postleitzahl | Erforderlich |
province | Bezirk | Erforderlich |
tin_value | USt-IdNr. (15 Ziffern) | Erforderlich |
tin_scheme | Muss 9760 sein (SA MwSt.) | Erforderlich |
Hinweis: Die Felder
address2undprovinceentsprechen den saudi-arabischen Adresskonzepten von Gebäudenummer bzw. Bezirk. Verwenden Sieaddress2undprovinceals API-Parameternamen — die API gibt Fehlermeldungen zurück, die auf diese Namen verweisen.
Kontakt-Anforderungen
Section titled “Kontakt-Anforderungen”Kontakte (Käufer) für ZATCA-Rechnungen müssen ebenfalls korrekte Adressdaten aufweisen. Die folgenden Felder gelten, wenn country gleich "sa" ist:
| API-Parameter | Beschreibung | Hinweise |
|---|---|---|
name | Rechtlicher Name des Käufers | Erforderlich |
country | ISO-2-Ländercode | Erforderlich |
address | Straßenname | Erforderlich für SA-Kontakte mit aktiviertem ZATCA |
address2 | Gebäudenummer | Erforderlich für SA-Kontakte mit aktiviertem ZATCA |
city | Stadt | Erforderlich für SA-Kontakte mit aktiviertem ZATCA |
postalcode | Postleitzahl | Erforderlich für SA-Kontakte mit aktiviertem ZATCA |
province | Bezirk | Erforderlich für SA-Kontakte mit aktiviertem ZATCA |
tin_value | USt-IdNr. | Erforderlich für B2B-Rechnungen |
tin_scheme | 9760 für SA MwSt.; siehe Käufer-ID-Typen für ausländische Käufer | Erforderlich |
Rechnungsanforderungen
Section titled “Rechnungsanforderungen”ZATCA-Rechnungen verwenden SAR (Saudi-Riyal) als Währung. Steuern müssen name: "VAT" und category: "S" für den Standardsatz von 15 % verwenden.
Minimales Rechnungsbeispiel:
curl --request POST \ --url https://api-staging.b2brouter.net/accounts/{ACCOUNT_ID}/invoices \ --header 'X-B2B-API-Key: {YOUR_API_KEY}' \ --header 'Content-Type: application/json' \ --data '{ "send_after_import": true, "invoice": { "date": "2025-01-15", "number": "INV-001", "currency": "SAR", "payment_method": 1, "contact": { "name": "Buyer Company Ltd", "address": "King Fahd Road", "address2": "1234", "city": "Riyadh", "postalcode": "12345", "province": "Riyadh", "country": "sa", "tin_value": "310175397400003", "tin_scheme": 9760, "language": "en", "currency": "SAR" }, "invoice_lines_attributes": [ { "quantity": 1.0, "description": "Professional services", "price": 100.0, "taxes_attributes": [ { "name": "VAT", "percent": 15.0, "category": "S" } ] } ] } }'Steuerkategorien und Befreiungscodes
Section titled “Steuerkategorien und Befreiungscodes”ZATCA definiert vier MwSt.-Kategorien. Für die Kategorien E (Befreit) und Z (Nullsatz) ist ein gültiger Befreiungsgrund-Code (comment in der Steuerzeile) erforderlich — die Rechnung wird ohne ihn abgelehnt.
| Kategorie | Beschreibung | Satz | Befreiungscode erforderlich? |
|---|---|---|---|
S | Standardsatz | 15% | Nein |
E | Von MwSt. befreit | 0% | Ja — VATEX-SA-29, VATEX-SA-29-7 oder VATEX-SA-30 |
Z | Nullsatz | 0% | Ja — siehe Tabelle unten |
O | Außerhalb des Geltungsbereichs | 0% | Nein |
Der Befreiungscode wird im Feld comment der Steuerzeile gesetzt:
{ "name": "VAT", "percent": 0.0, "category": "Z", "comment": "VATEX-SA-32"}Gültige VATEX-SA-* Codes
Section titled “Gültige VATEX-SA-* Codes”Kategorie E — Von MwSt. befreit
Section titled “Kategorie E — Von MwSt. befreit”| Code | Beschreibung |
|---|---|
VATEX-SA-29 | Finanzdienstleistungen gemäß Artikel 29 der MwSt.-Verordnung |
VATEX-SA-29-7 | Lebensversicherungsdienstleistungen gemäß Artikel 29 der MwSt.-Verordnung |
VATEX-SA-30 | Immobilientransaktionen gemäß Artikel 30 der MwSt.-Verordnung |
Kategorie Z — Nullsatz
Section titled “Kategorie Z — Nullsatz”| Code | Beschreibung |
|---|---|
VATEX-SA-32 | Export von Waren |
VATEX-SA-33 | Export von Dienstleistungen |
VATEX-SA-34-1 | Internationaler Warentransport |
VATEX-SA-34-2 | Internationaler Personentransport |
VATEX-SA-34-3 | Dienstleistungen, die direkt mit der Erbringung internationaler Personentransporte verbunden sind |
VATEX-SA-34-4 | Lieferung eines qualifizierenden Transportmittels |
VATEX-SA-34-5 | Dienstleistungen im Zusammenhang mit Waren- oder Personentransport (Artikel 25 der MwSt.-Verordnung) |
VATEX-SA-35 | Medikamente und medizinische Geräte |
VATEX-SA-36 | Qualifizierte Metalle |
VATEX-SA-EDU | Private Bildung für Staatsangehörige |
VATEX-SA-HEA | Private Gesundheitsversorgung für Staatsangehörige |
VATEX-SA-MLTRY | Lieferung qualifizierter Militärgüter |
VATEX-SA-DIPLOMAT | Qualifizierte Lieferungen an diplomatische Missionen |
VATEX-SA-DUTYFREE | Qualifizierte Warenlieferung in Duty-Free-Bereichen |
VATEX-SA-32(bis) | Lieferung unter Zollaussetzungsregelung |
VATEX-SA-ROYALDECREE | Lieferung, bei der die Regierung die MwSt. trägt |
Kategorie O — Außerhalb des Geltungsbereichs
Section titled “Kategorie O — Außerhalb des Geltungsbereichs”| Code | Beschreibung |
|---|---|
VATEX-SA-OOS | Dienstleistungen außerhalb des Steuerbereichs / Nicht MwSt.-pflichtig (Freitext je Fall) |
Käufer-ID-Typen
Section titled “Käufer-ID-Typen”Für ausländische Käufer (nicht SA) verwenden Sie tin_scheme, um den Bezeichnertyp anzugeben:
tin_scheme | Beschreibung |
|---|---|
9760 | Saudi-arabische USt-IdNr. |
0002 | EU-USt-IdNr. |
0003 | Reisepassnummer |
0004 | Amtlicher Ausweis (Wohnsitzland) |
0005 | Wohnsitzbescheinigung |
0006 | Sonstiges Dokument |
0007 | Nicht registriert |
Lebenszyklus des Steuerberichts
Section titled “Lebenszyklus des Steuerberichts”Nach dem Erstellen oder Senden einer Rechnung ist das ZATCA-Clearance-Verfahren asynchron. Der tax_report befindet sich anfänglich im Status processing.
Überwachen Sie den Fortschritt über:
- Webhook (empfohlen): Abonnieren Sie den Webhook für Steuerberichtsstatusänderungen. Finale Status sind
registered,error,registered_with_errors. - Polling: Rufen Sie den Endpunkt zum Abrufen eines Steuerberichts auf, bis der Status final ist.
Feldzuordnung: Rechnungs-API → ZATCA XML
Section titled “Feldzuordnung: Rechnungs-API → ZATCA XML”| Rechnungs-API-Feld | ZATCA XML-Element |
|---|---|
number | cbc:ID |
date | cbc:IssueDate |
company.tin_value | Supplier cbc:CompanyID |
company.address2 | Supplier cbc:BuildingNumber |
company.province | Supplier cbc:District |
contact.tin_value | Customer cbc:CompanyID |
contact.address2 | Customer cbc:BuildingNumber |
contact.province | Customer cbc:District |
tax.percent | cbc:Percent |
tax.category | cbc:ID in cac:TaxCategory |
tax.comment | cbc:TaxExemptionReasonCode |
invoice.total | cbc:TaxInclusiveAmount |
invoice.subtotal | cbc:TaxExclusiveAmount |