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.
<cac:PaymentMeans>
<cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
<cac:PayeeFinancialAccount>
<cbc:ID>DE02 1203 0000 0000 2020 15</cbc:ID>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans><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.
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