Skip to content
einvoicing.dev

API/Participants

Look up a Peppol participant

GET/v1/participants/{participant_id}· API key

Answers "can this business receive Peppol invoices, and which documents does it accept?" by querying the Peppol SML and the participant's SMP live. The SML is the authoritative source; the Peppol Directory is optional for participants, so directory is null for many businesses that are nonetheless registered.

A participant that is not registered returns 200 with registered: false — absence from the network is an answer, not a missing resource.

For a UK business, the participant identifier is usually its VAT number under scheme 9932. Registrations exist both with and without the GB prefix, and Peppol treats them as different participants. So for 9932 both forms are tried, and id reports the one that is registered. Identifier values are case-insensitive; id is returned lower-cased, as Peppol hashes it.

The lookup follows the Peppol SML specification (v1.3.0, in force since November 2025): a U-NAPTR record at a base32 SHA-256 hash of the identifier, then the participant's SMP. Results are cached for up to five minutes; checked_at says when the network was last asked.

Request
curl https://api.einvoicing.dev/v1/participants/<participant_id> \  -H "Authorization: Bearer $EINVOICING_API_KEY"

Parameters

NameInTypeDescription
participant_idrequiredpathstring

A Peppol participant identifier as scheme:identifier, where scheme is a four-digit EAS code. URL-encode the colon if your client requires it (%3A); both forms are accepted.

Response

200

The network was asked and answered.

FieldTypeDescription
datarequiredParticipantWhat the Peppol network says about one participant identifier.
Example responseapplication/json
{  "data": {    "id": "9932:GB123456789",    "scheme": "9932",    "identifier": "GB123456789",    "registered": true,    "capabilities": [      {        "name": "Peppol BIS Billing 3.0 Invoice",        "document_type_id": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1",        "process_id": "urn:fdc:peppol.eu:2017:poacc:billing:01:1.0"      },      {        "name": "Peppol BIS Billing 3.0 Credit Note",        "document_type_id": "urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1",        "process_id": "urn:fdc:peppol.eu:2017:poacc:billing:01:1.0"      }    ],    "directory": {      "name": "Acme Widgets Ltd",      "country_code": "GB"    },    "checked_at": "2026-09-11T14:03:11.482Z"  }}

Errors

Every error is application/problem+json (RFC 9457). Branch on type, which is stable, never on title or detail.

StatusWhen
401

No key, or a key that is unknown or revoked. Problem type is unauthenticated.

/problems/unauthenticated

402

The Free plan's monthly allowance for this operation is used up. This is a billing state, not a rate limit: waiting will not help until the period resets or the plan changes. Paid plans never receive it. Problem type is allowance-exhausted.

/problems/allowance-exhausted

422

The identifier is not in scheme:identifier form with a four-digit EAS scheme. Problem type is invalid-participant-id. A well-formed identifier under a scheme nobody uses is not an error: it answers 200 with registered: false.

429

Too many requests in a short window. Slow down and retry after the number of seconds in Retry-After. Problem type is rate-limited.

/problems/rate-limited

502

The Peppol SML or the participant's SMP did not answer in time. The question is still open, not answered "no". Problem type is upstream-unavailable.

Schemas

Participant

What the Peppol network says about one participant identifier.

FieldTypeDescription
idrequiredstringThe identifier as looked up, scheme:identifier.
schemerequiredstringEAS scheme code.
identifierrequiredstring
registeredrequiredbooleanTrue when the SML resolves the participant to an SMP.
capabilitiesrequiredobject[]The e-invoicing document types the participant accepts: Peppol BIS Billing 3.0 and PINT Billing invoices and credit notes. Other registered types (orders, catalogues and so on) are not listed. Empty when not registered, or when the participant's SMP no longer knows it.
namerequiredstringA readable name for the document type.
document_type_idrequiredstringThe Peppol document type identifier, as registered in the SMP.
process_idrequiredstringThe Peppol process identifier.
directoryrequiredobject or nullThe participant's Peppol Directory entry, when it has chosen to publish one.
namestring or null
country_codestring or null
checked_atrequiredTimestamp · date-timeRFC 3339, UTC, millisecond precision.