E-Directory
The E-Directory screen is the user-facing search tool for finding a French company in the INSEE registry (recherche-entreprises.api.gouv.fr) and checking whether the matching SIREN / SIRET entries are reachable on the PPF directory for electronic invoice delivery.
Use this page when:
- you need to look up a customer's exact SIREN / SIRET before issuing an invoice;
- you want to confirm a buyer is registered on the Plateforme Publique de Facturation (PPF) and ready to receive an electronic invoice;
- you are debugging an addressing rejection (e.g.
REJ_ADR) and need to verify the directory state for a specific identifier.
The page applies regardless of source system — JD Edwards, SAP, NetSuite or a custom ERP.
The two underlying lookups are independent and have different roles:
- INSEE search — verifies that the company exists and pulls its name, address, administrative state. Free public API, no credentials needed.
- PPF directory check — verifies that the SIREN / SIRET is registered as a recipient on the Plateforme Publique de Facturation. Uses the credentials configured in Configuration → System → e-directory.
See the Configuration → System → e-directory page for the broader context — credentials, search roles and the PPF / INSEE distinction.
At a glance
How a search runs
The two lookups happen in sequence: INSEE first to populate the companies, then one PPF directory call per company to list its registered identifiers. The user sees the results fill in two passes. Expanding a company card then runs the Peppol lookup for that company.
Search section
A single input + button at the top of the page.
| Element | Behaviour |
|---|---|
| Search field | Free-text query: company name, partial name, SIREN, SIRET, or any combination. Press Enter or click Search to submit. |
| Search button | Triggers the INSEE lookup. Disabled while a search is in progress and when the field is empty. |
The query is sent to recherche-entreprises.api.gouv.fr server-side; the API returns matching companies with their full establishment data.
Results
Results are grouped by company: one collapsed card per SIREN, showing the legal name, the head-office address, the INSEE administrative state and an electronic-address summary — how many electronic addresses the PPF holds for the company and how many are enabled. Expand a card to reveal two groups:
Establishments (INSEE)
An inner collapsible list of the company's establishments — each SIRET with its address and administrative state, from the INSEE registry. Searching by SIREN or SIRET lists all establishments of the company (a second INSEE lookup by company name fills what the numeric search omits).
Electronic addresses
Every identifier registered for the SIREN on the PPF, whatever its form — a SIREN, a SIREN + SIRET, a routing code or a suffix — each with its enabled / disabled state. Identifiers that carry a suffix, such as 422250845_FGX, are listed here too — a form the previous per-row check could not surface.
The listing goes through the connector's directory-check-siren endpoint, which returns the full lines with per-endpoint response mappings (ATGP, Yooz and Esker shapes are supported — including numeric reachability flags such as Esker’s HasAssignedPlatform 1/0 alongside true/false). When that endpoint isn't configured, the page says so rather than guessing — set it under Configuration → System → e-directory. The processing-time directory check is unchanged; the older directory-check-siret endpoint is obsolete.
Peppol directory
Expanding a company card also queries the public Peppol network — no account needed. A Peppol directory group lists each registered participant of the company, with its name, its registration date and the service provider that operates it — the PA (e.g. Pennylane) with its Peppol seat id, resolved through the official SML/SMP discovery. The access-point and SMP URLs sit in the provider's tooltip.
Participants are found in two ways:
- Business cards of the Peppol Directory matching the SIREN.
- Direct SML probes of every identifier a French company can hold — publishing a business card is optional, and some providers do not. The probes cover the SIREN under schemes
0225and0002, every address registered in the PPF directory (bare, suffixed, SIRET, routed) under0225, and the SIRET of each establishment under0009. A participant found this way shows no business card in place of its registration date.
| Column | Content |
|---|---|
| Participant | The Peppol participant identifier (ICD + value, e.g. 0225:80320631700015). |
| Plateforme (PA) | The service provider operating the participant, with its seat id. When the SMP certificate cannot be read, the SMP host followed by SMP non joignable, the reason in the tooltip; non résolu with the reason when the SML gave no SMP. With Resolve platform via SMP = N, the SMP host. |
| Enregistré le | The participant's Peppol registration date — no business card for a participant found through the SML only. |
The lookup runs once for every open company card — including a card left open from a previous search — and is also available as POST /api/peppol-lookup for integrations (see the API reference). A participant with no reachable provider still lists its registration and name. The server log lists each unresolved participant with its reason. An outage of the Peppol Directory no longer hides the participants found through the SML.
The whole page is also available as a single call: GET /api/e-directory/search?q=… (or POST with {q, peppol}) returns the INSEE companies matching a name, SIREN or SIRET with head office and establishments, the PPF directory lines of each company and, with peppol=true, its Peppol participants.
Network flows (firewall)
Every E-Directory external call is made server-side — from the NomaUBL server, not the user's browser — so the firewall rules apply to the server's outbound traffic. Besides the PA connector, the destinations are:
| Purpose | Destination | Port / Protocol |
|---|---|---|
| Company search (INSEE) | recherche-entreprises.api.gouv.fr | HTTPS 443 |
| Peppol directory (business cards) | directory.peppol.eu | HTTPS 443 |
| Peppol SML resolution — primary zone (OpenPeppol) | DNS NAPTR queries on *.iso6523-actorid-upis.participant.sml.prod.tech.peppol.org | DNS 53 via the server's resolver |
| Peppol SML resolution — fallback zone (former European Commission SML) | DNS NAPTR queries on *.iso6523-actorid-upis.edelivery.tech.ec.europa.eu | DNS 53 via the server's resolver |
Public DNS resolvers — only with Public DNS fallback = Y, when the server's resolver answers nothing | 8.8.8.8, 1.1.1.1 | DNS 53 (UDP and TCP) |
Peppol SMP (provider resolution) — only with Resolve platform via SMP = Y | dynamic — the SMP host of each participant's platform (e.g. smp.pennylane.com) | HTTPS 443 |
What matters for the rules:
- INSEE and
directory.peppol.euare fixed hostnames — easy to whitelist. The INSEE entry also covers the invoice modal's client search and the Fix buyer search (same API). - The SML moved in 2026. OpenPeppol took over the Service Metadata Locator and participant records now live in the
participant.sml.prod.tech.peppol.orgzone. NomaUBL queries it first and keeps the formeredelivery.tech.ec.europa.euzone as fallback. A DNS policy that only allowed the former zone must add the new one — otherwise most participants are no longer found. - The SML step is DNS only — no HTTP. If the server already resolves public DNS through the corporate resolver, there is nothing to open. Some corporate resolvers drop or mangle NAPTR queries: let the corporate resolver forward NAPTR queries for both zones, or set Public DNS fallback to
Yin the e-directory settings and allow outbound DNS (port 53, UDP and TCP) to8.8.8.8and1.1.1.1. The fallback is off by default. A no such name answer from the server's resolver is final — an unregistered identifier is not retried elsewhere — and a failing public resolver is dropped for the rest of the lookup. - The SMP host can't be whitelisted in advance — it's whatever domain each buyer's platform uses (Pennylane, Esker, Yooz… one per participant), so provider resolution needs a broad HTTPS 443 outbound allowance to work generally. If that isn't acceptable, set Resolve platform via SMP to
N: the lookup stops at the SML answer and the Plateforme column shows the SMP host (smp.pennylane.com), which already names the provider — only its official name and seat are missing. - Diagnosis. When
directory.peppol.euis unreachable, the participants found by the SML probes are still listed. When nothing is found at all, the Peppol section shows Peppol Directory unreachable (directory.peppol.eu) — check outbound HTTPS/firewall.
Result count
Above the results, a small label indicates the number of companies returned by INSEE for the query (e.g. 12 results).
Tips & best practices
- Search by name first, then narrow down. INSEE returns the legal entity (SIREN) and its establishments (SIRET) — picking the right SIRET avoids the common "right SIREN, wrong establishment" mistake when issuing invoices.
- A disabled line is not always permanent. A buyer may not yet be registered, or a specific identifier not yet enabled; ask them to register before re-trying. The directory state changes daily as more companies subscribe to the PPF.
- Match the exact identifier, not just the SIREN. The electronic-address lines show which form is actually reachable — a plain SIREN, a SIREN + SIRET, or a suffixed code. Address the invoice to an enabled line; a company can have several, only some enabled.
- Cross-check the establishment state. A ceased establishment cannot receive an invoice even if the company appears in the directory. Check the INSEE state on the establishment before trusting an electronic-address mapping.
- If the lines don't appear, wire the endpoint. An empty directory list with a "not configured" note means the connector has no
directory-check-sirenendpoint — set it under Configuration → System → e-directory, with the response mappings for your platform (ATGP, Yooz, Esker). The listing reads its array from the endpoint's Response field (recordsfor Esker,results…).