Skip to main content

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:
  1. /api/lookup - Direct SMP lookup (real-time, always accurate)
  2. /api/lookup/participants - Peppol Directory search (broader search, may be incomplete)
Understanding the difference between these endpoints is crucial for reliable participant verification.

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., 0208 for Belgian companies)
  • Identifier: The actual ID
Format: scheme:identifier0208: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.

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

Not all registered Peppol participants appear in the Directory. Publishing to the Peppol Directory is optional, not mandatory. An access point may choose not to synchronize participant data with the directory, even though those participants are fully registered and can receive invoices.

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/lookup instead 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:
For a complete list of Peppol identifier schemes, see the official Peppol code list.

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:
  1. Inform them: Let them know about Peppol e-invoicing benefits
  2. Alternative delivery: Send PDF invoices via email
  3. Register with e-invoice.be: Customers can sign up at e-invoice.be

Example: Fallback Logic

Best Practices

Before sending invoices, use /api/lookup with the exact Peppol ID:
The Peppol Directory is excellent for discovery, not validation:
Cache participant lookups to reduce API calls:
Different countries use different schemes. Build a mapping:
Explain why directory search may not find participants:
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
Results: Via /api/lookup (Direct SMP)dnsInfo.status is "success" and a businessCard is present:
Found - The participant is registered Via /api/lookup/participants (Peppol Directory):
Not found - Not in the directory database

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/lookup for all validation before sending invoices
  • Use /api/lookup/participants only 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