BR-DE-21 Payment means code must be an allowed value
What this rule checks
BR-DE-21 validates that the code specified in BT-81 (Payment means type code) is among the codes permitted by the German XRechnung specification (CIUS). Not all payment means codes from the international UNTDID 4461 code list are allowed in Germany.
In the UBL representation, this value is specified in the <cbc:PaymentMeansCode> element within <cac:PaymentMeans>.
Allowed codes
| Code | Name | Description |
|---|---|---|
| 10 | Not allowed | |
| 30 | Credit Transfer | Generic credit transfer |
| 48 | Bank Card | Card payment via credit card |
| 54 | Direct Debit | Generic direct debit |
| 58 | SEPA Credit Transfer | SEPA credit transfer |
| 59 | SEPA Direct Debit | SEPA direct debit |
The complete list of allowed codes is defined in the XRechnung specification (CIUS) and may change between versions. Always check the current version.
Why this rule exists
Germany restricts payment means codes to those actually supported by German payment infrastructure. Codes such as cash (10), cheque (20), or cash on delivery are not relevant in the context of electronic invoicing to public sector contracting authorities and are therefore rejected.
This restriction ensures that payment information in the invoice can actually be processed automatically. When an invalid code is used, the receiving system cannot correctly interpret the payment instructions.
What triggers a failure
Validation fails when the value in <cbc:PaymentMeansCode> is not in the list of allowed codes. Common invalid values include:
10— Cash20— Cheque31— Debit transfer (obsolete, use 54 or 59 instead)42— Domestic credit transfer (obsolete, use 30 or 58 instead)97— Clearing between partners
Failing XML example
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ID>RE-2024-002</cbc:ID>
<cbc:IssueDate>2024-01-15</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>04011000-1234512345-06</cbc:BuyerReference>
<!-- ... -->
<cac:PaymentMeans>
<!-- ERROR: Code 10 (Cash) is not allowed -->
<cbc:PaymentMeansCode>10</cbc:PaymentMeansCode>
</cac:PaymentMeans>
<!-- ... -->
</Invoice>
The fix
Use one of the allowed payment means codes. For most use cases, 58 (SEPA Credit Transfer) is the correct choice:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ID>RE-2024-002</cbc:ID>
<cbc:IssueDate>2024-01-15</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>04011000-1234512345-06</cbc:BuyerReference>
<!-- ... -->
<cac:PaymentMeans>
<cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
<cac:PayeeFinancialAccount>
<cbc:ID>DE89370400440532013000</cbc:ID>
<cbc:Name>Musterfirma GmbH</cbc:Name>
<cac:FinancialInstitutionBranch>
<cbc:ID>COBADEFFXXX</cbc:ID>
</cac:FinancialInstitutionBranch>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<!-- ... -->
</Invoice>
Recommended mapping
| Payment scenario | Recommended code |
|---|---|
| Transfer to German bank account | 58 (SEPA Credit Transfer) |
| Transfer to non-SEPA account | 30 (Credit Transfer) |
| Direct debit with SEPA mandate | 59 (SEPA Direct Debit) |
| Credit card payment | 48 (Bank Card) |
Edge cases and common mistakes
-
Code 30 vs. 58: Both are allowed, but 58 (SEPA Credit Transfer) is more specific and should be preferred when payment is within the SEPA area. Code 30 is the generic alternative for international wire transfers.
-
SEPA Direct Debit (Code 59): When using code 59, you must also provide the mandate reference (BT-89) and creditor identifier (BT-90). Without these fields, the SEPA direct debit cannot be executed:
<cac:PaymentMeans> <cbc:PaymentMeansCode>59</cbc:PaymentMeansCode> <cac:PaymentMandate> <cbc:ID>MANDATE-2024-001</cbc:ID> <cac:PayerFinancialAccount> <cbc:ID>DE75512108001245126199</cbc:ID> </cac:PayerFinancialAccount> </cac:PaymentMandate> </cac:PaymentMeans> -
ZUGFeRD profiles: Different ZUGFeRD profiles (MINIMUM, BASIC, EN16931, EXTENDED) may have different restrictions on payment means codes. The MINIMUM profile, for example, does not require PaymentMeans at all.
-
Multiple PaymentMeans: An invoice may contain multiple
<cac:PaymentMeans>blocks, e.g., when both credit transfer and direct debit are accepted. Each block must use an allowed code. -
Migrating from legacy codes: When migrating from older EDI formats, note the mapping: code 42 (domestic credit transfer) becomes 58, code 31 (debit transfer) becomes 59.
Links to specification
- XRechnung Versions and Packages — Official XRechnung specification
- UNTDID 4461 Code List — International payment means code list
- EN 16931 Payment Means — European standard for electronic invoicing