Peppol EndpointID missing: why the invoice cannot route
If the invoice has business lines and totals but no EndpointID, the document still cannot route over Peppol. This page explains the exact failure and what to fix first.
What is usually actually broken
The exported document does not contain a resolvable participant identifier, or the ERP never mapped the counterparty to a Peppol-ready endpoint.
Do these before you resend
- Check the source partner record before editing the XML.
- Confirm the exact scheme-plus-value pair the recipient expects.
- Regenerate the invoice after the endpoint identifier is stored correctly.
The fastest path from this page is a prefilled diagnosis. It opens the analyzer with this exact issue pattern already loaded and immediately prepares the EUR 9 fix-pack preview when the route looks blocked or risky.
Buy the rescue kit for this exact issue
If this page matches the exact blocker, you can unlock the issue-specific rescue kit directly without running the analyzer first.
What people ask right before they get blocked
Yes. The file can still look like a clean XML export while missing the routing data Peppol needs.
No. Fix the partner or export mapping in the source system so every regenerated invoice contains the right endpoint.
Go one level deeper before you resend
A short checklist that filters out the most common Belgian routing mistakes in minutes.
Read the guideA practical guide for missing CustomizationID, profile markers, and other export-level metadata that leave XML looking valid but unusable in Peppol workflows.
Read the guideSimilar failure patterns worth checking
Belgian Peppol delivery often fails because the counterparty is stored with the wrong identifier scheme. This page explains when 0208 and 9925 diverge and what to verify first.
Open issue pageA stored GLN or alternate identifier does not guarantee Odoo will resolve the exact Peppol participant the recipient expects. This page shows where the mismatch happens.
Open issue pageThis usually means the customer is registered under a different identifier or not fully published. Here is how to separate a real absence from a lookup mismatch.
Open issue page