Skip to main content

PEPPOL-EN16931-R008 Document must not contain empty elements

PEPPOL-EN16931-R008 reports every XML element that has neither text nor child elements, for example <cbc:Note/> or <cbc:Telephone> </cbc:Telephone>. Attributes do not count as content, so <cbc:EndpointID schemeID="EM"/> is empty too. The KoSIT configuration for XRechnung 3.0.2 runs the rule as a fatal error for UBL and CII. It skips only an empty cbc:ID in cac:OrderReference (UBL) and ram:ApplicableHeaderTradeDelivery, which the CII schema requires.

Problem Description

ERROR

Peppol BIS Billing 3.0 rule (OpenPeppol)

Interactive pipeline

Click a stage to see what it checks, or type a rule ID to light up the stage that reports it.

Try:

PEPPOL-EN16931-R008 Peppol BIS Billing rule

Reported in stage 3: National rules (CIUS).

Level error: the report recommends rejecting the invoice.

Stage 3 · What it checks

  • The specification identifier in BT-24 selects the rule set, for example XRechnung 3.0 or Peppol BIS Billing 3.0.
  • XRechnung adds the German BR-DE rules: buyer reference (BT-10), seller contact, payment instructions.
  • Peppol adds PEPPOL-EN16931 and country rules. XRechnung applies some PEPPOL-EN16931 rules too.

Example codes

Typical fix

Fill the fields the rule set requires in your master data, such as the Leitweg-ID in BT-10 or the seller contact.

A validator checks an e-invoice in stages. First the file must be well-formed XML that matches the UBL or CII schema (XSD). Then the EN 16931 business rules run: BR core rules, BR-CO calculations, BR-CL code lists, BR-DEC decimals and VAT-category rules such as BR-S. Next come the national or network rules that BT-24 selects: BR-DE for XRechnung, PEPPOL-EN16931 for Peppol BIS Billing. The report lists every failed rule: one error means reject, warnings alone still mean accept. PEPPOL-EN16931-R008: Peppol BIS Billing rule, reported in the stage “National rules (CIUS)”. Rule sets: KoSIT validator 1.6.3 with the XRechnung configuration of 31 Aug 2026 (EN 16931 artefacts 1.3.16), Peppol BIS Billing 3.0.21.

Context and Significance

Empty elements usually come from export templates that write every field, even when the source has no value: an empty note, contact field, address line or party block. A placeholder hides the structural error but puts wrong data into the invoice.

Solution

Remove the empty element. If its parent group then holds no data, remove the group as well. If the field is required, enter the real value from the source document. Do not fill the element with a placeholder such as "-" or "n/a". The location in the validator report (an XPath) names the element.

Quick actions

Valid Examples

  • <cbc:Telephone>+49 30 1234567</cbc:Telephone>
  • No cbc:Note element when the invoice has no note

Invalid Examples

  • <cbc:Note/>
  • <cbc:Telephone></cbc:Telephone>
  • <cbc:EndpointID schemeID="EM"/>

Code Examples

Valid XML
<cac:Contact>
  <cbc:Name>Accounts receivable</cbc:Name>
  <cbc:Telephone>+49 30 1234567</cbc:Telephone>
  <cbc:ElectronicMail>billing@example.com</cbc:ElectronicMail>
</cac:Contact>
Invalid XML
<cac:Contact>
  <cbc:Name>Accounts receivable</cbc:Name>
  <cbc:Telephone/>
  <cbc:ElectronicMail>billing@example.com</cbc:ElectronicMail>
</cac:Contact>

Affected Fields

Validation Tools