EN16931 / XRechnung / Peppol BIS 3 Validator

PEPPOL-EN16931-R055: Invoice total VAT amount and Invoice total VAT amount in accounting currency…

fatal CII UBL auto-fix

What this error means and how to fix it

A Peppol BIS Billing 3.0 rule (OpenPeppol): an extra requirement for invoices sent over the Peppol network, for example electronic addresses (BT-34, BT-49), the business process (BT-23) or code values. This is an error: the invoice is rejected until it is fixed.

Check your invoice against PEPPOL-EN16931-R055 — free

Runs the KoSIT validator 1.6.3, unmodified · result in seconds · the file is not stored · No file at hand? Try a sample invoice

Automatic fix: 9 € per file (excl. VAT where applicable). The sign of the VAT amount in accounting currency (BT-111) is aligned with the invoice VAT amount (BT-110), which is derived from the lines (parameter; customer confirms). The result page shows which errors the repair removes and whether the corrected file then passes — before you pay. Many files? Pilot and Repair API.

Rule text

[PEPPOL-EN16931-R055]-Invoice total VAT amount and Invoice total VAT amount in accounting currency MUST have the same operational sign

XRechnung rule texts are published in German by KoSIT; the text above is the original.

Automatic repair

The sign of the VAT amount in accounting currency (BT-111) is aligned with the invoice VAT amount (BT-110), which is derived from the lines (parameter; customer confirms).

This rule is in the deterministic set of our repair engine (UBL 2.1; measured 2026-10-23: XRechnung 15 broken test invoices accepted after repair, 45 valid invoices unchanged; Peppol BIS Billing 3: 10 official examples unchanged, 40 mutated invoices: 36 accepted after repair, 4 rejected as expected — one documented limit, two with the repair parameter switched off, one where no address could be derived; profile conversion of 33 XRechnung test invoices to Peppol: 30 accepted). For UN/CEFACT CII (Factur-X / ZUGFeRD EN 16931 XML, XRechnung CII) the engine repairs the totals chain, VAT breakdown, rounding, decimals and element order (measured 2026-10-24: 53 valid CEN and XRechnung CII invoices unchanged; 28 broken invoices: 27 accepted after repair, 1 rejected as expected because a VAT exemption reason cannot be derived). Single files: 9 € on the result page; many files: the Repair API — see Pricing.

Where the rule is checked (XPath context and test)
SyntaxSeverityContext (XPath)Test (XPath)
Peppol-UBLfatalubl-creditnote:CreditNote | ubl-invoice:Invoicenot(cbc:TaxCurrencyCode) or (cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:TaxCurrencyCode)] <= 0 and cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:DocumentCurrencyCode)] <= 0) or (cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:TaxCurrencyCode)] >= 0 and cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:DocumentCurrencyCode)] >= 0)
XRechnung-UBLfatalnot(cbc:TaxCurrencyCode) or (cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:TaxCurrencyCode)] <= 0 and cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:DocumentCurrencyCode)] <= 0) or (cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:TaxCurrencyCode)] >= 0 and cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:DocumentCurrencyCode)] >= 0)
XRechnung-CIIfatalnot(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID = $documentCurrencyCode]) or (ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID = $taxCurrencyCode] < 0 and ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID = $documentCurrencyCode] < 0) or (ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID = $taxCurrencyCode] >= 0 and ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID = $documentCurrencyCode] >= 0)

Source: Peppol BIS Billing 3.0 Schematron, UBL (OpenPeppol, docs.peppol.eu validation artefacts 3.0.21).

Source: XRechnung Schematron, CII (itplr-kosit/xrechnung-schematron, Apache-2.0).

Source: XRechnung Schematron, UBL (itplr-kosit/xrechnung-schematron, Apache-2.0).

Check your invoice against this rule