What does BR-DE-23-b mean?
With payment means 30 or 58 (credit transfer) the invoice must not contain card data (BG-18) or direct debit data (BG-19). BG-19 covers the mandate reference (BT-89), the creditor ID (BT-90) and the debtor IBAN (BT-91). In CII the mandate reference and the creditor ID do not sit in the payment means but apply to the whole invoice, so they always count. The rule comes from KoSIT (XRechnung) and is an error there. For ZUGFeRD our validator only reports it as info.
Common causes of BR-DE-23-b
- The invoice template always writes the mandate reference or the creditor ID, even for credit transfer.
- The invoice names credit transfer and direct debit at the same time. CII does not allow this: all payment means must carry the same code (CII-SR-467).
- Card data from an earlier payment is still in the payment means.
How to fix BR-DE-23-b
- Find the faulty spot in the XML. Open the XML of the invoice and go to field BT-81 along this XPath:
//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode='30' or ram:TypeCode='58'] - Apply the fix. With payment means 30 or 58 (credit transfer) the invoice must not contain card data (BG-18, 'ram:ApplicableTradeSettlementFinancialCard') or direct debit data (BG-19). BG-19 covers the mandate reference ('ram:DirectDebitMandateID'), the creditor ID ('ram:CreditorReferenceID') and the debtor IBAN ('ram:PayerPartyDebtorFinancialAccount'). Remove them, or use payment means 59 if you collect the amount. For ZUGFeRD the validator only reports the rule as info; it applies to XRechnung.
- Validate again. Save the file and validate it again to check that BR-DE-23-b is no longer reported.
With payment means 30 or 58 (credit transfer) the invoice must not contain card data (BG-18, 'ram:ApplicableTradeSettlementFinancialCard') or direct debit data (BG-19). BG-19 covers the mandate reference ('ram:DirectDebitMandateID'), the creditor ID ('ram:CreditorReferenceID') and the debtor IBAN ('ram:PayerPartyDebtorFinancialAccount'). Remove them, or use payment means 59 if you collect the amount. For ZUGFeRD the validator only reports the rule as info; it applies to XRechnung.
//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode='30' or ram:TypeCode='58']Before / after: the XML example
This is the spot in question before and after the fix (Cross Industry Invoice, ZUGFeRD/Factur-X).
<ram:SpecifiedTradeSettlementPaymentMeans>
<ram:TypeCode>58</ram:TypeCode>
<ram:PayeePartyCreditorFinancialAccount>
<ram:IBANID>DE02120300000000202051</ram:IBANID>
</ram:PayeePartyCreditorFinancialAccount>
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:SpecifiedTradePaymentTerms>
<ram:Description>Payable by 2026-11-12 without deduction.</ram:Description>
<ram:DirectDebitMandateID>MANDAT-4711</ram:DirectDebitMandateID>
</ram:SpecifiedTradePaymentTerms>
<ram:SpecifiedTradeSettlementPaymentMeans>
<ram:TypeCode>58</ram:TypeCode>
<ram:PayeePartyCreditorFinancialAccount>
<ram:IBANID>DE02120300000000202051</ram:IBANID>
</ram:PayeePartyCreditorFinancialAccount>
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:SpecifiedTradePaymentTerms>
<ram:Description>Payable by 2026-11-12 without deduction.</ram:Description>
</ram:SpecifiedTradePaymentTerms>
Frequent questions about BR-DE-23-b
I collect the amount. What is right?
What does BR-DE-23-a check?
Related error codes
Check BR-DE-23-b automatically
Instead of digging through the XML by hand you can validate your ZUGFeRD or XRechnung file online: upload the PDF or the XML and you get every error with rule ID, affected field, fix and XPath, as a readable report or as JSON through the API.