BR-DE – XRechnung
BR-DE-23-a: credit transfer (code 30/58) without account (BG-17)
ErrorXRechnung business rule (KoSIT)
The rule's own wording
[BR-DE-23-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), muss BG-17 "CREDIT TRANSFER" übermittelt werden.Source: KoSIT XRechnung, version 3.0.2 (Schematron 2.6.0)
Meaning of the rule
The invoice names a bank transfer as the payment means but no account to transfer the money to. With the codes 30 or 58 for credit transfers, XRechnung requires the CREDIT TRANSFER group with the payee's IBAN. Without it the recipient cannot instruct the payment and rejects the invoice at intake, even when the IBAN is printed on the PDF.
What usually goes wrong
- No bank account is stored in the software while bank transfer is the default payment means.
- The IBAN only appears in the footer text or on the PDF, not in the PayeeFinancialAccount block.
- The export maps the account for direct debits (code 59) only, not for credit transfers.
The fix in the XML
Add a PayeeFinancialAccount block under PaymentMeans with the IBAN in ID; account holder and BIC are optional. If no transfer is meant, change the payment means code instead.
<cac:PaymentMeans>
<cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
<cbc:PaymentID>RE-2026-0142</cbc:PaymentID>
</cac:PaymentMeans><cac:PaymentMeans>
<cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
<cbc:PaymentID>RE-2026-0142</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>DE02120300000000202051</cbc:ID>
<cbc:Name>Muster GmbH</cbc:Name>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>Questions and answers
Which payment means code is right for an ordinary bank transfer?
58 for SEPA credit transfers, 30 for other credit transfers. Under BR-DE-23-a both codes require the payee's account in BG-17.
Do I also have to give the BIC?
No. The IBAN in BT-84 is mandatory; the BIC (BT-86) and the account holder (BT-85) are optional but harmless.
EN 16931 fields
- 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
cac:PayeeFinancialAccount- CII · Context (XPath)
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[normalize-space(ram:TypeCode) = ('30','58')]- CII · Schematron test
ram:PayeePartyCreditorFinancialAccount
Explanation written on 14 September 2026