Check your file
The checker covers 38 rules only and does not check the signature, the hash or the certificate. ZATCA SDK is the reference.
The rules we check (38)
- BR-KSA-03 Invoice unique identifier (UUID) is missing
- BR-KSA-04 Issue date is later than today
- BR-KSA-05 Invoice type code is not allowed
- BR-KSA-06 Transaction code (KSA-2) is incomplete
- BR-KSA-08 Seller identifier or its type is wrong
- BR-KSA-09 Seller address is incomplete
- BR-KSA-17 Credit or debit note reason is missing
- BR-KSA-18 VAT category is not S, Z, E or O
- BR-KSA-27 QR code is missing from the invoice
- BR-KSA-33 Invoice counter (ICV) is missing
- BR-KSA-34 Invoice counter (ICV) holds more than digits
- BR-KSA-37 Seller building number is not 4 digits
- BR-KSA-39 Seller VAT number is missing
- BR-KSA-40 Seller VAT number is not 15 digits starting and ending with 3
- BR-KSA-42 Buyer name is missing on a tax invoice
- BR-KSA-44 Buyer VAT number is invalid
- BR-KSA-56 Credit or debit note without the original invoice number
- BR-KSA-60 Cryptographic stamp is missing from a simplified invoice
- BR-KSA-61 Previous invoice hash (PIH) is missing
- BR-KSA-63 Saudi buyer address is incomplete
- BR-KSA-66 Seller postal code is not 5 digits
- BR-KSA-67 Saudi buyer postal code is not 5 digits
- BR-KSA-68 Tax currency code is missing
- BR-KSA-69 Zero-rate or exemption reason code is missing
- BR-KSA-70 Issue time is in a format that is not accepted
- BR-KSA-84 Standard-rate VAT is not 15 or 5
- BR-KSA-CL-04 Zero-rate or exemption reason code does not fit the category
- BR-KSA-EN16931-01 Business process (ProfileID) is not reporting:1.0
- BR-KSA-EN16931-02 Tax currency is not SAR
- BR-KSA-EN16931-08 More than one tax total with a breakdown
- BR-KSA-EN16931-11 Line amount does not equal quantity × price
- BR-KSA-F-04 Negative amount or quantity
- BR-S-08 Standard-rate taxable amount does not match the lines
- BR-S-09 Standard-rate VAT does not equal amount × rate
- BR-CO-14 Total VAT does not equal the sum of category VAT
- BR-CO-15 Total with VAT does not equal net total + VAT
- BR-CO-17 Category VAT does not equal amount × rate
- BR-16 Invoice has no line
What we do not check
The digital signature, the invoice hash, the device certificate, and the chain between two files. These two rules are not checked in the browser because they need the previous invoice or the signature:
- BR-KSA-16 Payment means code (BT-81) in an invoice exist, then it must contain one of the values from subset of UNTDID 4461 code list
- BR-KSA-26 If the invoice contains the previous invoice hash (KSA-13), this hash must be base64 encoded SHA256. The hash shall be computed using the following method as described in the ds:transforms block in the XML Invoice Specifications: 1. Remove the <Invoice><ext:UBLExtensions/> block 2. Remove the <Invoice><cac:AdditionalDocumentReference/> block where <cbc:ID/> = QR 3. Remove the <Invoice><cac:Signature/> block 4. Canonicalize the Invoice using the C14N11 standard 5. Hash the resulting string using SHA256 to a binary object 6. Base64 encode the binary object to generate the digest value For the first invoice, the previous invoice hash is "NWZlY2ViNjZmZmM4NmYzOGQ5NTI3ODZjNmQ2OTZjNzljMmRiYzIzOWRkNGU5MWI0NjcyOWQ3M2EyN2ZiNTdlOQ==", the equivalent for base64 encoded SHA256 of "0" (zero) character.
Source: ZATCA E-Invoicing SDK 238-R3.3.8 · Checked: 26 October 2026 · Open source under the MIT License: /js/ref-xml.js
Frequently asked questions
Does the file leave my device?
No. The browser reads and checks the file on the same page, and nothing is sent.
If no code shows, is my invoice accepted?
No. The tool checks 38 of 240 rules and does not check the signature, the hash or the certificate. ZATCA's SDK and developer portal are the reference.
How did you check the checker?
We ran it on ZATCA's valid samples, where no code fired, and on a wrong example for each rule, where its code fired, and matched the result with ZATCA's SDK.
Last updated: 26 October 2026 · What we don't do · Methodology · Correct us · Changelog
First published 2026-10-26 · Archived copy
First 500 restaurants, cafés, bakeries and sweet shops: a SAR 99 monthly cap.
Instead of SAR 149, per branch, for a full year. Free to join, no commitment.