PEPPOL-EN16931-R054

A second tax block without a breakdown is permitted only where a separate VAT accounting currency (BT-6) is given — and then exactly one. It states the tax total in the reporting currency.

Severity
Error
Applies to
CII, UBL
Rule set
v2026-01-31

Official rule text

Only one tax total amount must be provided where currency id equals tax currency code, if tax currency code (BT-6) is provided.

Why does PEPPOL-EN16931-R054 happen?

The block comes from a template for cross-border invoices and stays behind when BT-6 is not set in a given case. What is left is a tax total in a currency the invoice does not otherwise mention.

How do you fix PEPPOL-EN16931-R054?

Emit the extra cac:TaxTotal without a cac:TaxSubtotal only together with cbc:TaxCurrencyCode — both or neither. The actual breakdown stays in the invoice-currency block, see R053.

In the XML

A UBL fragment. The CII path is named above — same change, different element names.

Fails
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">190.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">190.00</cbc:TaxAmount>
  </cac:TaxSubtotal>
</cac:TaxTotal>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="SEK">2090.00</cbc:TaxAmount>
</cac:TaxTotal>
Fixed
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:TaxCurrencyCode>SEK</cbc:TaxCurrencyCode>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">190.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">190.00</cbc:TaxAmount>
  </cac:TaxSubtotal>
</cac:TaxTotal>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="SEK">2090.00</cbc:TaxAmount>
</cac:TaxTotal>

NormAPI provides technical validation, not tax or legal advice.