Validate ZATCA (Fatoora) e-invoices before you submit
Check your Saudi UBL 2.1 e-invoice XML against EN 16931 and core BR-KSA rules — and see exactly what will be rejected, in plain language. Built for ERP vendors and integrators.
Ziehen Sie Ihre XML-Datei hierher
oder zum Durchsuchen klicken
Nur XML · max. 1 MB · 20 Transaktionen
Geführte Demo-Beispiele
Verwenden Sie diese nur, um die Diagnoseansicht vorab zu testen. Ihre eigene XML-Datei bleibt der Hauptablauf.
Downloads bevorzugt? gültige XML
Dateien werden nur im Arbeitsspeicher verarbeitet — nichts wird gespeichert oder an Dritte übertragen.
EN 16931 core
BR-KSA rules
Readable diagnostics
No account required
Mehr als nur XML-Validierung
A valid XSD is not a compliant ZATCA invoice.
ZATCA rejects invoices for EN 16931 and BR-KSA business-rule reasons XSD never checks. Ifriqa combines structure checks, EN 16931 rules, KSA-specific rules and readable reports.
| Ebene | Was erkannt wird |
|---|---|
| UBL 2.1 structure | Required elements, well-formedness |
| EN-16931-Regeln | Invoice number, dates, type code, parties, currency |
| BR-KSA rules | SAR tax currency, seller VAT format, building number (SA), Previous Invoice Hash |
| Explanation layer | Human-readable diagnostics and machine-readable JSON |
Unterstützte Profile
Built for the ZATCA Phase 2 wave
Pre-check the UBL XML your ERP or middleware produces against EN 16931 + BR-KSA before it reaches the ZATCA clearance/reporting API — and get readable reasons for every failure.
Cryptographic signature, QR content and clearance are out of scope — this is a pre-submission validator, not a generator.
Lesbare Diagnosen
| Fehler | Erklärung |
|---|---|
| Missing UUID / PIH | ZATCA requires a UUID and a Previous Invoice Hash (hash chain) on every invoice. |
| Tax currency not SAR | The tax currency code must be SAR for KSA invoices. |
| Missing building number (SA) | When the party country is SA, the postal address must include a building number (BR-KSA-63). |
Anleitungen & Referenz
Technische Referenz
Dokumentstruktur
16 Felder · 14 Regeln · 1 Tabellen//*[local-name()='Invoice']invoice.profileIdProfileIDinvoice.idInvoice numberinvoice.uuidInvoice UUIDinvoice.issueDateIssue dateinvoice.typeCodeInvoice type codeinvoice.currencyCodeDocument currency codeinvoice.taxCurrencyCodeTax currency codeinvoice.pihPrevious Invoice Hash (PIH)invoice.qrQR code (base64 TLV)seller.nameSeller nameseller.vatSeller VAT registration numberseller.countryCodeSeller country codeseller.buildingNumberSeller building numberbuyer.nameBuyer namebuyer.countryCodeBuyer country codebuyer.buildingNumberBuyer building numberFelder
16 definiert| Kennung | Bezeichnung | Typ | Pflichtfeld |
|---|---|---|---|
invoice.profileId | ProfileID | ID | — |
invoice.id | Invoice number | ID | — |
invoice.uuid | Invoice UUID | ID | — |
invoice.issueDate | Issue date | ISO_DATE_EXTENDED | — |
invoice.typeCode | Invoice type code | CODE | — |
invoice.currencyCode | Document currency code | CURRENCY_CODE | — |
invoice.taxCurrencyCode | Tax currency code | CURRENCY_CODE | — |
invoice.pih | Previous Invoice Hash (PIH) | TEXT | — |
invoice.qr | QR code (base64 TLV) | TEXT | — |
seller.name | Seller name | TEXT | — |
seller.vat | Seller VAT registration number | VAT_KSA | — |
seller.countryCode | Seller country code | COUNTRY_CODE | — |
seller.buildingNumber | Seller building number | TEXT | — |
buyer.name | Buyer name | TEXT | — |
buyer.countryCode | Buyer country code | COUNTRY_CODE | — |
buyer.buildingNumber | Buyer building number | TEXT | — |
Validierungsregeln
14 RegelnZATCA-PROF-001ERRORA ZATCA invoice must carry a ProfileID (cbc:ProfileID), e.g. "reporting:1.0".
ProfileID ist erforderlich
ZATCA-HDR-001ERRORAn invoice shall have an invoice number (cbc:ID). (EN16931 BR-02)
Invoice number ist erforderlich
ZATCA-HDR-002ERRORA ZATCA invoice must carry a unique identifier (cbc:UUID).
Invoice UUID ist erforderlich
ZATCA-HDR-003ERRORAn invoice shall have an issue date (cbc:IssueDate). (EN16931 BR-03)
Issue date ist erforderlich
ZATCA-HDR-004ERRORAn invoice shall specify a document type code (cbc:InvoiceTypeCode). (EN16931 BR-04)
Invoice type code ist erforderlich
ZATCA-HDR-005ERRORThe invoice type code must be one of the accepted ZATCA UNTDID 1001 codes (388 tax invoice, 383 debit note, 381 credit note, 386 prepayment).
Invoice type code ist vorhanden
Invoice type code ∈ ZATCA invoice type codes (UNTDID 1001): {388, 383, 381, 386}
ZATCA-CUR-001ERRORAn invoice shall specify the document currency code (cbc:DocumentCurrencyCode).
Document currency code ist erforderlich
ZATCA-CUR-002ERRORThe tax currency code (cbc:TaxCurrencyCode) must be SAR for ZATCA invoices. (BR-KSA)
Tax currency code ist vorhanden
Tax currency code = "SAR"
ZATCA-SEL-001ERRORAn invoice shall contain the seller name (PartyLegalEntity/RegistrationName). (EN16931 BR-06)
Seller name ist erforderlich
ZATCA-SEL-002ERRORThe seller VAT registration number (PartyTaxScheme/CompanyID) is required and must be 15 digits starting and ending with 3.
Seller VAT registration number ist erforderlich
ZATCA-BUY-001ERRORAn invoice shall contain the buyer name (PartyLegalEntity/RegistrationName). (EN16931 BR-07)
Buyer name ist erforderlich
ZATCA-KSA-01ERRORWhen the buyer country is SA, the buyer postal address must include a building number (cbc:BuildingNumber). (BR-KSA-63)
Buyer country code = "SA"
Buyer building number ist erforderlich
ZATCA-KSA-02ERRORWhen the seller country is SA, the seller postal address must include a building number (cbc:BuildingNumber). (BR-KSA)
Seller country code = "SA"
Seller building number ist erforderlich
ZATCA-KSA-03ERRORA ZATCA invoice must reference the Previous Invoice Hash (AdditionalDocumentReference ID="PIH"); the first invoice uses an empty base hash. (BR-KSA hash chain)
Previous Invoice Hash (PIH) ist erforderlich
Referenztabellen
1 ListenZATCA invoice type codes (UNTDID 1001)
zatca-invoice-type-codesEntwickelt für
- ERP and accounting software vendors serving KSA clients
- Integrators and middleware connecting ERPs to ZATCA
- Developers implementing ZATCA Phase 2 export
- Consultants debugging ZATCA rejections
| Funktion | Kostenlos | Kostenpflichtig |
|---|---|---|
| Single invoice validation | Ja | Ja |
| EN 16931 + BR-KSA diagnostics | Ja | Ja |
| Full business explanation | Teilweise | Ja |
| JSON/API report | Preview | Ja |
| Stapel / ZIP | Nein | Ja |
| Full BR-KSA coverage | Core | Ja |
| History / saved reports | Nein | Ja |
| API-Zugriff | Nein | Ja |
Need batch validation or an API for your ERP?
API access, ZIP/batch processing, saved reports and full BR-KSA coverage are planned for paid usage.