BR-DE-20"Debited account identifier" (BT-91) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 59 SEPA als Zahlungsmittel gefordert wird.

Official rule text

For SEPA direct debit (BT-81 with code 59), the debited account identifier (BT-91) should be a correct IBAN — the check digit, and only as a warning. The account is the buyer's, not yours: the number comes from the mandate the customer gave you.

Severity
Warning
Applies to
CII, UBL
Rule set
v2026-08-31
Checked on

Written and checked against the official KoSIT rule set by Dmytro Yalanskyi, NormAPI.

Why does BR-DE-20 happen?

Usually a typo in an IBAN transcribed from the mandate — and unlike your own account number, nobody in-house ever notices, because it is never used again. Spaces are not the problem: xr:checkIBAN strips all whitespace first and then recomputes the ISO 7064 check digit. Three errors hang off the same group around a direct debit: BR-DE-25-a requires BG-19 when the code is 59, BR-DE-31 requires the account BT-91 inside it, and BR-DE-30 requires the creditor identifier BT-90.

What the validator checks

The expression the official KoSIT rule set evaluates — not paraphrased, but read from the Schematron file it ships. UBL and CII address different document trees, so the same rule reads differently in each.

UBL
not(normalize-space(cbc:PaymentMeansCode) = '59') or xr:checkIBAN(string(cac:PaymentMandate/cac:PayerFinancialAccount/cbc:ID))
CII
not(normalize-space(ram:TypeCode) = '59') or xr:checkIBAN(string(ram:PayerPartyDebtorFinancialAccount/ram:IBANID))

Source: rule set v2026-08-31

How do you fix BR-DE-20?

Send the debited account's IBAN with a valid check digit in BT-91: in UBL under cac:PaymentMandate/cac:PayerFinancialAccount/cbc:ID, in CII directly as ram:PayerPartyDebtorFinancialAccount/ram:IBANID. The mandate wrapper exists in UBL only — in CII the account sits without one.

In the XML

A UBL fragment. The CII path is named above — same change, different element names.

Fails
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
  <cac:PaymentMandate>
    <cbc:ID>MANDAT-2026-0007</cbc:ID>
    <cac:PayerFinancialAccount>
      <cbc:ID>DE02120300000000202052</cbc:ID>
    </cac:PayerFinancialAccount>
  </cac:PaymentMandate>
</cac:PaymentMeans>
Fixed
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
  <cac:PaymentMandate>
    <cbc:ID>MANDAT-2026-0007</cbc:ID>
    <cac:PayerFinancialAccount>
      <cbc:ID>DE02120300000000202051</cbc:ID>
    </cac:PayerFinancialAccount>
  </cac:PaymentMandate>
</cac:PaymentMeans>

Related rules

NormAPI provides technical validation, not tax or legal advice.