---
title: "Who routes this company · every country"
description: "Resolve which platform routes a company"
canonical: "https://docs.get-flowie.com/compliance/routing"
source: "https://docs.get-flowie.com/compliance/routing.html"
---

# Who routes this company · every country

Compliance · All countries

# Who routes this company — every country

Before you can send an invoice you have to know where it goes, and "where" is never the company — it is the platform that receives on its behalf. Every country answers that question, but not in the same way, and the difference decides whether the answer is a lookup or a list.

**France answers from a closed registry.** The DGFiP accredits a fixed set of [Plateformes Agréées](<fr/platforms.html>) and the PPF annuaire routes on a four-digit `matriculePlateforme`. The number means nothing on its own, so the answer is a join — and nobody published it until [we did](<fr/platforms.html>).

**Peppol answers live.** There is no registry of accredited platforms to consult: the participant identifier itself resolves, through DNS and then HTTP, to the access point that serves it — and the access point's certificate names the company operating it. No list to maintain, and never stale.

**—** countries covered

**—** Peppol participants, measured

**—** with a provider registry

**—** resolvable live

## Resolve one now

Give a Peppol participant identifier — `scheme:value`, like `0208:0848934496` (Belgium) or `0192:991825827` (Norway) — and this asks the network who routes it, right now.

### Who routes this participant?

Calls `GET /v1/portability/access-point/{participantId}`. Your key stays in this browser and is never sent anywhere but the API.

Resolve

## Every country

Participant counts and identifier schemes are **measured, not asserted** : each row comes from querying the Peppol Directory for that country and tallying the schemes real registrations actually use. A country showing no participants has none — it is not a country we failed to look up.

Loading the directory…

Country | Participants | Identifier schemes in use | Provider registry  
---|---|---|---  
  
Nothing matches that filter.

## How the live answer is resolved

Three hops, and the last one is the one that actually names a company:

  1. **SML — DNS.** The identifier is lowercased, hashed with SHA-256, Base32-encoded, and asked for a `NAPTR` record. The record's regexp field names the SMP that serves the participant: `"!.*!https://smp.example.net!"`.
  2. **SMP — HTTP.** `GET <smp>/iso6523-actorid-upis::<id>` lists every document type the participant accepts, each linking its own service metadata.
  3. **The endpoint certificate.** The service metadata carries the access point's X.509 certificate, and its subject _is_ the answer: `CN=POP000016, OU=PEPPOL PRODUCTION AP, O=B2Brouter Global SL, C=ES`. `O` is the legal name, `CN` the Peppol access point id.



**The zone moved, and stale documentation will send you nowhere.** OpenPeppol retired `edelivery.tech.ec.europa.eu` together with the old CNAME/MD5 scheme; production has been `participant.sml.prod.tech.peppol.org` with NAPTR/SHA-256 since **19 March 2026**. Querying the retired zone returns `NXDOMAIN` for every participant on the network — which looks exactly like "nobody routes them". Both schemes are attempted here, and the answer reports which one replied.

One consequence worth internalising: **the access point's country is frequently not the company's**. A Belgian company routed by a Spanish provider, a Swedish one by a Finn — normal, and a good reminder that the platform market is European rather than national.

## Where a registry exists instead

A handful of countries accredit providers and publish the list. There the France pattern applies — a name, a status, and usually a code — and the answer can be a page rather than a lookup:

Country| What the authority registers  
---|---  
  
[France is the one built out in full](<fr/platforms.html>) — all 166 Plateformes Agréées joined to the matricule each routes on, with the evidence for every number. The others are listed so you know a registry exists to ask for; we have not ingested them.

## Use it from the API
[code] 
    # who routes this Belgian company?
    curl -H "X-API-Key: $FLOWIE_API_KEY" \
      https://api.get-flowie.com/v1/portability/access-point/0208:0848934496
    
    # France, from the registry instead
    curl -H "X-API-Key: $FLOWIE_API_KEY" \
      https://api.get-flowie.com/v1/portability/annuaire/350422622
    
    # and who is behind a French matricule
    curl -H "X-API-Key: $FLOWIE_API_KEY" \
      "https://api.get-flowie.com/v1/portability/platforms?matricule=0003"
[/code]

The access point answer carries `apName`, `apPeppolId`, `apCountry`, `smpUrl`, `endpointUrl`, `transportProfile`, `documentTypeCount`, `certificateExpiresOn`, and `resolvedVia`. A participant nobody routes answers `200` with `error` set rather than `404` — "not registered" is an answer, not a failure.

The table above reads a static asset — [`assets/routing-directory.json`](<../assets/routing-directory.json>) — if you want the per-country map without calling anything.

## References

  * **Peppol Policy for use of Identifiers** — the participant identifier schemes counted in the table above.
  * **Peppol CNAME to NAPTR Migration (v1.0.0, April 2025)** — the zone and hashing change that took effect on 19 March 2026.
  * **[France · Plateformes Agréées](<fr/platforms.html>)** — the registry answer, in full.
  * **[Compliance overview](<index.html>)** — mandates and timelines for all countries.
