← All Error Rules
error Class A

BR-DE-19 SEPA Direct Debit Mandatory Fields

What this rule checks

BR-DE-19 ensures that when SEPA direct debit (Payment Means Code 59) is used as the payment method, the required mandate information is included in the invoice. Specifically, the following must be present:

  • Mandate reference (BT-89) — the unique identifier of the SEPA direct debit mandate
  • Debited account identifier (BT-91) — the IBAN of the account to be debited

This information is mapped in UBL via the cac:PaymentMandate group.

Why this rule exists

The SEPA direct debit scheme requires a set of mandatory fields under EU Regulation 260/2012 (SEPA Migration Regulation) so that the debtor’s bank can authorize and execute the debit:

  • The mandate reference proves that the debtor has granted the creditor authorization to collect payments
  • The creditor identifier (Glaubiger-ID) uniquely identifies the creditor
  • The debtor’s IBAN specifies which account should be debited

Without these details in the invoice:

  • The direct debit may be rejected by the debtor’s bank
  • There is no basis for automated payment processing
  • There is a risk of chargebacks (Rucklastschriften) and associated costs

What triggers a failure

The error is triggered when:

  1. PaymentMeansCode 59 without PaymentMandate — SEPA direct debit is specified but the cac:PaymentMandate block is completely missing
  2. Missing mandate referencecac:PaymentMandate is present but cbc:ID (BT-89) is missing or empty
  3. Missing debtor account — The IBAN of the account to be debited (cac:PayerFinancialAccount/cbc:ID, BT-91) is absent

Failing XML example

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:module:...">
  <cbc:ID>INV-2024-099</cbc:ID>
  <cbc:IssueDate>2024-01-15</cbc:IssueDate>
  <cbc:DueDate>2024-02-01</cbc:DueDate>

  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
    <!-- ERROR: PaymentMandate block is completely missing -->
    <cac:PayeeFinancialAccount>
      <cbc:ID>DE89370400440532013000</cbc:ID>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>
</ubl:Invoice>

The validator reports: BR-DE-19: When payment means is SEPA direct debit (code 59), the mandate reference (BT-89) and debited account identifier (BT-91) must be provided.

The fix

Add the complete cac:PaymentMandate block with mandate reference and account information:

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:module:...">
  <cbc:ID>INV-2024-099</cbc:ID>
  <cbc:IssueDate>2024-01-15</cbc:IssueDate>
  <cbc:DueDate>2024-02-01</cbc:DueDate>

  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
    <cbc:PaymentID>INV-2024-099</cbc:PaymentID>
    <cac:PaymentMandate>
      <cbc:ID>MANDATE-2024-001</cbc:ID>  <!-- BT-89: Mandate reference -->
      <cac:PayerFinancialAccount>
        <cbc:ID>DE75512108001245126199</cbc:ID>  <!-- BT-91: Debtor's IBAN -->
      </cac:PayerFinancialAccount>
    </cac:PaymentMandate>
    <cac:PayeeFinancialAccount>
      <cbc:ID>DE89370400440532013000</cbc:ID>  <!-- Creditor's account -->
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>
</ubl:Invoice>

Edge cases and common mistakes

Creditor identifier format

The creditor identifier (Glaubiger-Identifikationsnummer) in Germany follows this format:

DE98ZZZ09999999999
  • DE — country code
  • 98 — check digits (two digits)
  • ZZZ — business area code (freely assignable, default: ZZZ)
  • 09999999999 — national identification

The creditor identifier is transmitted via cac:AccountingSupplierParty or as part of party identification (BT-90), not directly in the PaymentMandate block.

Mandate must be pre-agreed

The invoice merely confirms an existing SEPA direct debit mandate — it does not create one. The mandate must have been agreed between creditor and debtor before the invoice is issued. The mandate reference on the invoice must match the agreed reference.

CORE vs. B2B direct debit

SEPA distinguishes two direct debit schemes:

  • SEPA Core Direct Debit (CORE) — for consumers, 8-week refund period
  • SEPA Business-to-Business Direct Debit (B2B) — for business customers, no refund right after settlement

Both use PaymentMeansCode 59 in XRechnung. The distinction is made through the mandate agreement, not the payment code.

IBAN validation

The IBAN in field BT-91 must be valid (checksum per ISO 13616). German IBANs always have 22 characters:

DEpp bbbb bbbb kkkk kkkk kk

Common errors: missing leading zeros, spaces in the IBAN, invalid checksum.

Interaction with BR-DE-18

For Code 59, BR-DE-18 (payment reference for credit transfers) does not apply. BR-DE-19 takes precedence. However, cbc:PaymentID can still be useful for direct debits to facilitate reconciliation.