← All Error Rules
error Class A

BR-DE-05 Payment Instructions

What this rule checks

BR-DE-05 verifies that the BG-16 group (Payment Instructions) is complete and correctly populated. When a payment means is specified (cac:PaymentMeans), the sub-elements required for the given payment means code (cbc:PaymentMeansCode) must be present.

In particular, the rule checks that for credit transfers (code 30 or 58), at least the payee’s financial account (cac:PayeeFinancialAccount/cbc:ID) is provided.

Why this rule exists

German regulations require that invoices contain actionable payment information. The recipient must be able to determine directly from the invoice how to make payment — without needing to contact the invoicing party for clarification.

In practice, this means: if a SEPA credit transfer is declared as the payment method, the payee’s IBAN must be included in the invoice. For direct debit (code 59), a mandate reference is additionally required. This requirement is a German-specific extension of EN 16931 and reflects standard German business practice.

What triggers a failure

The rule fails when:

  • cac:PaymentMeans is present with cbc:PaymentMeansCode 30 (credit transfer) or 58 (SEPA credit transfer), but cac:PayeeFinancialAccount/cbc:ID (the IBAN) is missing
  • cac:PaymentMeans is present with cbc:PaymentMeansCode 59 (SEPA direct debit), but the mandate reference (cac:PaymentMandate/cbc:ID) is missing
  • The payment information is incomplete — e.g., an account block without an IBAN, or a direct debit without a mandate reference

Failing XML example

The following example declares a SEPA credit transfer as the payment method but includes no account information:

<cac:PaymentMeans>
  <!-- ERROR: SEPA credit transfer without account details -->
  <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
  <cbc:PaymentMeansCode name="SEPA credit transfer"/>
</cac:PaymentMeans>

Similarly incorrect — direct debit without a mandate reference:

<cac:PaymentMeans>
  <!-- ERROR: SEPA direct debit without mandate reference -->
  <cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
  <cac:PayeeFinancialAccount>
    <cbc:ID>DE89370400440532013000</cbc:ID>
  </cac:PayeeFinancialAccount>
  <!-- Missing: cac:PaymentMandate with mandate reference -->
</cac:PaymentMeans>

The fix

Add the complete payment information matching the chosen payment means code.

SEPA credit transfer (code 58):

<cac:PaymentMeans>
  <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
  <cac:PayeeFinancialAccount>
    <!-- CORRECT: Payee IBAN -->
    <cbc:ID>DE89370400440532013000</cbc:ID>
    <cbc:Name>Musterfirma GmbH</cbc:Name>
    <cac:FinancialInstitutionBranch>
      <cbc:ID>COBADEFFXXX</cbc:ID>
    </cac:FinancialInstitutionBranch>
  </cac:PayeeFinancialAccount>
</cac:PaymentMeans>

SEPA direct debit (code 59):

<cac:PaymentMeans>
  <cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
  <cac:PaymentMandate>
    <!-- CORRECT: Mandate reference for direct debit -->
    <cbc:ID>MANDATE-2024-001</cbc:ID>
    <cac:PayerFinancialAccount>
      <cbc:ID>DE02120300000000202051</cbc:ID>
    </cac:PayerFinancialAccount>
  </cac:PaymentMandate>
  <cac:PayeeFinancialAccount>
    <cbc:ID>DE89370400440532013000</cbc:ID>
  </cac:PayeeFinancialAccount>
</cac:PaymentMeans>

Credit transfer (code 30) — minimal version:

<cac:PaymentMeans>
  <cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
  <cac:PayeeFinancialAccount>
    <!-- Minimum requirement: IBAN -->
    <cbc:ID>DE89370400440532013000</cbc:ID>
  </cac:PayeeFinancialAccount>
</cac:PaymentMeans>

Edge cases and common mistakes

Different payment codes, different requirements: Not all payment codes require the same sub-elements. Here is an overview of the most common codes:

CodeDescriptionRequired fields
30Credit transferPayeeFinancialAccount/ID (IBAN)
58SEPA credit transferPayeeFinancialAccount/ID (IBAN)
59SEPA direct debitPaymentMandate/ID + PayerFinancialAccount/ID
48Credit card paymentCardAccount information

Multiple payment means: An invoice may contain multiple cac:PaymentMeans blocks when offering the buyer different payment options. Each block must be complete on its own.

BIC is optional: The BIC (cac:FinancialInstitutionBranch/cbc:ID) is no longer mandatory within the SEPA zone. The IBAN alone is sufficient for domestic and EU-wide transfers. However, including the BIC is still recommended, especially for cross-border payments.

PaymentMeansCode vs. name attribute: The cbc:PaymentMeansCode element can include an optional name attribute that provides a human-readable label for the payment method (e.g., name="SEPA credit transfer"). This attribute is not validated, but it improves readability.

Payment terms: Note that BR-DE-05 only checks payment instructions. Payment terms (cac:PaymentTerms) are covered by other rules.