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.
<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><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.