Skip to content

BR-DE – XRechnung

BR-DE-19: IBAN (BT-84) invalid for a SEPA credit transfer

WarningXRechnung business rule (KoSIT)

The rule's own wording

[BR-DE-19] "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird.

Source: KoSIT XRechnung, version 3.0.2 (Schematron 2.6.0)

The fix in the XML

Check the IBAN against your bank statement and enter it without spaces: in UBL cbc:ID under cac:PaymentMeans/cac:PayeeFinancialAccount, in CII ram:IBANID in the PayeePartyCreditorFinancialAccount. The IBAN must start with the country code and have the right length.

Before – invalid
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
  <cac:PayeeFinancialAccount>
    <cbc:ID>DE02 1203 0000 0000 2020 15</cbc:ID>
  </cac:PayeeFinancialAccount>
</cac:PaymentMeans>
After – corrected
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
  <cac:PayeeFinancialAccount>
    <cbc:ID>DE02120300000000202051</cbc:ID>
  </cac:PayeeFinancialAccount>
</cac:PaymentMeans>

Meaning of the rule

Your invoice names a SEPA credit transfer (code 58) as the means of payment and gives an account whose IBAN is wrong. The validation service recalculates the check digits of the IBAN; transposed digits, a missing character or a space in the wrong place trigger this rule. For the recipient this is more than a blemish: their software could prepare a payment to a wrong account or hold the invoice.

What usually goes wrong

  • The IBAN was entered with transposed digits or a missing character.
  • The IBAN contains spaces or dots that the software did not remove.
  • An account number and bank code were entered instead of an IBAN.

Questions and answers

Why is the IBAN checked only for code 58 and not for 30?

Code 30 is a general credit transfer where foreign accounts without an IBAN are possible; code 58 means SEPA, and SEPA presupposes an IBAN.

Will an invoice with a wrong IBAN get paid?

Hardly. No recipient transfers money to an IBAN that fails the check-digit test; the payment stays on hold until a corrected invoice or a confirmed account arrives.

EN 16931 fields

  • BT-84
  • BT-81
  • BG-17

See also

Check your invoice

The XRechnung validator reports this rule with the line number and location – right in your browser, without upload.

Open the XRechnung validator

The rule in detail
UBL · Context (XPath)
/ubl:Invoice/cac:PaymentMeans[normalize-space(cbc:PaymentMeansCode) = ('30','58')] | /cn:CreditNote/cac:PaymentMeans[normalize-space(cbc:PaymentMeansCode) = ('30','58')]
UBL · Schematron test
not(normalize-space(cbc:PaymentMeansCode) = '58') or xr:checkIBAN(string(cac:PayeeFinancialAccount/cbc:ID))
CII · Context (XPath)
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[normalize-space(ram:TypeCode) = ('30','58')]
CII · Schematron test
not(normalize-space(ram:TypeCode) = '58') or xr:checkIBAN(string(ram:PayeePartyCreditorFinancialAccount/ram:IBANID))

Explanation written on 14 September 2026