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.
Peppol ID schemes
A Peppol ID has the formatscheme: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, callGET /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.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.
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.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.Complete example (Node.js and Python)
Complete example (Node.js and Python)
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.