How Peppol finds the right recipient via SML, DNS NAPTR and SMP: step by step, including common error messages.
The Service Metadata Publisher (SMP) is the address book of the Peppol network. When an Access Point (AP) sends a document, it uses the Participant Identifier of the recipient to find -- via the Service Metadata Locator (SML) and the Domain Name System (DNS) -- which SMP the recipient is registered with, which endpoint URL to call, and which document types are supported. This article describes the discovery chain step by step.
Peppol is an open network: there is no central mailbox that receives and distributes all documents. Instead, every certified Service Provider maintains its own SMP, containing the metadata of its customers -- which documents they can receive, via which AP, and with which certificates they sign. The sending AP must discover where to deliver the document before every submission, and uses the recipient's SMP for this.
The SMP specification is an Organization for the Advancement of Structured Information Standards (OASIS) standard. eConnect is listed on the European Commission's eDelivery SMP-compliant solutions list with its own implementation.
Every organisation on Peppol has at least one Participant Identifier, built from a scheme and a value:
iso6523-actorid-upis::<scheme>:<value>
The scheme is a code from the Electronic Address Scheme (EAS) code list -- an OpenPeppol register of national and international identifier systems. The most commonly used EAS codes:
iso6523-actorid-upis::0106:54441587iso6523-actorid-upis::0190:00000001820029336000iso6523-actorid-upis::9944:NL851306469B01iso6523-actorid-upis::0208:0899965307iso6523-actorid-upis::0204:991-01234-56iso6523-actorid-upis::0192:745707327iso6523-actorid-upis::0235:100123456700003iso6523-actorid-upis::0088:1548079098355A full overview is available at docs.peppol.eu/edelivery/codelists/ and in Peppol ID and identifiers.
The sending AP answers three questions for every document:
The Participant Identifier is MD5-hashed and encoded in lowercase hexadecimal. The hashed value becomes the leftmost label of an SML domain, followed by the Peppol scheme and the SML zone. For production:
B-<md5>.iso6523-actorid-upis.edelivery.tech.ec.europa.eu
The Peppol test environment uses a separate SML zone. Since March 2026, only NAPTR records are published for both production and test -- the old CNAME records have been removed.
The sending AP performs a DNS query on the above domain, for record type NAPTR (Naming Authority Pointer). NAPTR has been mandatory since 1 February 2026. The NAPTR response contains a service tag (Meta:SMP) and a regexp field pointing to the recipient's SMP URL:
B-<md5>.iso6523-actorid-upis.edelivery.tech.ec.europa.eu
IN NAPTR 100 10 "U" "Meta:SMP" "!^.*$!https://smp.example.com/!" .
Result: the AP knows on which SMP URL the recipient is registered.
With the SMP URL, the AP constructs the specific metadata URL for this Participant:
GET https://smp.example.com/iso6523-actorid-upis%3A%3A0106%3A54441587
The SMP returns a ServiceGroup in XML with all supported document types. Per document type, the AP can request the ServiceMetadata via a second request:
GET https://smp.example.com/iso6523-actorid-upis%3A%3A0106%3A54441587/services/<DocumentTypeId>
The response contains the endpoint URL, transport profile, process and PKI certificate of the receiving AP. With this information, C2 encrypts and signs the document, opens an AS4 connection to C3 at the found EndpointURI, and delivers it.
The end-to-end illustration below shows how a Dutch Participant Identifier (KvK number) leads to a concrete endpoint URL:
1. Sender wants to send invoice to:
iso6523-actorid-upis::0106:54441587 (eConnect, EAS 0106 -- KvK)
2. Sender AP performs DNS NAPTR lookup:
B-<md5>.iso6523-actorid-upis.edelivery.tech.ec.europa.eu
--> SMP URL: https://smp.econnect.eu/
3. Sender AP queries SMP:
GET https://smp.econnect.eu/iso6523-actorid-upis%3A%3A0106%3A54441587
--> ServiceGroup including DocumentTypeId for NLCIUS invoice
4. Sender AP queries ServiceMetadata for NLCIUS:
GET https://smp.econnect.eu/iso6523-actorid-upis%3A%3A0106%3A54441587/services/<NLCIUS-DocumentTypeId>
--> EndpointURI: https://ap.econnect.eu/as4
--> Certificate: <X.509 / PKI-cert>
--> TransportProfile: peppol-transport-as4-v2_0
5. Sender AP builds SBDH with routing metadata,
signs and sends via AS4 + TLS to the EndpointURI.
When registering in an SMP, capabilities per document family are configured per organisation:
invoicesselfbillinginvoiceResponseorderOnlyorderAdvancedorderResponsepintProfilesmls / mlrEach capability has a value of on, off or inherited. The full set of capabilities determines which document types the sending AP can find in the SMP -- and therefore what a recipient is actually reachable for.
SMP lookups are performed on every submission. For scale and robustness, the eConnect SMP applies its own caching layer: lookups remain available -- even if an external SMP is temporarily unreachable -- by reusing cached metadata within the validity period. eConnect guarantees 99.99% uptime on the SMP.
Two similar-sounding terms that are often confused in practice:
edelivery.tech.ec.europa.eu for production) in which all Participant Identifiers are published, pointing to the correct SMP. There is one production SML and one test SML; OpenPeppol is taking over management from the European Commission (transition until end of August 2026).Think of it like DNS: the SML is the top-level phone book that refers to the right regional directory; the SMP is that directory with the actual details.
In addition to the machine-readable SMP, there are two public front-ends for manual lookups:
For customers who want to programmatically check whether a recipient is reachable, the eConnect Peppol Service Bus (PSB) offers the queryRecipientParty endpoint that queries the SMP directly and indicates via which channel and format the recipient is reachable.
A Participant Identifier can only be registered with one SMP at a time -- otherwise C2 would not know where to send the document. When switching providers, a migration procedure with a migration key applies: the current SMP generates a key, and the new SMP uses it to take over the registration seamlessly. During the transition, the organisation remains reachable; the identifier does not change, so trading partners notice nothing. See Peppol registration for the procedure at eConnect.
SMP not found / NAPTR resolution failsqueryRecipientPartyService not foundNo valid delivery optionsinvoices capability activated -- see section belowCertificate expired / invalidEndpoint not reachablequeryRecipientParty timeoutA recipient can be findable on Peppol -- the NAPTR lookup and SMP query succeed -- and still be unable to receive invoices. The SMP publishes per document type a capability. Receiving invoices falls under invoices; returning a business status (BIS Invoice Response 3.0) falls under the separate capability invoiceResponse. These are independent registrations.
If a recipient is registered on their Peppol ID exclusively for Invoice Response transaction 3.0 (invoiceResponse on on, invoices on off), the sending AP finds no invoices endpoint in the SMP. There is then no valid delivery path for an invoice, and the eConnect platform reports No valid delivery options when sending. The recipient can send an Invoice Response via that identifier, but cannot receive an invoice on it.
Important: this is not an error on the eConnect or sender side -- it is an accurate reflection of what the recipient has published in their own SMP.
Two solutions:
invoices) is registered. An organisation can register multiple identifiers with separate document type capabilities per identifier.When in doubt, check which document types a recipient publishes via the Peppol Lookup Service or programmatically via queryRecipientParty.
The Peppol Directory (directory.peppol.eu) is an asynchronous register that periodically fetches data from SMPs. It may lag behind the actual registration status. The Peppol Lookup Service (lookup.peppol.org) queries the SMP directly and shows the current status. For troubleshooting, the Lookup Service is authoritative.
A recipient may be listed in the Peppol register but registered exclusively for Invoice Response (capability invoiceResponse) and not for receiving invoices (capability invoices). There is then no valid delivery path for an invoice. Check via queryRecipientParty or the Peppol Lookup Service which capabilities are active, and contact the recipient for an alternative delivery point or a different Peppol ID.
A change in the actual SMP registration takes effect with the next submission: the sending AP queries the SMP fresh for every submission. External portals such as directory.peppol.eu may lag due to their own caching strategy. For the authoritative status, the Peppol Lookup Service or a direct SMP query via queryRecipientParty is leading.
Yes. An organisation can register multiple Participant Identifiers -- each on a different EAS scheme (for example KvK and VAT number). Per identifier, separate document type capabilities can be configured. If an invoice is rejected on one ID with No valid delivery options, it is worth checking whether the recipient has another Peppol ID with the invoices capability activated.
More about Peppol ID and identifiers