Check a Peppol ID
ask the network before you ask the buyer.
Enter a business’s country and one of its identifiers: a VAT number, a Belgian enterprise number (KBO/BCE), a GLN, a SIREN or SIRET, a Leitweg-ID or a Peppol participant ID. The answer says whether that identifier is registered on Peppol, which invoice document types it accepts, and what to put on an invoice to reach it. No account and no key.
This check needs JavaScript: the page asks the Attestwire API from your browser.
What you enter here is sent to api.attestwire.com, which asks the sources the answer names: VIES, the EU’s VAT number service; OpenPeppol’s public lookup; the Peppol Directory; and, for a French company, the French company register. What the API records about a call is on the privacy page.
What the answer means
Registered means OpenPeppol’s lookup, which reads the network’s own registry (the SML) and the participant’s service record (the SMP), found the identifier and lists the document types it accepts. That is registration, not a delivery test: the access point that sends your invoice checks the connection before it sends.
Not found is inconclusive. The lookup did not find the identifier under that scheme, and the business may still be on Peppol under another identifier: a Belgian company is looked up by its enterprise number and by its VAT number, separately, because registration under one says nothing about the other. Unavailable means a source did not answer; try again later.
The Peppol Directory lists only the participants whose access point publishes a business card, so a missing card says nothing about registration. The recommendation (the channel, the format, the specification identifier BT-24 and the electronic address BT-49) is for the invoice: it is not a tax determination, and not a promise that the buyer accepts the invoice. Which identifier to check, and why
The same lookup from your code
The page calls POST /v1/recipient on the hosted API with
its public demo key. The same call works from a terminal:
curl -X POST https://api.attestwire.com/v1/recipient \
-H "authorization: Bearer demo" \
-H 'content-type: application/json' \
-d '{"country":"BE","id":"0417.497.106"}'
The demo key belongs to nobody and is limited per IP address: 6 requests a minute and 30 documents a UTC day, shared across POST /v1/validate, POST /v1/generate and POST /v1/recipient; every other route refuses it. For your own traffic, a free API key has its own monthly allowance, and the API reference documents every field of the answer.