BR-CO-15 Rejects the invoice

Invoice total with VAT is not the total without VAT plus the VAT

A European totals rule the Authority applies to every invoice: the invoice total with VAT (BT-112) must equal the total without VAT (BT-109) plus the VAT amount (BT-110), to the halala. The message the Authority returns stops after (BT-112) and never states the rest. Severity is error: the invoice is rejected and never recorded.

The message text as the Authority sends it in English, unedited

Invoice total amount with VAT (BT-112)

What does this mean?

Three figures at the foot of the invoice, under cac:LegalMonetaryTotal and the tax block: the total without VAT (BT-109) in cbc:TaxExclusiveAmount, the VAT amount (BT-110) in cac:TaxTotal/cbc:TaxAmount, and the total with VAT (BT-112) in cbc:TaxInclusiveAmount. The rule is plain addition: the third equals the first plus the second, with no halala of tolerance.

The code is not one of the Authority's Saudi rules (BR-KSA) but one of the European EN 16931 rules it applies alongside them, which is why the response files it under category EN_16931. Its message, as the Authority returns it, ends at Invoice total amount with VAT (BT-112) with nothing after it; the full sentence in the standard is that the total with VAT equals the total without VAT plus the total VAT.

Its severity is error: a simplified invoice comes back NOT_REPORTED and a tax invoice is not cleared, so it never enters the Authority records. It often arrives with the QR code error invoiceTotal_QRCODE_INVALID in the same response, because the QR code carries the total with VAT: change the total in the file and not in the code, and the two disagree.

Why does it happen?

Ordered from the most common to the least — your cause is most likely the first or the second.

  • An amount edited in the file after signing: a system that changes the total with VAT or the amount due in the signed XML, as a correction or a test, which breaks the sum and the QR code at once.
  • The total with VAT copied from another source instead of computed: what the customer paid at the till, or the sum of shelf prices, while the total without VAT and the VAT are computed from the lines. Three items at 9.99 including VAT: net 26.07, VAT 3.91, together 29.98, and the file says 29.97 because that is what was paid.
  • Document VAT computed two ways: the sum of line VAT amounts rounded one by one in one place, and the VAT on the taxable base rounded once in another, so they drift apart by a halala or more.
  • A document-level discount taken off one of the two totals and not the other, or taken off twice.

How to fix it

3 steps, then send the invoice again.

  1. 1
    Compute the total with VAT last, as a sum

    Never copy BT-112 from anywhere. Compute the total without VAT from the lines less any document discounts, then the VAT on that base rounded once, then write the total with VAT as exactly their sum. Make sure the VAT amount in the cac:TaxTotal block is the same figure you added, not the sum of the line VAT amounts.

  2. 2
    If what the customer paid differs by a halala, declare it as a discount

    In the example of three items at 9.99 including VAT: the true base is 29.97 divided by 1.15, which is 26.0609, and the written line nets add up to 26.07. Write the 0.01 difference as a document-level discount in a cac:AllowanceCharge directly under the invoice, so the total without VAT becomes 26.06, the VAT is 3.91 computed from 26.0609 and rounded once, and the total with VAT is 29.97, what the customer paid. How to derive the net from an inclusive price is covered under BR-KSA-EN16931-11.

  3. 3
    Do not edit an invoice after signing it: rebuild it

    Any change to an amount after signing breaks the sum and the QR code together. If an amount has to change, rebuild the invoice from its data, sign it again and generate its QR code from the new file. A rejected invoice was never recorded by the Authority, so it needs no credit note: correct it and issue it again as a new invoice, since the rejected one already took its place in the invoice chain.

Once corrected, send the invoice again. A rejected invoice was never recorded with the Authority, so it needs no credit note — send the corrected invoice itself.

Does ZATCA Tools prevent it?

Yes, by construction. ZATCA Tools never takes the total with VAT from an independent source: it computes it from the same taxable base and VAT amount it signs, the VAT is computed on the base and rounded once, and any difference rounding leaves between the lines and what the customer paid is declared as a document-level discount. No amount on an invoice is changed after it is signed.

Related codes

Frequently asked questions

The error message ends at (BT-112). Is it cut off? +
Yes, that is how the Authority returns it. The full rule: the total with VAT (BT-112) equals the total without VAT (BT-109) plus the VAT amount (BT-110). Add the two figures on your invoice and compare the result with the total it states.
A QR code error came with it. Are these two problems? +
Usually one. The QR code carries the total with VAT, so when the total in the file is edited after signing, the sum and the code break at the same moment. Rebuild and re-sign the invoice rather than patching both figures by hand.
Is a one-halala difference allowed? +
There is no tolerance in this rule. The sum has to match to the halala. A halala that rounding creates belongs in a document-level discount, not in an adjusted total.
You fixed this one — now avoid the next

ZATCA Tools builds the signature, the PIH, the counter and the encoding for you, and validates your data before it is sent. Start free, with no credit card.

Start for free

← All ZATCA error codes