Official rule text
[PEPPOL-EN16931-R005] VAT accounting currency code MUST be different from invoice currency code when provided.
Why this error occurs
The VAT accounting currency code (BT-6) exists only to report VAT in a currency different from the invoice currency (BT-5); if both are the same the element is meaningless and Peppol forbids it. The rule compares cbc:TaxCurrencyCode with cbc:DocumentCurrencyCode (UBL) or ram:TaxCurrencyCode with ram:InvoiceCurrencyCode (CII). It is almost always caused by software that always emits the tax currency element, filled with the document currency.
How to fix it
Remove cbc:TaxCurrencyCode / ram:TaxCurrencyCode when it equals the invoice currency; also remove the second cac:TaxTotal (UBL) or second ram:TaxTotalAmount (CII) that carried BT-111 in that currency. Only keep BT-6 for genuine cross-currency cases (e.g. invoice in USD, VAT reported in EUR), and then provide the VAT total in that currency (BR-53).
Example (valid)
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>PO-55821</cbc:BuyerReference>
What the validator checks
Checked element (context):
UBL
cbc:TaxCurrencyCodeTest (XPath):
not(normalize-space(text()) = normalize-space(../cbc:DocumentCurrencyCode/text()))CII
ram:ApplicableHeaderTradeSettlementTest (XPath):
not(ram:TaxCurrencyCode) or normalize-space(ram:TaxCurrencyCode/text()) != normalize-space(ram:InvoiceCurrencyCode/text())
Check your invoice
Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.
Same check via API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRelated rules
PEPPOL-EN16931-R001Business process identifier (BT-23) is missingPEPPOL-EN16931-R002No more than one note is allowed on document level, unless both the buyer and seller…PEPPOL-EN16931-R003Neither buyer reference nor purchase order reference givenPEPPOL-EN16931-R004Specification identifier is not the Peppol BIS Billing 3.0 identifierPEPPOL-EN16931-R006Only one invoiced object is allowed on document levelPEPPOL-EN16931-R007Business process identifier has the wrong formatPEPPOL-EN16931-R008Document contains empty elementsPEPPOL-EN16931-R010Buyer electronic address (BT-49) is missing
Frequently asked questions
What does PEPPOL-EN16931-R005 mean?
PEPPOL-EN16931-R005 is a peppol bis billing 3.0 rule: VAT accounting currency code MUST be different from invoice currency code when provided.
Will my invoice be rejected because of PEPPOL-EN16931-R005?
Yes. PEPPOL-EN16931-R005 is flagged "fatal"; validators (KoSIT, Peppol access points, the German ZRE/OZG-RE portals) reject the invoice until it is fixed.
Which formats does PEPPOL-EN16931-R005 apply to?
Invoices and credit notes sent over the Peppol network (UBL) and, because XRechnung embeds the Peppol rule set, every XRechnung as well. Syntax: UBL and CII.
Source: Peppol BIS Billing 3.0.20 (November 2025). Catalogue generated from the official schematron on 2026-10-14.