PEPPOL-EN16931-R005: Buchungswährung gleich Rechnungswährung

Ist eine Umsatzsteuer-Buchungswährung (BT-6) angegeben, muss sie sich von der Rechnungswährung (BT-5) unterscheiden.

Regelwerk
XRechnung (KoSIT)
Syntax
UBL und CII
Betroffene Felder
–

Offizieller Regeltext

VAT accounting currency code MUST be different from invoice currency code when provided.

Regeltext aus dem XRechnung-Schematron in Version 2.6.0 (KoSIT), Lizenz Apache 2.0; enthalten in der XRechnung-Validatorkonfiguration 2026-08-31. Die Regel stammt aus dem Peppol-Regelwerk und ist Bestandteil des XRechnung-Schematron.

Schweregrad

Ein Verstoß führt im Szenario „XRechnung“ des KoSIT-Validators zur Ablehnung der Rechnung.

Typische Ursachen

BT-6 wird bei jeder Rechnung pauschal mit EUR befüllt, auch wenn die Rechnung bereits in Euro ausgestellt ist.

So behebst du den Fehler

BT-6 nur angeben, wenn die Rechnung in einer anderen Währung ausgestellt ist.

Der Validator meldet hier mehrere Folgefehler, weil die zwei Steuerbeträge dann dieselbe Währung tragen – in UBL BR-CO-15, in CII zusätzlich BR-53, PEPPOL-EN16931-R053 und -R054.

Geprüftes Beispiel: falsch und richtig

Die Auszüge stammen aus vollständigen, synthetischen Rechnungen des E-Rechnungs-Testkorpus. Geänderte Zeilen sind hervorgehoben. Beide Dateien werden in den automatischen Tests mit dem KoSIT-Validator geprüft.

Bei den Beispielen meldet der Validator außer PEPPOL-EN16931-R005 auch: BR-53, BR-CO-15, PEPPOL-EN16931-R053, PEPPOL-EN16931-R054.

Beispiel in UBL

Änderung gegenüber der gültigen Rechnung: Buchungswährung (BT-6) gleich Rechnungswährung.

Falsch – ab Zeile 10
<cbc:Note>Umrechnungskurs für die Umsatzsteuer: 1 USD = 0,8623 EUR (Testwert).</cbc:Note>
<cbc:DocumentCurrencyCode>USD</cbc:DocumentCurrencyCode>
<cbc:TaxCurrencyCode>USD</cbc:TaxCurrencyCode>
<cbc:BuyerReference>TEST-REF-2026-0815</cbc:BuyerReference>
<cac:OrderReference>
Richtig – ab Zeile 10
<cbc:Note>Umrechnungskurs für die Umsatzsteuer: 1 USD = 0,8623 EUR (Testwert).</cbc:Note>
<cbc:DocumentCurrencyCode>USD</cbc:DocumentCurrencyCode>
<cbc:TaxCurrencyCode>EUR</cbc:TaxCurrencyCode>
<cbc:BuyerReference>TEST-REF-2026-0815</cbc:BuyerReference>
<cac:OrderReference>
Falsch – ab Zeile 107
</cac:TaxTotal>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="USD">75.91</cbc:TaxAmount>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
Richtig – ab Zeile 107
</cac:TaxTotal>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">65.46</cbc:TaxAmount>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>

Prüfergebnis (KoSIT-Validator 1.6.3, Konfiguration 2026-08-31): falsche Datei abgelehnt, korrigierte Datei angenommen. Meldungen zur falschen Datei:

  • BR-CO-15 Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110). Fundstelle: /Invoice[1]
  • PEPPOL-EN16931-R005 VAT accounting currency code MUST be different from invoice currency code when provided. Fundstelle: /Invoice[1]/TaxCurrencyCode[1]

Vollständige Dateien im Testkorpus: peppol-r005-buchungswaehrung-gleich_ubl.xml (falsch) und fremdwaehrung_ubl.xml (richtig).

Beispiel in CII

Änderung gegenüber der gültigen Rechnung: Buchungswährung (BT-6) gleich Rechnungswährung.

Falsch – ab Zeile 147
<ram:ApplicableHeaderTradeSettlement>
  <ram:PaymentReference>TEST-2026-0009</ram:PaymentReference>
  <ram:TaxCurrencyCode>USD</ram:TaxCurrencyCode>
  <ram:InvoiceCurrencyCode>USD</ram:InvoiceCurrencyCode>
  <ram:SpecifiedTradeSettlementPaymentMeans>
Richtig – ab Zeile 147
<ram:ApplicableHeaderTradeSettlement>
  <ram:PaymentReference>TEST-2026-0009</ram:PaymentReference>
  <ram:TaxCurrencyCode>EUR</ram:TaxCurrencyCode>
  <ram:InvoiceCurrencyCode>USD</ram:InvoiceCurrencyCode>
  <ram:SpecifiedTradeSettlementPaymentMeans>
Falsch – ab Zeile 177
<ram:TaxBasisTotalAmount>399.55</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="USD">75.91</ram:TaxTotalAmount>
<ram:TaxTotalAmount currencyID="USD">75.91</ram:TaxTotalAmount>
<ram:GrandTotalAmount>475.46</ram:GrandTotalAmount>
<ram:DuePayableAmount>475.46</ram:DuePayableAmount>
Richtig – ab Zeile 177
<ram:TaxBasisTotalAmount>399.55</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="USD">75.91</ram:TaxTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">65.46</ram:TaxTotalAmount>
<ram:GrandTotalAmount>475.46</ram:GrandTotalAmount>
<ram:DuePayableAmount>475.46</ram:DuePayableAmount>

Prüfergebnis (KoSIT-Validator 1.6.3, Konfiguration 2026-08-31): falsche Datei abgelehnt, korrigierte Datei angenommen. Meldungen zur falschen Datei:

  • BR-CO-15 Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110). Fundstelle: /CrossIndustryInvoice[1]
  • BR-53 If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided. Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/ApplicableHeaderTradeSettlement[1]/SpecifiedTradeSettlementHeaderMonetarySummation[1]
  • PEPPOL-EN16931-R005 VAT accounting currency code MUST be different from invoice currency code when provided. Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/ApplicableHeaderTradeSettlement[1]
  • PEPPOL-EN16931-R053 No more than one tax total amount must be provided where currency id equals document currency code. Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/ApplicableHeaderTradeSettlement[1]
  • PEPPOL-EN16931-R054 Only one tax total amount must be provided where currency id equals tax currency code, if tax currency code (BT-6) is provided. Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/ApplicableHeaderTradeSettlement[1]

Vollständige Dateien im Testkorpus: peppol-r005-buchungswaehrung-gleich_cii.xml (falsch) und fremdwaehrung_cii.xml (richtig).

Testdateien zu PEPPOL-EN16931-R005

Technische Details: Kontext und Prüfausdruck aus dem Schematron

CII

Kontext:

ram:ApplicableHeaderTradeSettlement

Prüfausdruck:

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

UBL

Kontext:

cbc:TaxCurrencyCode

Prüfausdruck:

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

Technische Formatprüfung nach XRechnung 3.0.2; keine steuerliche oder rechtliche Beratung.