Skip to main content

Microtec

Why did FATOORA reject my invoice?

68 FATOORA rejection and warning messages: type the code or paste the message to see what it means, which field it points to and how to fix it.

This page explains FATOORA messages; it does not check your invoice or connect to the platform. Rule texts and levels come from the ZATCA SDK, and the platform response is final.

Try:

ZATCA error codes such as BR-KSA-40 come back with a short message when FATOORA rejects an invoice in Saudi Arabia or accepts it with a warning. Type the code in the search box above or paste the whole response: each message shows its official text, whether it is an error or a warning, the XML field behind it, the usual causes and a fix checklist you can tick off. Every message also downloads as a one-page PDF fix sheet to hand to your developer or solution provider.

In shortAn error means the invoice was not accepted and must be fixed and submitted again. A warning means it was accepted, but ZATCA states that warnings may become rejections later, so fix the cause in the next invoices.

How to look up a ZATCA error code

Search reads three kinds of input: the code alone in any spelling (BR-KSA-40 or br ksa 40), the full platform response with all its codes, or a word from the message. One code opens its explanation straight away; several codes are listed with errors first, because errors are what block the invoice now. Codes in your text that are not explained here yet are named under the result count, so none gets lost.

Example 1: type BR-KSA-40 to open the seller VAT number rule, level Error, field CompanyID in the seller PartyTaxScheme.
Example 2: paste a response containing BR-KSA-61 and BR-CO-15: both appear, BR-CO-15 first because it is an error, then the BR-KSA-61 warning.
Example 3: type "rounding" to list the amount rules that rounding differences trigger, including BR-CO-17: category VAT = taxable amount × rate ÷ 100, so a taxable amount of SAR 1,000.00 at 15% gives VAT of SAR 150.00.

The More filters switch narrows the list by level and invoice type, and the copy-link button inside each explanation gives you a link that opens that message on its own.

Errors and warnings: clearance vs reporting

Standard tax invoices go through clearance: you submit them before handing them to the buyer, and a rejected one is not a valid invoice. Simplified invoices go through reporting: the customer gets them at once and you report them within 24 hours of issue. Either way the response holds one of two outcomes: at least one error, so the invoice is rejected and must be corrected and resubmitted, or warnings only, so it is accepted with them.

The level shown next to each code comes from the validation rule files in the software development kit (SDK) that ZATCA publishes, the same files the platform validates with. If the platform response shows a different level for a code, the response wins, because ZATCA updates the rules between releases.

Reading a FATOORA rejection message

Official messages name the field by its data-model ID: BT for fields inherited from the European e-invoicing standard (BT-31 is the seller VAT number) and KSA for local fields (KSA-16 is the invoice counter). That is why each explanation here gives the XML path, so you can search the file for it. Codes come in three families: BR and BR-CO from the European rules, and BR-KSA from ZATCA's own rules. Some messages have no BR code because they come from other checks: schema, QR code, signature and the hash chain.

To read the QR code or the XML file itself and check its format and amounts, use the e-invoice reader, then come back here with the message code.

The most common FATOORA rejection codes

CodeWhat is wrongCheck first
BR-KSA-40Seller VAT number in the wrong format15 digits, first and last digit 3
BR-KSA-33Invoice counter (ICV)The counter after a system upgrade or move
BR-KSA-70Issue time formatFractions of a second and time zone offset
BR-CO-15Total including VATA discount applied after VAT, and rounding
BR-KSA-84Rate for the standard categoryA zero-rated item coded as category S
BR-KSA-17Reason on a credit noteThe InstructionNote field
invoiceTotalQR total does not match the invoiceCode generated before the last edit

The warnings seen most on standard tax invoices are about missing buyer details: the name (BR-KSA-42), the full national address (BR-KSA-63), and another identifier when the buyer has no VAT number (BR-KSA-81).

Common mistakes when fixing a rejection

  • Editing the XML after signing. Any change, even whitespace, alters the hash and triggers signature and QR errors. Fix the data in your system and sign again.
  • Resubmitting with the old counter and previous hash. Every submission is a new document in the device chain, with the next counter and the hash of the last accepted invoice.
  • Ignoring warnings because the invoice went through. They repeat on every invoice and may turn into rejections when the rules are updated.
  • Fixing only the first message. A response can carry several; paste the whole response here to see all of them.
  • Changing the invoice date to avoid the late-reporting warning. The date stays the real issue date.

What to do after you fix the message

If the invoice was rejected, submit the same invoice again after the correction and confirm the response has no errors. Then look for the cause in the settings rather than in that invoice alone: branch details, the customer record, the invoice template and the scheduled submission job, so it does not come back on the next invoice. If the message concerns how the solution is built (hashing, signing or element order), send the PDF fix sheet to your solution provider with the response text exactly as you received it. To find your business's mandatory integration date, use the ZATCA wave checker.

When rejections show up every day

At Microtec we build accounting software (ERP) that brings sales, purchasing, inventory, finance and HR together, and our solutions are approved by ZATCA. If invoices come out of several systems and each one gets fixed separately, try keeping invoices, customer records and branch details in one place.

Frequently asked questions

What does BR-KSA mean in a ZATCA error?

BR-KSA is the prefix of the validation rules that ZATCA added for the Kingdom on top of the European rules (BR and BR-CO). The number identifies the rule, such as BR-KSA-40 for the seller VAT number, and each rule has an official text naming the field involved.

Is an invoice accepted if FATOORA returns a warning?

A warning alone does not block the invoice; only an error does. ZATCA's detailed guideline says warnings are temporarily accepted and might become rejections in the future, so fix the cause in your system settings before it repeats.

Does this page check my invoice or connect to FATOORA?

No. It explains the messages FATOORA returns; it does not upload files or connect to any server. To check the format of a QR code or XML file in your browser, use the e-invoice reader; the platform's own response is final.

What if my error code is not listed?

The page covers the messages seen most often and names every code in your text that is not explained yet. Look it up in the ZATCA Electronic Invoice XML Implementation Standard and send the full response to your solution provider.

Why was my invoice rejected after I edited the XML by hand?

Because the signature and the QR code carry the file's hash, and any edit after signing breaks the match, so messages such as wrong invoice hashing or hashedXml appear. Correct the data in your system, then sign the invoice and generate its code again.

↑