Skip to content

Fatal

PEPPOL-EN16931-R008: The invoice must not contain empty elements

In short

Fatal: fails the selected checks.

PEPPOL-EN16931-R008 means the invoice contains at least one empty XML element. Leave optional fields out entirely rather than sending them empty.

On this page

What it means

A Peppol invoice may not contain empty elements: every element must hold a value or child elements. An empty tag such as <cbc:Note/> or <cac:PartyName></cac:PartyName> is not allowed.

Why it matters

Peppol BIS Billing 3.0 adds this rule to EN 16931 so that every access point and receiver can process the invoice the same way. The sending or receiving access point rejects an invoice that fails it, so it never reaches the buyer.

How to fix it

Leave optional fields out entirely rather than sending them empty. In your invoicing software, clear unused fields so they are not exported, or ask your software provider to stop writing empty tags. If you build the XML yourself, only write an element when you have a value for it.

The rule as published

Document MUST not contain empty elements.

Where Factur-X 1.09 BASIC, Factur-X 1.09 EN 16931, Factur-X 1.09 EXTENDED, ZUGFeRD 2.5 BASIC, ZUGFeRD 2.5 EN 16931, ZUGFeRD 2.5 EXTENDED run it, the rule reads:

Document MUST not contain empty elements. (still status warning)

Where this rule applies

Rule set Version
XRechnung 3.0 (UBL) 3.0.2
XRechnung 3.0 (UBL credit note) 3.0.2
XRechnung 3.0 (CII) 3.0.2
Peppol BIS Billing 3.0 (invoice) 2026.5
Peppol BIS Billing 3.0 (credit note) 2026.5
Factur-X 1.09 BASIC 1.0.9-2
Factur-X 1.09 EN 16931 1.0.9-2
Factur-X 1.09 EXTENDED 1.0.9-2
ZUGFeRD 2.5 BASIC 2.5.2
ZUGFeRD 2.5 EN 16931 2.5.2
ZUGFeRD 2.5 EXTENDED 2.5.2
Rule text from phive-rules 4.6.4.

Check your file

Drop your e-invoice to see whether PEPPOL-EN16931-R008 still fails, and which other rules do.

Updated 6 November 2026