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:PaymentMeansis present withcbc:PaymentMeansCode30 (credit transfer) or 58 (SEPA credit transfer), butcac:PayeeFinancialAccount/cbc:ID(the IBAN) is missingcac:PaymentMeansis present withcbc:PaymentMeansCode59 (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:
| Code | Description | Required fields |
|---|---|---|
30 | Credit transfer | PayeeFinancialAccount/ID (IBAN) |
58 | SEPA credit transfer | PayeeFinancialAccount/ID (IBAN) |
59 | SEPA direct debit | PaymentMandate/ID + PayerFinancialAccount/ID |
48 | Credit card payment | CardAccount 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.