Account
English

DE-R-017: The element "Invoice type code" should only contain the following values from code…

Peppol national rule · Warning · UBL

StandardPeppol BIS Billing 3.0 country rules (NL, DE, IT, SE, DK, NO, GR, IS)CountryGermanySeverityWarning: the invoice is accepted but should be correctedSyntaxUBLBusiness terms
  • BT-3 Invoice type code
Applies toOnly when the seller (or for some rules the buyer) is in the named country: the rule is triggered by the country code of the party. Dutch rules implement NLCIUS, German rules the XRechnung requirements inside Peppol.

Official rule text

[DE-R-017] The element "Invoice type code" (BT-3) should only contain the following values from code list UNTDID 1001: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice), 381 (Credit note), 875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice).

Why this error occurs

The value must come from a fixed code list and the value in your file is not on it. Common causes: a free-text value instead of a code ("Invoice" instead of 380), a code from an older list version, lower-case codes, or a code valid in another standard but not in this one.

How to fix it

Replace the value with a code from the list named in the rule text (UNTDID 1001 for document types, UNTDID 5305 for VAT categories, ISO 4217 for currencies, ISO 3166-1 for countries, UN/ECE Recommendation 20/21 for units, EAS for electronic addresses, ISO 6523 ICD for scheme identifiers). Codes are case-sensitive.

What the validator checks

Checked element (context):

UBL

(/ubl-invoice:Invoice | /ubl-creditnote:CreditNote)[$supplierCountryIsDE and $customerCountryIsDE]

Test (XPath):

cbc:InvoiceTypeCode = $supportedInvAndCNTypeCodes         or cbc:CreditNoteTypeCode = $supportedInvAndCNTypeCodes

Check your invoice

Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.

Check your invoice →

Same check via API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Related rules

Frequently asked questions

What does DE-R-017 mean?

DE-R-017 is a peppol national rule: The element "Invoice type code" (BT-3) should only contain the following values from code list UNTDID 1001: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice), 381 (Credit note), 875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice).

Will my invoice be rejected because of DE-R-017?

No. DE-R-017 is a warning: the invoice is accepted but the recipient sees the notice. Fix it anyway, warnings often become errors in later rule versions.

Which formats does DE-R-017 apply to?

Only when the seller (or for some rules the buyer) is in the named country: the rule is triggered by the country code of the party. Dutch rules implement NLCIUS, German rules the XRechnung requirements inside Peppol. Syntax: UBL.

Source: Peppol BIS Billing 3.0.20 national rules (November 2025). Catalogue generated from the official rule sets on 2026-10-15.