Overview
Before sending an e-invoice via Peppol, you need to know your customer’s Peppol ID and verify they can receive invoices. The e-invoice.be API provides two distinct lookup methods, each with different data sources and use cases:/api/lookup- Direct SMP lookup (real-time, always accurate)/api/lookup/participants- Peppol Directory search (broader search, may be incomplete)
What is a Peppol ID?
A Peppol ID is a unique identifier for organizations registered on the Peppol network. It consists of:- Scheme: The identifier scheme (e.g.,
0208for Belgian companies) - Identifier: The actual ID
scheme:identifier → 0208:0123456789
Belgian Peppol IDs use the CBE number (Crossroads Bank for Enterprises number), which is equivalent to the Belgian VAT number without the ‘BE’ prefix. For example, if the VAT number is BE0123456789, the Peppol ID is
0208:0123456789 (numbers only).Organizations must be registered with a Peppol Access Point to receive e-invoices. If a customer is not registered, they cannot receive invoices via Peppol.
/api/lookup - Direct SMP Lookup
What It Does
Performs an exact, real-time lookup directly against the Service Metadata Publisher (SMP) using a specific identifier. This queries the authoritative source for participant registration information.Key Characteristics
- Always accurate: Queries the SMP in real-time (a-la-minute)
- Exact match required: Requires precise Peppol ID
- Authoritative data: Returns the current registration status directly from the SMP
- 100% reliable: Always shows registered participants
When to Use
- Before sending invoices: Verify a recipient can receive documents
- Exact identifier known: You have the CBE number or Peppol ID
- Need certainty: Must confirm current registration status
- Production validation: Pre-flight checks before document transmission
Request
The endpoint requires a Peppol ID in the format<scheme>:<id>. For Belgian companies, use scheme 0208 followed by the 10-digit CBE/BTW number.
Response
Registered participant (PeppolIdLookupResponse, abbreviated):
To decide whether a participant can receive invoices, inspect
dnsInfo.status (DNS resolves to an SMP), whether a businessCard is present, and the entries under serviceMetadata. There is no single top-level registered boolean — use the /api/validate/peppol-id endpoint if you want a consolidated is_valid result./api/lookup/participants - Peppol Directory Search
What It Does
Searches the official Peppol Directory database, which contains participant information that access points have voluntarily published. This is a proxy for the public Peppol Directory.Key Characteristics
- Search functionality: Find participants by name or partial identifier
- Directory-based: Only shows participants whose access points publish to the directory
- May be incomplete: Not all registered participants appear in the directory
- Discovery tool: Useful for finding participants when exact ID is unknown
Important Limitation
When to Use
- Discovery: Search for participants by company name
- Browsing: Explore registered participants in a country
- Fuzzy search: Find participants without knowing exact identifiers
- Autocomplete features: Suggest participants as users type
When NOT to Use
- Validation before sending: Use
/api/lookupinstead for accurate verification - Confirming registration: Directory absence doesn’t mean unregistered
- Production checks: Not reliable for pre-send validation
Request
Query Parameters
Response
Comparison
Common Peppol ID Schemes
Different countries use different identifier schemes:Integration Examples
Direct Lookup by CBE Number
Discovery + Validation Pattern
Combine both endpoints for the best user experience:Pre-Flight Check Workflow
Before creating an invoice, validate the recipient:Handling Unregistered Customers
If a customer is not on the Peppol network:- Inform them: Let them know about Peppol e-invoicing benefits
- Alternative delivery: Send PDF invoices via email
- Register with e-invoice.be: Customers can sign up at e-invoice.be
Example: Fallback Logic
Best Practices
Always Use Direct Lookup for Validation
Always Use Direct Lookup for Validation
Before sending invoices, use
/api/lookup with the exact Peppol ID:Use Directory Search for Discovery Only
Use Directory Search for Discovery Only
The Peppol Directory is excellent for discovery, not validation:
Cache Lookup Results
Cache Lookup Results
Cache participant lookups to reduce API calls:
Handle Scheme Variations
Handle Scheme Variations
Different countries use different schemes. Build a mapping:
Provide Clear User Feedback
Provide Clear User Feedback
Explain why directory search may not find participants:
Handle Missing Directory Entries Gracefully
Handle Missing Directory Entries Gracefully
Don’t assume a participant is unregistered if not in directory:
Real-World Scenario
Directory vs. SMP Lookup
Some Peppol access points register participants but do not publish all participant data to the Peppol Directory. What happens:- A participant is fully registered with their access point
- They can send and receive invoices via Peppol
- Their registration is in the SMP (authoritative source)
- But their access point has not synchronized data with the directory
/api/lookup (Direct SMP) — dnsInfo.status is "success" and a businessCard is present:
/api/lookup/participants (Peppol Directory):
The Takeaway
The participant is fully registered and can receive invoices, but does not appear in directory searches. This demonstrates why/api/lookup must be used for validation before sending invoices.
Technical Details
Why the Difference Exists
- SMP registration is required for Peppol participation
- Directory publication is optional for access points
- Some access points prioritize privacy and don’t publish participant lists
- Others may have technical reasons for not synchronizing with the directory
Data Freshness
Integration Checklist
When implementing participant lookup in your application:- Use
/api/lookupfor all validation before sending invoices - Use
/api/lookup/participantsonly for discovery and search features - Never rely on directory search absence as proof of non-registration
- Always validate directory search results via direct SMP lookup
- Provide clear feedback when directory search returns no results
- Cache direct lookup results (with appropriate TTL)
- Handle cases where CBE number is known vs. only company name
- Test with known participants from different access points
Next Steps
Create Invoices
Create and send e-invoices
Validation Guide
Test invoice JSON during development
Set Up Webhooks
Get notified about delivery status
API Reference
Explore all endpoints