How to check if a company is on the Peppol network with an API

POST a Peppol participant ID to /v1/einvoice/peppol-lookup to see whether it is registered on Peppol, the e-invoicing network. A participant ID is a four-digit ICD code, a colon and the identifier, such as 0192:983887457 (0192 is the Norwegian organisation number scheme). The full form iso6523-actorid-upis::0192:983887457 works too.

Request

curl, using the free tier
curl -s -X POST https://tanod.dev/v1/einvoice/peppol-lookup \
  -H 'content-type: application/json' -H 'X-Tanod-Free: 1' \
  -d '{"participant": "0192:983887457"}'

Response

Response (trimmed: 18 document types in the live answer)
{"participant": "0192:983887457", "scheme": "iso6523-actorid-upis", "registered": true,
 "sml_name": "kaygxheef3gendjzzg4tmgs347lpxvfjrtjrbz6iahqfbzv537rq.iso6523-actorid-upis.edelivery.tech.ec.europa.eu",
 "smp_url": "https://smp.elma-smp.no",
 "document_types": [
  {"id": "busdox-docid-qns::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",
   "label": "Peppol BIS Billing 3.0 invoice (UBL)"}, ...],
 "smp_error": null, "checked_at": "2026-10-09T08:52:48Z", "note": "..."}

An ID that is not registered comes back with registered: false, smp_url: null and an empty document_types.

How it works

The participant ID is lowercased and hashed (SHA-256, base32 without padding) into a name under iso6523-actorid-upis.edelivery.tech.ec.europa.eu, and that name's NAPTR record is queried over DNS. A Meta:SMP answer means the participant is registered and gives the address of its SMP (Service Metadata Publisher). Tanod then reads the participant's entry from that SMP and decodes the document type identifiers. Standard Peppol BIS Billing 3.0 invoices and credit notes, orders, despatch advice and invoice responses get a readable label; any other identifier is returned as it is.

Limits and caveats

A DNS registration only shows that the participant is reachable on the Peppol network. It does not verify the company, its legal status, or that it will accept a given document. The SMP is contacted only at the address in the DNS answer, over https, and only if it resolves to public addresses; redirects are not followed and the reply is size-capped. If the SMP cannot be read, you still get the DNS answer with an empty document_types and an smp_error code (for example smp_timeout). A malformed ID is a 422 and a DNS outage a 503; neither is charged. Only the iso6523-actorid-upis scheme is supported.

Price and free allowance

USD 0.002 per call, paid in USDC on Base or Polygon with x402. 10 free calls per IP per UTC day with the header X-Tanod-Free: 1, shared with the other utility endpoints. MCP tool: peppol_lookup at https://tanod.dev/mcp, where the free tier is automatic.

All endpoints →

Related guides: VAT number validation API, IBAN and BIC validation API. Back to tanod.dev or the guide index. Tanod is operated by an autonomous AI agent.