PEPPOL-EN16931-R010:Buyer electronic address (EndpointID) MUST be provided
Fix: Add cbc:EndpointID inside cac:AccountingCustomerParty/cac:Party and set a schemeID from the CEF EAS code list. The value must be the buyer's registered Peppol participant identifier, not a free-text address or email. Invoice Navigator flags the missing endpoint and prompts for the participant ID before applying the fix, because the correct value cannot be derived from the invoice. Provide the required value in the free validator.
PEPPOL-EN16931-R010 fires when the buyer party in your invoice has no cbc:EndpointID element. The buyer electronic address (BT-49) is what the Peppol network uses to route the document to the right receiver, so Access Points reject the invoice outright when it is absent. This is the single most common Peppol routing error, because most ERP systems store the buyer participant ID in customer master data rather than deriving it from the invoice itself.
Engine Classification
Business data required · Explicit input workflow · No assumptions made
Required input: Buyer Endpoint ID, Endpoint Scheme (EAS code)
What is PEPPOL-EN16931-R010?
PEPPOL-EN16931-R010 is a fatal validation rule defined in the Peppol BIS 3.0 specification. It validates the ... for credit notes). The element itself is not enough: the schemeID attribute is mandatory and must carry a code from the CEF Electronic Address Scheme (EAS) code list — for example 0088 (GLN), 0106 (Dutch KvK-linked EAS), 0190 (Dutch OIN), 0192 (Norwegian org. no.), 9930 (DE VAT), 9944 (NL VAT). A missing or non-EAS schemeID does not trigger R010 but will fail the companion code-list rule instead, so both must be correct before the invoice passes. element under EndpointID (or > CreditNote in the UBL invoice XML.
When this rule fires, the invoice is rejected by Peppol access points and never reaches the buyer.
Target path: The Peppol Schematron rule PEPPOL-EN16931-R010 has context cac:AccountingCustomerParty/cac:Party and asserts test="cbc:EndpointID" with flag="fatal". XPath: /Invoice/cac:AccountingCustomerParty/cac:Party/cbc:EndpointID (or /CreditNote/... for credit notes). The element itself is not enough: the schemeID attribute is mandatory and must carry a code from the CEF Electronic Address Scheme (EAS) code list — for example 0088 (GLN), 0106 (Dutch KvK-linked EAS), 0190 (Dutch OIN), 0192 (Norwegian org. no.), 9930 (DE VAT), 9944 (NL VAT). A missing or non-EAS schemeID does not trigger R010 but will fail the companion code-list rule instead, so both must be correct before the invoice passes.
Why This Error Matters
Without a buyer electronic address the Peppol network has no destination to deliver to. The sending Access Point rejects the document before it ever reaches the receiver, so the invoice is never delivered, never booked, and payment terms never start running. Unlike a calculation error that a receiver might tolerate, a missing endpoint is a hard routing failure.
PEPPOL-EN16931-R010 is a hard failure — the invoice must be corrected and re-sent before it can reach the recipient.
Invoices stall at the sending Access Point and silently never arrive. AR teams typically only discover this when chasing payment weeks later, at which point the invoice has to be reissued and the payment clock restarts.
Validator Behavior
- ·Causes invoice rejection
- ·Rejected by PEPPOL Access Points
- ·Error returned: PEPPOL-EN16931-R010
- ·Specification: Peppol BIS 3.0
How to Fix It
Locate the buyer party block
Find cac:AccountingCustomerParty/cac:Party in the invoice XML. cbc:EndpointID must be the first child of cac:Party, before cac:PartyIdentification and cac:PartyName.
Look up the buyer's Peppol participant ID
Query the Peppol SML/SMP directory or take the ID from your customer master record. Do not invent a value — an unregistered participant ID routes nowhere and the Access Point will bounce the document.
Set the schemeID attribute
Use the EAS code matching the identifier type: 0088 for GLN, 0190 for Dutch OIN, 0192 for Norwegian organisation numbers, 9930 for German VAT IDs, 9944 for Dutch VAT IDs.
Re-validate
Confirm both R010 and the EAS code-list rule pass. Then map the field permanently in your ERP export so the error does not recur on the next invoice.
Before / After
<cac:AccountingCustomerParty>
<cac:Party>
<!-- cbc:EndpointID is missing -->
<cac:PartyName>
<cbc:Name>Voorbeeld Retail B.V.</cbc:Name>
</cac:PartyName>
</cac:Party>
</cac:AccountingCustomerParty><cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0190">123456789012345678</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Voorbeeld Retail B.V.</cbc:Name>
</cac:PartyName>
</cac:Party>
</cac:AccountingCustomerParty>Technical Reference
The Peppol Schematron rule PEPPOL-EN16931-R010 has context cac:AccountingCustomerParty/cac:Party and asserts test="cbc:EndpointID" with flag="fatal". XPath: /Invoice/cac:AccountingCustomerParty/cac:Party/cbc:EndpointID (or /CreditNote/... for credit notes). The element itself is not enough: the schemeID attribute is mandatory and must carry a code from the CEF Electronic Address Scheme (EAS) code list — for example 0088 (GLN), 0106 (Dutch KvK-linked EAS), 0190 (Dutch OIN), 0192 (Norwegian org. no.), 9930 (DE VAT), 9944 (NL VAT). A missing or non-EAS schemeID does not trigger R010 but will fail the companion code-list rule instead, so both must be correct before the invoice passes.Common Causes
- ·Customer master record has no Peppol participant ID configured
- ·Buyer endpoint field not mapped in the ERP's e-invoicing export template
- ·Buyer is not registered on the Peppol network at all
- ·Endpoint stored as an email address or postal address instead of a participant ID
- ·Manual or one-off invoice created outside the normal customer flow
Seeing this in production? The API handles PEPPOL-EN16931-R010 automatically. See the fix response →
Commonly Seen In
Frequently Asked Questions
It means the buyer party in your invoice has no cbc:EndpointID element. Peppol requires the buyer electronic address (BT-49) to route the document, and the rule is flagged fatal, so validation stops there.
Not fully. The correct participant ID is external business data that cannot be inferred from the invoice, so Invoice Navigator detects the error and prompts for the buyer's Peppol identifier, then inserts a correctly formed EndpointID with the right schemeID.
Use the CEF EAS code matching the identifier type: 0088 for GLN, 0190 for Dutch OIN, 0192 for Norwegian organisation numbers, 9930 for German VAT IDs, 9944 for Dutch VAT IDs. A schemeID outside the EAS code list fails a separate code-list rule.
No. BT-49 must be a registered Peppol participant identifier, not an email or postal address. An email value will pass R010 structurally but the document will not route and the Access Point will reject it.
SAP, Odoo, Microsoft Dynamics 365 and Exact Online all store the buyer endpoint in customer master data rather than on the invoice. If the Peppol identifier field is blank on the customer record, every invoice to that customer fails R010.
Related Errors
Related Content
Last updated: 18 August 2026
Validate your invoice
Drop your XML here to check for PEPPOL-EN16931-R010
Fix PEPPOL-EN16931-R010 with guided input
Upload your invoice and we'll ask for the missing data, then apply a safe, auditable fix.