Skip to main content
A receiver must have a Peppol ID and a registration with an Access Point before you can send a document on the Peppol network. The API has three operations to find and check a receiver. All three work without an API key: the Authorization header is not necessary.

Compare the operations

The two operations with an exact Peppol ID use the same lookup and the same cache. The API keeps each result for 15 minutes.
The Peppol Directory can be incomplete. Publication in the directory is optional for an Access Point, so a registered participant can be absent from the search results. An empty search result does not show that a company is not on Peppol. Use the directory search to find candidates only, then check the Peppol ID.

Peppol ID schemes

A Peppol ID has the format scheme:identifier, for example 0208:1018265814. The scheme is a four-digit code that tells which register issued the identifier. This table shows the most frequent schemes of the Peppol participant identifier scheme code list, version 9.1. This is the version that the API uses. For all schemes, see the Peppol code lists. For a Belgian company, the identifier is the enterprise number: the VAT number without BE. The VAT number BE1018265814 gives the Peppol ID 0208:1018265814.

Pre-send check

Before you send a document, call GET /api/validate/peppol-id with the Peppol ID of the receiver. Send only if is_valid is true and supported_document_types contains the document type that you send. This is the only place where this rule is written; other pages link to it.
string
required
Peppol ID in the format scheme:identifier, for example 0208:1018265814.
boolean
The SML has a DNS record for the Peppol ID, so an SMP knows the participant.
boolean
The SMP publishes a business card with a minimum of one entity.
boolean
true if dns_valid or business_card_valid is true. It does not tell which document types the receiver accepts; read supported_document_types for that.
object
null if there is no business card.
For a Peppol ID that is not registered, the status is 200 and is_valid is false.

Get the full record of a participant

GET /api/lookup returns the complete result of the SML and SMP lookup. Use it when you need the endpoints, the transport profile or the certificates of a receiver, for example to find the cause of a failed send. It has the same peppol_id query parameter as the pre-send check.
This example is shortened: it shows one endpoint, and no processes and certificates content. The status is 200 also for a Peppol ID that is not registered. In that case dnsInfo.status is error. This response has no single field that says “registered”; the pre-send check gives that answer.

Search the Peppol Directory

GET /api/lookup/participants searches the public Peppol Directory. Use it when you know the name of a company but not its Peppol ID, for example for a search field in your application.
string
required
Search text: a company name or a part of an identifier.
string
ISO 3166-1 alpha-2 country code, for example BE. Without this parameter the search is global.
Join peppol_scheme and peppol_id with a colon to get the Peppol ID for the pre-send check.

Find and check a receiver

This pattern combines the operations. If you know the identifier, it checks the Peppol ID directly. If you know only the name, it searches the directory and checks each candidate.
If the list is empty after a search by name, ask the customer for the enterprise number or VAT number and check the Peppol ID directly. If the direct check also gives is_valid: false, the customer cannot receive documents on Peppol; use a different delivery method.

Integration checklist

  • Do the pre-send check for each new receiver.
  • Use the directory search only to find candidates, and check each candidate.
  • Do not use an empty directory result as proof that a company is not registered.
  • Show the user a clear message when the search finds nothing, and ask for the identifier.
  • Keep a positive result in your own cache for a limited time; a receiver can change its Access Point or stop its registration.
  • Set the Peppol IDs explicitly when you send. See Create e-invoices.
  • For the status codes and the error body of these operations, see Errors and troubleshooting.

Next Steps

Create e-invoices

Create a document and send it to the receiver that you checked.

Document lifecycle and delivery tracking

Follow the state of a document after the send.

Errors and troubleshooting

Find the cause of a failed send.

Glossary

Read the definitions of the Peppol terms.