e-invoice validator

Peppol errors

PEPPOL-EN16931-R020 / R010: electronic address MUST be provided

The official rule

Seller electronic address MUST be provided (R020). Buyer electronic address MUST be provided (R010).

Rule pages: PEPPOL-EN16931-R020 PEPPOL-EN16931-R010 PEPPOL-EN16931-CL008

What it means

cbc:EndpointID is the party's address on the Peppol network: it says where the invoice is delivered and who sent it. In EN 16931 alone it can be absent, which is why software that generates "EN 16931 invoices" often leaves it out; Peppol requires it for both parties. PEPPOL-EN16931-CL008 is the sibling error: the element exists, but its schemeID is not on the official list.

Common causes

Example

Wrong:

<cac:Party>
  <cac:PostalAddress>…</cac:PostalAddress>

Right:

<cac:Party>
  <cbc:EndpointID schemeID="0208">0123456749</cbc:EndpointID>
  <cac:PostalAddress>…</cac:PostalAddress>

How to fix it

  1. For a Belgian company use the enterprise number with schemeID="0208": Peppol service providers describe it as the primary Belgian identifier.
  2. The alternative is the VAT number with schemeID="9925", written BE0123456749, if the party is registered under it.
  3. Check that the buyer is actually registered under that identifier, in the Peppol Directory or through your provider. A valid XML can still be undeliverable.
  4. Add the element for both parties, as the first child of cac:Party.

Automatic repair does not add this: which identifier a company is registered under is a fact about that company, not something the invoice can tell us.

Check your invoice against the Peppol rules

Paste the UBL XML: you get every error at once (UBL schema, EN 16931, Peppol BIS 3.0), with the fix for each one. Free, 3 checks a day, no account. The file is not stored.

Frequently asked questions

0208 or 9925: which one should I use?

Use the one the recipient is registered under. Providers treat 0208 as the default in Belgium; 0208 and 9925 are separate registrations even for the same company.

The validator passes, but the invoice does not arrive. Why?

A validator only reads the document. Delivery also needs the recipient to be registered on Peppol for this document type, which only your access point or the Peppol lookup can tell.

Where exactly does the element go?

Inside cac:AccountingSupplierParty/cac:Party and cac:AccountingCustomerParty/cac:Party, before every other child of cac:Party. UBL is strict about order.

Other Peppol errors