Check upfront whether a receiver is reachable via Peppol using the queryRecipientParty endpoint.
Before sending an invoice or order, you want to know whether the receiver is reachable. With the queryRecipientParty endpoint you check in a single call whether an organisation is registered on Peppol, which document types are accepted and via which channel the PSB will deliver the document. This prevents delivery errors and lets you give your users direct feedback.
The PSB performs an SML/SMP lookup automatically with every delivery to find the correct Access Point of the receiver. With queryRecipientParty you can perform that same lookup upfront, without actually sending a document.
The API checks:
GET /api/v1/queryRecipientParty?identifier={schemeID}:{id}
Replace {schemeID} with the identification scheme and {id} with the receiver's number. Use one of the common Peppol identifiers:
01060106:1234567801900190:0000000123456789000099449944:NL123456789B0102080208:012345678900880088:1234567890123GET /api/v1/queryRecipientParty?identifier=0106:12345678
If the receiver is reachable, the API returns the recommended identifier and the channel the PSB will use:
{
"id": "NL:KVK:12345678",
"channel": "peppol",
"description": "default send via peppol delivery"
}
idchannelpeppol, dico)descriptionUse the value from id as EndpointID in your UBL document.
If the receiver is not found on Peppol, the API returns a 404 with an error message:
{
"helpLink": "https://psb.econnect.eu/endpoints/v1/SalesInvoice.html#query-recipient-party",
"message": "PartyId 'NL:KVK:12345678' not found in Peppol.",
"code": "API404",
"requestId": "41cd5529904be94d941137068c1c3fa1",
"dateTime": "2026-03-14T10:22:19.4878393+00:00"
}
Tip: Does an organisation have multiple identifiers (KvK, VAT, OIN)? Try a different schemeID. Not all receivers are registered under every identifier. For example: an organisation is registered as
0106:12345678(KvK) but not as0088:5412345678908(GLN). Getting a 404? Always try the Chamber of Commerce number (0106) or VAT number (9944) as an alternative, or use the POST variant to check multiple identifiers at once.
If you want to check multiple identifiers at the same time, use the POST variant. The PSB evaluates all identifiers and returns the best option:
POST /api/v1/{partyId}/salesInvoice/queryRecipientParty
The {partyId} in the URL is your own (sending) partyId. In the request body, provide an array of possible identifiers of the receiver:
["0106:12345678", "9944:NL123456789B01", "0190:00000001234567890000"]
This is useful when you don't know under which identifier the receiver is registered. The API automatically selects the best match.
?preferredDocumentTypeId?includeOptionsWith ?includeOptions=true the response contains an options array with all available delivery channels:
{
"id": "NL:KVK:12345678",
"channel": "peppol",
"description": "default send via peppol delivery",
"options": [
{
"channel": "peppol",
"description": "default send via peppol delivery",
"identifiers": [
{
"partyId": {
"text": "NL:KVK:12345678",
"value": "12345678",
"schemeAuthority": "iso6523-actorid-upis",
"schemeIdText": "NL:KVK",
"schemeIdNumber": "0106"
},
"isValid": true
}
]
}
]
}
Use queryRecipientParty as a pre-flight check in the following situations:
?channel parameter when sendingNote: The lookup checks the registration at the time of the call. Between the lookup and the actual delivery, a registration may change. In practice this is rare, but keep it in mind for large batches with a delay between check and delivery.
Tip: Want to manually check an SMP registration, outside of the API? OpenPeppol offers the Peppol Lookup Service, where you can directly query the SMP and Business Card data of a Peppol participant. Useful for verifying whether a registration is correctly configured.
API404 "PartyId not found in Peppol"API404 "No valid delivery options"Want to also see which Access Point and document formats a receiver supports exactly? The Peppol delivery options endpoint provides a more detailed overview of the SMP registration.
Try the lookup in the API