Fehlercodes · EN 16931
Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110)
So lautet die Ablehnung wörtlich: „[BR-CO-15] BR-CO-15 fires when the gross invoice total does not equal the net total plus the VAT total. It is the last arithmetic check in the totals chain and the one buyers care about most, because BT-112 is the amount actually payable. The rule also carries a second, less obvious requirement: the document must contain exactly one cac:TaxTotal/cbc:TaxAmount in the document currency, so an extra TaxTotal for a VAT accounting currency fails BR-CO-15 even when the arithmetic is correct.“
The EN 16931 Schematron rule BR-CO-15 asserts, for every $Currency in cbc:DocumentCurrencyCode: count(cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) eq 1 and cac:LegalMonetaryTotal/xs:decimal(cbc:TaxInclusiveAmount) = round((cac:LegalMonetaryTotal/xs:decimal(cbc:TaxExclusiveAmount) + cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) * 10 * 10) div 100. XPaths: /Invoice/cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount (BT-112), /Invoice/cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount (BT-109), /Invoice/cac:TaxTotal/cbc:TaxAmount (BT-110). Two failure modes follow directly from the expression. Arithmetic failure: BT-112 differs from the rounded sum, typically by one cent when VAT was computed per line and rounded independently of the document total. Cardinality failure: the count(...) eq 1 clause fails when a second cac:TaxTotal is present with the same currencyID, or when the VAT accounting currency TaxTotal is emitted without a distinct currencyID.
<cac:TaxTotal> <cbc:TaxAmount currencyID="EUR">108.37</cbc:TaxAmount> </cac:TaxTotal> <cac:LegalMonetaryTotal> <cbc:TaxExclusiveAmount currencyID="EUR">570.35</cbc:TaxExclusiveAmount> <!-- 570.35 + 108.37 = 678.72, but BT-112 says 678.71 --> <cbc:TaxInclusiveAmount currencyID="EUR">678.71</cbc:TaxInclusiveAmount> <cbc:PayableAmount currencyID="EUR">678.71</cbc:PayableAmount> </cac:LegalMonetaryTotal>
<cac:TaxTotal> <cbc:TaxAmount currencyID="EUR">108.37</cbc:TaxAmount> </cac:TaxTotal> <cac:LegalMonetaryTotal> <cbc:TaxExclusiveAmount currencyID="EUR">570.35</cbc:TaxExclusiveAmount> <cbc:TaxInclusiveAmount currencyID="EUR">678.72</cbc:TaxInclusiveAmount> <cbc:PayableAmount currencyID="EUR">678.72</cbc:PayableAmount> </cac:LegalMonetaryTotal>