← All Error Rules
error Class A

BR-DE-18 Payment Reference for Credit Transfers

What this rule checks

BR-DE-18 verifies that invoices using credit transfer as payment means (Payment Means Code 30 or 58) include a payment reference (BT-83, Remittance Information). Specifically, the element cbc:PaymentID must be present at the document level or within the cac:PaymentMeans group.

BT-83 maps to the German “Verwendungszweck” (payment reference), which is transmitted in the free-text or reference field of the bank transfer.

Why this rule exists

German banks and financial service providers need the payment reference to automatically match incoming payments to outstanding invoices. Without a payment reference:

  • Payment reconciliation becomes manual — for large enterprises handling thousands of incoming invoices, this creates enormous overhead
  • SEPA transfers cannot be matched programmatically
  • Booking delays occur, potentially triggering dunning notices despite completed payment
  • The payer lacks information on what reference to include in the transfer

XRechnung therefore makes BT-83 mandatory for credit transfer payments (Code 30 = credit transfer, Code 58 = SEPA credit transfer).

What triggers a failure

The error is triggered when:

  1. PaymentMeansCode 30 or 58 without PaymentID — A credit transfer is specified as payment means, but cbc:PaymentID is missing
  2. Empty PaymentID — The element exists but contains no value: <cbc:PaymentID/>
  3. InstructionNote used instead of PaymentIDcbc:InstructionNote is not a substitute for BT-83 in the XRechnung context

Failing XML example

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:module:...">
  <cbc:ID>INV-2024-042</cbc:ID>
  <cbc:IssueDate>2024-01-15</cbc:IssueDate>
  <cbc:DueDate>2024-02-15</cbc:DueDate>
  <!-- ERROR: PaymentID is missing -->

  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
    <!-- No <cbc:PaymentID> present -->
    <cac:PayeeFinancialAccount>
      <cbc:ID>DE89370400440532013000</cbc:ID>
      <cbc:Name>Mustermann GmbH</cbc:Name>
      <cac:FinancialInstitutionBranch>
        <cbc:ID>COBADEFFXXX</cbc:ID>
      </cac:FinancialInstitutionBranch>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>
</ubl:Invoice>

The validator reports: BR-DE-18: Remittance information (BT-83) must be provided when the payment means is a credit transfer.

The fix

Add cbc:PaymentID as the payment reference:

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:module:...">
  <cbc:ID>INV-2024-042</cbc:ID>
  <cbc:IssueDate>2024-01-15</cbc:IssueDate>
  <cbc:DueDate>2024-02-15</cbc:DueDate>
  <cbc:PaymentID>INV-2024-042</cbc:PaymentID>  <!-- BT-83: Payment reference -->

  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
    <cac:PayeeFinancialAccount>
      <cbc:ID>DE89370400440532013000</cbc:ID>
      <cbc:Name>Mustermann GmbH</cbc:Name>
      <cac:FinancialInstitutionBranch>
        <cbc:ID>COBADEFFXXX</cbc:ID>
      </cac:FinancialInstitutionBranch>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>
</ubl:Invoice>

In practice, the invoice number is commonly used as the payment reference (here: INV-2024-042).

Edge cases and common mistakes

PaymentID vs. InstructionNote

UBL provides multiple fields for payment-related information:

  • cbc:PaymentID — maps to BT-83 (remittance information) and is the correct field
  • cbc:InstructionNote — is a free-text field for instructions to the bank, not equivalent to BT-83

Many software vendors confuse these fields. Only cbc:PaymentID satisfies BR-DE-18.

Maximum length

SEPA credit transfers allow a maximum of 140 characters in the remittance information field. Longer values are truncated by banks and may cause reconciliation failures. Recommendation: use short, unique references.

Structured references (RF Creditor Reference)

In addition to free-text references, BT-83 also accepts structured references per ISO 11649:

RF18539007547034

These begin with RF, followed by two check digits and the actual reference. Structured references enable error-free automated matching.

Direct debit (Code 59)

For SEPA direct debit (Code 59), BR-DE-18 does not apply — BR-DE-19 is the relevant rule. It requires a mandate reference instead of a payment reference.

Multiple PaymentMeans blocks

If an invoice contains multiple cac:PaymentMeans blocks (e.g., credit transfer and credit card as alternatives), cbc:PaymentID must be present for each credit transfer block.

Code 30 vs. Code 58

  • Code 30 = generic bank credit transfer
  • Code 58 = SEPA credit transfer

Both trigger BR-DE-18. In practice, Code 58 is standard in the German market.