Skip to main content

BR-DE-23-a Credit transfer payment means require the credit transfer group (BG-17)

Under the German XRechnung rule BR-DE-23-a, every payment means with a credit transfer code in BT-81 (30 = credit transfer, 58 = SEPA credit transfer) must contain the credit transfer group BG-17. BG-17 holds the payment account identifier BT-84 (usually the IBAN), the optional account name BT-85 and the optional payment service provider identifier BT-86 (BIC). The validator checks each payment means separately: in UBL it looks for cac:PayeeFinancialAccount inside the cac:PaymentMeans element, in CII for ram:PayeePartyCreditorFinancialAccount inside ram:SpecifiedTradeSettlementPaymentMeans. KoSIT flags a missing BG-17 as fatal, so the invoice is not valid.

Problem Description

ERROR

German XRechnung rule (KoSIT, BR-DE) · XRechnung 3.0

Context and Significance

The error usually appears when an export writes payment means code 58 but keeps the bank details only in free text, such as the payment terms (BT-20) or an invoice note, or writes the account into a different payment means element. The buyer’s accounts payable system then has no structured account to pay into. BR-DE-23-a checks only that BG-17 is present: BR-50 requires the account identifier BT-84 inside BG-17, and BR-DE-19 reports a BT-84 value that is not a valid IBAN when code 58 is used.

Solution

Store the seller’s bank account in your ERP or invoicing tool and export it with every credit transfer payment means. In UBL 2.1, add <cac:PayeeFinancialAccount><cbc:ID>DE89370400440532013000</cbc:ID></cac:PayeeFinancialAccount> inside the <cac:PaymentMeans> that has <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>. In CII, add <ram:PayeePartyCreditorFinancialAccount><ram:IBANID>DE89370400440532013000</ram:IBANID></ram:PayeePartyCreditorFinancialAccount> inside the <ram:SpecifiedTradeSettlementPaymentMeans> with <ram:TypeCode>58</ram:TypeCode>; use ram:ProprietaryID for an account number that is not an IBAN. If the buyer does not pay by credit transfer, set BT-81 to the code of the payment means that is actually used.

Quick actions

Valid Examples

  • BT-81 = 58 (SEPA credit transfer) with BG-17 and BT-84 = "DE89370400440532013000"
  • BT-81 = 30 (credit transfer) with BG-17 and a non-IBAN account number in BT-84

Invalid Examples

  • BT-81 = 58, but the IBAN appears only in the payment terms text (BT-20)
  • BT-81 = 30 and cac:PaymentMeans contains only cbc:PaymentMeansCode and cbc:PaymentID, without cac:PayeeFinancialAccount

Code Examples

Valid XML
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
  <cbc:PaymentID>RE-2026-0042</cbc:PaymentID>
  <cac:PayeeFinancialAccount>
    <cbc:ID>DE89370400440532013000</cbc:ID>
    <cbc:Name>Lieferant GmbH</cbc:Name>
  </cac:PayeeFinancialAccount>
</cac:PaymentMeans>
Invalid XML
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
  <cbc:PaymentID>RE-2026-0042</cbc:PaymentID>
</cac:PaymentMeans>

Affected Fields

Validation Tools