Configure multiple delivery channels: Peppol, DICO, other procurement networks, email fallback and priorities.
One of the most powerful features of the PSB is multi-channel delivery: through a single API integration you can reach recipients on Peppol, other procurement networks and by email. The PSB automatically selects the best channel, but you can also control the routing yourself.
By default, the PSB routes all invoices via Peppol. The system checks whether the recipient is registered on Peppol and sends the invoice through the Peppol network. If the recipient is not on Peppol, the fallback mechanism kicks in.
By configuring multiple hooks with Send* topics, you can activate additional channels:
-0003:XC...) as identifierThe PSB selects the channel based on a priority order:
InvoiceSent takes priority over a wildcard hook1 < 02 < 10 < dico < peppol)Before sending an invoice, you can use queryRecipientParty to check which channel the PSB will use. There are two endpoints, one per document type:
POST /api/v1/{partyId}/salesInvoice/queryRecipientParty
POST /api/v1/{partyId}/purchaseOrder/queryRecipientParty
The body accepts a simple array ["0106:12345678"] or an object with meta attributes { "partyIds": [...], "metaAttributes": {...} }. Optional query parameters: ?preferredDocumentTypeId, ?includeOptions, ?documentFamily (purchaseOrder variant only).
The response shows the selected channel and the available alternatives.
Within the same queryRecipientParty call, at most one identifier per scheme/agency code (e.g. 0106, 0190, 0208, 9944) may be included. Multiple identifiers in different schemes within the same call are permitted.
If this rule is violated, the PSB responds with:
EConnect.Psb.Models.EConnectException: 'Duplicate id agencies {code} requested.'
where {code} is the agency code without leading zero (scheme 0208 → 208). To test multiple candidates within the same scheme, make separate API calls -- one per candidate.
For advanced lookups including Access Point URL and certificate, use the Peppol endpoint:
GET /api/v1/peppol/deliveryOption?partyIds=...&documentFamily=...&isCredit=...&documentTypeIds=...&preferredDocumentTypeId=...
The response contains partyId, documentTypeId, processId, protocol (As2/As4), url and certificate.
In some cases you may want to override the automatic channel selection. You can do this with the ?channel={hookId} query parameter on the send endpoints:
POST /api/v1/{partyId}/salesInvoice/send?channel=hook-123-abc
This forces the PSB to use the specified channel (hook), regardless of the automatic selection.
A popular combination is a Peppol hook with an email hook as fallback. Via conditional output topics, the Peppol hook publishes a Send*Fallback topic on delivery errors (HTTP 400, 404 or 500), which the email hook listens to. When the same email hook also explicitly listens to Send* (in addition to Send*Fallback), it automatically appears as channel peppol-fallback in the queryRecipientParty response. This allows the calling code to explicitly select the channel via ?channel=peppol-fallback on the send endpoints, which is useful for scenarios where Peppol is intentionally bypassed.
eConnect automatically transforms UBL invoices into the cXML format that Coupa expects. The connection requires:
The Ariba connection works with 1-to-1 trading relationships, unlike the open Peppol network:
The PSB automatically converts between all common e-invoice formats. If you send an invoice in NLCIUS format but the recipient expects XRechnung, the PSB transforms the document automatically. This works for all supported standards: BIS Billing, NLCIUS, PINT, XRechnung, Svefaktura, ebInterface, DICO, SETU and more.
Transformation is available from the 10K package onwards.
The PSB supports transformation in both directions between SI 2.0 and SALES005:
Important: SALES005 invoices may not be sent via Peppol. Sending SALES005 requires an email connection. Multi-channel delivery handles this: you send primarily via Peppol, with automatic fallback to email when needed.
When sending via email, SFTP or HTTPS endpoint, you can include a targetFormat. The PSB then transforms the invoice on-the-fly to the required format. A client who wants to convert a UBL invoice to SALES005 provides a targetDocumentTypeId on download or send -- the invoice is then automatically transformed.
Peppol does not support targetFormat (SALES005 is not allowed via Peppol). On all other channels -- email, SFTP, HTTPS -- targetFormat is available.
Multi-channel delivery is not included by default in the base service and must be purchased separately as a standalone service/configuration. Contact TechSupport for the options available to you.
A large company sends invoices to:
All invoices are sent through the same API (POST /api/v1/{partyId}/salesInvoice/send). The PSB handles the correct routing, format and channel for each invoice.
The PSB selects the channel based on a priority order. PartyId-level hooks take precedence over environment-level hooks, and specific topics take precedence over wildcards. By default, the PSB routes via Peppol. If the recipient is not on Peppol, the configured fallback kicks in (e.g. DICO, Coupa or email).
Yes, with the ?channel={hookId} query parameter on the send endpoints you can force a specific channel. This overrides the automatic channel selection. You can check in advance via queryRecipientParty which channel the PSB would select and decide from there whether to override.
Yes, multi-channel routing works for all document types the PSB supports, such as credit notes, orders and order responses. All documents are sent through the same API and the PSB handles the correct routing, format and channel per document.
Need help setting up multi-channel delivery? Contact TechSupport.
Open the API reference