Skip to content

BR-DE – XRechnung

BR-DE-30: creditor identifier (BT-90) missing for a direct debit

ErrorXRechnung business rule (KoSIT)

The rule's own wording

[BR-DE-30] Wenn "DIRECT DEBIT" BG-19 vorhanden ist, dann muss "Bank assigned creditor identifier" BT-90 übermittelt werden.

Source: KoSIT XRechnung, version 3.0.2 (Schematron 2.6.0)

The fix in the XML

Enter the creditor identifier at the seller or at the payee: in UBL cac:PartyIdentification/cbc:ID with the attribute schemeID SEPA, in CII ram:CreditorReferenceID in the settlement details.

Before – invalid
<cac:AccountingSupplierParty>
  <cac:Party>
    <cac:PartyName><cbc:Name>Beispiel GmbH</cbc:Name></cac:PartyName>
  </cac:Party>
</cac:AccountingSupplierParty>
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
  <cac:PaymentMandate>
    <cbc:ID>MANDATE-2024-0031</cbc:ID>
    <cac:PayerFinancialAccount><cbc:ID>DE75512108001245126199</cbc:ID></cac:PayerFinancialAccount>
  </cac:PaymentMandate>
</cac:PaymentMeans>
After – corrected
<cac:AccountingSupplierParty>
  <cac:Party>
    <cac:PartyIdentification>
      <cbc:ID schemeID="SEPA">DE98ZZZ09999999999</cbc:ID>
    </cac:PartyIdentification>
    <cac:PartyName><cbc:Name>Beispiel GmbH</cbc:Name></cac:PartyName>
  </cac:Party>
</cac:AccountingSupplierParty>
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
  <cac:PaymentMandate>
    <cbc:ID>MANDATE-2024-0031</cbc:ID>
    <cac:PayerFinancialAccount><cbc:ID>DE75512108001245126199</cbc:ID></cac:PayerFinancialAccount>
  </cac:PaymentMandate>
</cac:PaymentMeans>

Meaning of the rule

Your invoice announces a direct debit and names a mandate, but not the creditor identifier under which you, as the collecting party, are registered with the Bundesbank. Without this identifier the customer cannot match the mandate to your company and their bank cannot verify the collection. XRechnung therefore requires the identifier as soon as the direct debit group is present. For German creditors it starts with DE and is 18 characters long.

What usually goes wrong

  • The creditor identifier is not stored in the master data or unknown to the software.
  • The identifier is written into the invoice text, not into the field meant for it.
  • The identifier field is missing at the payee because a third party collects.

Questions and answers

Why does the creditor identifier sit at the seller in UBL and not with the payment data?

UBL has no element of its own for it; the norm maps BT-90 to the party identifier with schemeID SEPA, at the seller or at the payee.

What if a service provider collects the direct debit for me?

Then their creditor identifier belongs in the invoice, at the payee, because their identifier is the one on the customer's mandate.

EN 16931 fields

  • BT-90
  • BG-19
  • BT-89
  • BT-91

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 | /cn:CreditNote
UBL · Schematron test
not(cac:PaymentMeans/cac:PaymentMandate) or (cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID[@schemeID='SEPA'] | cac:PayeeParty/cac:PartyIdentification/cbc:ID[@schemeID='SEPA'])
CII · Context (XPath)
/rsm:CrossIndustryInvoice
CII · Schematron test
(($BT-89-path or $BT-91-path) and $BT-90-path) or $BG-19-not-existing

Explanation written on 14 September 2026