Skip to content
Log in

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.

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.

ZATCA-Rechnungen werden von saudi-arabischen Unternehmen ausgestellt. Das Konto muss country: "sa" haben. Die folgenden Felder sind für SA-Konten erforderlich:

API-ParameterBeschreibungHinweise
nameRechtlicher Name des UnternehmensErforderlich
countryMuss "sa" seinErforderlich
addressStraßennameErforderlich
address2GebäudenummerErforderlich — 4-stellige ganze Zahl
cityStadtErforderlich
postalcodePostleitzahlErforderlich
provinceBezirkErforderlich
tin_valueUSt-IdNr. (15 Ziffern)Erforderlich
tin_schemeMuss 9760 sein (SA MwSt.)Erforderlich

Hinweis: Die Felder address2 und province entsprechen den saudi-arabischen Adresskonzepten von Gebäudenummer bzw. Bezirk. Verwenden Sie address2 und province als API-Parameternamen — die API gibt Fehlermeldungen zurück, die auf diese Namen verweisen.

Kontakte (Käufer) für ZATCA-Rechnungen müssen ebenfalls korrekte Adressdaten aufweisen. Die folgenden Felder gelten, wenn country gleich "sa" ist:

API-ParameterBeschreibungHinweise
nameRechtlicher Name des KäufersErforderlich
countryISO-2-LändercodeErforderlich
addressStraßennameErforderlich für SA-Kontakte mit aktiviertem ZATCA
address2GebäudenummerErforderlich für SA-Kontakte mit aktiviertem ZATCA
cityStadtErforderlich für SA-Kontakte mit aktiviertem ZATCA
postalcodePostleitzahlErforderlich für SA-Kontakte mit aktiviertem ZATCA
provinceBezirkErforderlich für SA-Kontakte mit aktiviertem ZATCA
tin_valueUSt-IdNr.Erforderlich für B2B-Rechnungen
tin_scheme9760 für SA MwSt.; siehe Käufer-ID-Typen für ausländische KäuferErforderlich

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:

Terminal window
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"
}
]
}
]
}
}'

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.

KategorieBeschreibungSatzBefreiungscode erforderlich?
SStandardsatz15%Nein
EVon MwSt. befreit0%Ja — VATEX-SA-29, VATEX-SA-29-7 oder VATEX-SA-30
ZNullsatz0%Ja — siehe Tabelle unten
OAußerhalb des Geltungsbereichs0%Nein

Der Befreiungscode wird im Feld comment der Steuerzeile gesetzt:

{
"name": "VAT",
"percent": 0.0,
"category": "Z",
"comment": "VATEX-SA-32"
}
CodeBeschreibung
VATEX-SA-29Finanzdienstleistungen gemäß Artikel 29 der MwSt.-Verordnung
VATEX-SA-29-7Lebensversicherungsdienstleistungen gemäß Artikel 29 der MwSt.-Verordnung
VATEX-SA-30Immobilientransaktionen gemäß Artikel 30 der MwSt.-Verordnung
CodeBeschreibung
VATEX-SA-32Export von Waren
VATEX-SA-33Export von Dienstleistungen
VATEX-SA-34-1Internationaler Warentransport
VATEX-SA-34-2Internationaler Personentransport
VATEX-SA-34-3Dienstleistungen, die direkt mit der Erbringung internationaler Personentransporte verbunden sind
VATEX-SA-34-4Lieferung eines qualifizierenden Transportmittels
VATEX-SA-34-5Dienstleistungen im Zusammenhang mit Waren- oder Personentransport (Artikel 25 der MwSt.-Verordnung)
VATEX-SA-35Medikamente und medizinische Geräte
VATEX-SA-36Qualifizierte Metalle
VATEX-SA-EDUPrivate Bildung für Staatsangehörige
VATEX-SA-HEAPrivate Gesundheitsversorgung für Staatsangehörige
VATEX-SA-MLTRYLieferung qualifizierter Militärgüter
VATEX-SA-DIPLOMATQualifizierte Lieferungen an diplomatische Missionen
VATEX-SA-DUTYFREEQualifizierte Warenlieferung in Duty-Free-Bereichen
VATEX-SA-32(bis)Lieferung unter Zollaussetzungsregelung
VATEX-SA-ROYALDECREELieferung, bei der die Regierung die MwSt. trägt

Kategorie O — Außerhalb des Geltungsbereichs

Section titled “Kategorie O — Außerhalb des Geltungsbereichs”
CodeBeschreibung
VATEX-SA-OOSDienstleistungen außerhalb des Steuerbereichs / Nicht MwSt.-pflichtig (Freitext je Fall)

Für ausländische Käufer (nicht SA) verwenden Sie tin_scheme, um den Bezeichnertyp anzugeben:

tin_schemeBeschreibung
9760Saudi-arabische USt-IdNr.
0002EU-USt-IdNr.
0003Reisepassnummer
0004Amtlicher Ausweis (Wohnsitzland)
0005Wohnsitzbescheinigung
0006Sonstiges Dokument
0007Nicht registriert

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:

Feldzuordnung: Rechnungs-API → ZATCA XML

Section titled “Feldzuordnung: Rechnungs-API → ZATCA XML”
Rechnungs-API-FeldZATCA XML-Element
numbercbc:ID
datecbc:IssueDate
company.tin_valueSupplier cbc:CompanyID
company.address2Supplier cbc:BuildingNumber
company.provinceSupplier cbc:District
contact.tin_valueCustomer cbc:CompanyID
contact.address2Customer cbc:BuildingNumber
contact.provinceCustomer cbc:District
tax.percentcbc:Percent
tax.categorycbc:ID in cac:TaxCategory
tax.commentcbc:TaxExemptionReasonCode
invoice.totalcbc:TaxInclusiveAmount
invoice.subtotalcbc:TaxExclusiveAmount