Skip to content

PEPPOL-EN16931-R005: VAT accounting currency (BT-6) equals the invoice currency (BT-5)

Official message

[PEPPOL-EN16931-R005] VAT accounting currency code MUST be different from invoice currency code when provided.

XRechnung (CII) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[PEPPOL-EN16931-R005] VAT accounting currency code MUST be different from invoice currency code when provided.

XRechnung (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
XRechnung (CII), XRechnung (UBL)

What does this mean?

If the VAT accounting currency code (BT-6) is provided, it must be different from the invoice currency code (BT-5). Both codes are the same.
The rule originates from Peppol BIS Billing 3.0 and is applied in the XRechnung validation. BT-6 is only intended for the case that the VAT has to be stated additionally in a different currency.

Typical causes

BT-6 was filled in with the same currency as BT-5 as a precaution.
A template or default value (e.g. EUR) was taken over for BT-6.

How to fix the error

Omit BT-6 if the VAT is only stated in the invoice currency; then also omit the VAT amount in accounting currency (BT-111).
If the VAT has to be stated in a different currency, state that currency there and add BT-111 in that currency.
CII: ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode, UBL: cbc:TaxCurrencyCode.
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form, "Experte" view, section "Rechnungsdetails" (invoice details), choose "– nicht angegeben –" (not specified) in the field "Steuerwährung (BT-6)" or a currency other than "Währung (BT-5)".

Example

Wrong

<ram:ApplicableHeaderTradeSettlement>
  <ram:TaxCurrencyCode>EUR</ram:TaxCurrencyCode>
  <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
  ...
</ram:ApplicableHeaderTradeSettlement>

Correct

<ram:ApplicableHeaderTradeSettlement>
  <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
  ...
</ram:ApplicableHeaderTradeSettlement>
For developers: test expression per syntax

XRechnung (CII) (CII)

Context: ram:ApplicableHeaderTradeSettlement

not(ram:TaxCurrencyCode) or normalize-space(ram:TaxCurrencyCode/text()) != normalize-space(ram:InvoiceCurrencyCode/text())

XRechnung (UBL) (UBL)

Context: cbc:TaxCurrencyCode

not(normalize-space(text()) = normalize-space(../cbc:DocumentCurrencyCode/text()))

Related validation rules

Last updated:
Explanation of the validation rule, not legal or tax advice.