Validate ZATCA (Fatoora) e-invoices before you submit
Check your Saudi UBL 2.1 e-invoice XML against core EN 16931 and BR-KSA rules — and catch common compliance issues before submission, in plain language. Built for ERP vendors and integrators.
Glissez-déposez votre fichier XML ici
ou parcourir
XML uniquement · 1 Mo max · 20 transactions
Exemples de démonstration
Utilisez-les uniquement pour prévisualiser l'expérience de diagnostic. Votre propre XML reste le flux de travail principal.
Préférez les téléchargements ? XML valide
Les fichiers sont traités en mémoire uniquement — rien n'est stocké ni transmis à des tiers.
EN 16931 core
BR-KSA rules
Readable diagnostics
No account required
Pas seulement de la validation XML
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.
| Couche | Ce que ça détecte |
|---|---|
| UBL 2.1 structure | Required elements, well-formedness |
| Règles EN 16931 | 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 |
Profils supportés
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.
Diagnostics lisibles
| Erreur | Explication |
|---|---|
| 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). |
Guides & Référence
Référence technique
Structure du document
16 champs · 3 règles · 1 tables//*[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 numberChamps
16 définis| Identifiant | Libellé | Type | Obligatoire |
|---|---|---|---|
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 | — |
Règles de validation
3 règlesZATCA-KSA-01WARNINGIfriqa pre-check (advisory): when the buyer country is SA, ZATCA expects a building number (cbc:BuildingNumber) in the buyer address (BR-KSA-63). The official Schematron flags this as a warning, but it is required for submission.
Buyer country code = "SA"
Buyer building number est obligatoire
ZATCA-KSA-02WARNINGIfriqa pre-check (advisory): when the seller country is SA, ZATCA expects a building number (cbc:BuildingNumber) in the seller address (BR-KSA-37). The official Schematron flags this as a warning, but it is required for submission.
Seller country code = "SA"
Seller building number est obligatoire
ZATCA-KSA-03WARNINGIfriqa pre-check (advisory): a ZATCA invoice should reference the Previous Invoice Hash (AdditionalDocumentReference ID="PIH"); the first invoice uses an empty base hash (BR-KSA-61). The official Schematron flags this as a warning, but the hash chain is required for reporting/clearance.
Previous Invoice Hash (PIH) est obligatoire
Tables de référence
1 listesZATCA invoice type codes (UNTDID 1001)
zatca-invoice-type-codesConçu pour
- 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
| Fonctionnalité | Gratuit | Payant |
|---|---|---|
| Single invoice validation | Oui | Oui |
| EN 16931 + BR-KSA diagnostics | Oui | Oui |
| Full business explanation | Partiel | Oui |
| JSON/API report | Preview | Oui |
| Traitement par lot / ZIP | Non | Oui |
| Full BR-KSA coverage | Core | Oui |
| History / saved reports | Non | Oui |
| Accès API | Non | Oui |
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.