SMP and Participant Lookup: how Peppol routes documents

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.

Why an SMP?

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.

Participant Identifier: the address

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:

EASCountryIdentifier typeExample0106NetherlandsChamber of Commerce number (KvK)iso6523-actorid-upis::0106:544415870190NetherlandsOrganisation Identification Number (OIN, 20 digits)iso6523-actorid-upis::0190:000000018200293360009944NetherlandsVAT numberiso6523-actorid-upis::9944:NL851306469B010208BelgiumEnterprise number (KBO)iso6523-actorid-upis::0208:08999653070204GermanyLeitweg-ID (government)iso6523-actorid-upis::0204:991-01234-560192NorwayOrganisation numberiso6523-actorid-upis::0192:7457073270235United Arab EmiratesTax Registration Number (TRN)iso6523-actorid-upis::0235:1001234567000030088InternationalGlobal Location Number (GLN, GS1)iso6523-actorid-upis::0088:1548079098355

A full overview is available at docs.peppol.eu/edelivery/codelists/ and in Peppol ID and identifiers.

The full discovery chain

The sending AP answers three questions for every document:

  1. Where is the recipient's SMP? Lookup via SML / DNS NAPTR.
  2. Which endpoint and certificate match the required document type? Lookup against the SMP itself.
  3. Which Peppol profile does the recipient support? The answer is in the SMP response (BIS Billing V3, NLCIUS, PINT EU, etc.).
Step 1: Hash the Participant Identifier

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.

Step 2: DNS NAPTR lookup

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.

Step 3: Query the SMP

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.

Example: from Peppol ID to AP route

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.
What is in an SMP registration?

When registering in an SMP, capabilities per document family are configured per organisation:

CapabilityDocument typesinvoicesSI-UBL 2.0 (NLCIUS), Peppol BIS Billing V3 (UBL and CII), PINT EUselfbillingBIS Self-Billing V3invoiceResponseBIS Invoice Response 3.0orderOnlyOrder Only 3.3orderAdvancedOrder, Order Change, Order Cancellation 3.3orderResponseOrder Response 3.3pintProfilesPer region: PINT-SG, PINT-A-NZ, PINT-MY, PINT-JP, PINT-AE, PINT-OM, PINT-SKmls / mlrMessage Level Status / Message Level Response

Each 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.

Caching and availability

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.

SML versus SMP

Two similar-sounding terms that are often confused in practice:

  • The SML (Service Metadata Locator) is the central DNS zone (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).
  • The SMP (Service Metadata Publisher) is the directory of an individual Service Provider. Every SP runs its own SMP for its own customers.

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.

Peppol Directory and Lookup Service

In addition to the machine-readable SMP, there are two public front-ends for manual lookups:

  • Peppol Directory -- directory.peppol.eu: the public register of Peppol participants, with search by organisation name, country and Participant ID. Asynchronous: may lag behind the actual SMP status.
  • Peppol Lookup Service -- lookup.peppol.org, since March 2026: queries the SMP directly and shows the current publication status. Useful for troubleshooting when the Directory and actual registration are out of sync.

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.

Migration between Service Providers

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.

Common error messages
SymptomCauseSolutionSMP not found / NAPTR resolution failsParticipant Identifier not (or not correctly) registered; wrong EAS codeCheck registration via Peppol Directory or queryRecipientPartyService not foundDocumentTypeId not supported by the recipientConfirm with recipient which profiles their SMP publishesNo valid delivery optionsRecipient is in the Peppol register but does not have the invoices capability activated -- see section belowAlternative delivery point or different Peppol ID -- see section belowCertificate expired / invalidCertificate of the receiving AP has expiredThe receiving AP must renew its certificateEndpoint not reachableOperational issue at the receiving APContact recipient; cached lookup may provide a temporary solutionqueryRecipientParty timeoutRecipient's SMP is not respondingThe receiving AP or its administrator must investigate the SMP
"No valid delivery options": recipient only registered for Invoice Response

A 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:

  1. Alternative delivery point: ask the customer to contact the recipient and ask via which channel (email or supplier portal) the invoice can be delivered.
  2. Different Peppol ID: check whether the recipient has a second Peppol ID on which the invoice document type (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.

Frequently asked questions
What is the difference between the Peppol Directory and the Peppol Lookup Service?

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.

Why do I get 'No valid delivery options' when the recipient is on Peppol?

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.

How long does it take for a change in the SMP to become visible?

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.

Can a recipient have multiple Peppol IDs?

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