Configuring multi-channel delivery

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.

How does multi-channel work?

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:

ChannelConfigurationUsagePeppolDefault, always activePrimary route for all Peppol participantsDICOHook with DICO topicConstruction sector invoices via the DICO chain standardOther networksHook with network-specific configurationDelivery to procurement networks such as Coupa and SAP Ariba (see configuration below)Email fallbackHook with email topicRecipients not reachable via any networkSFTPHook with SFTP configurationOn-premise systems with file transferHTTPSHook with HTTPS configurationEnterprise systems with direct API receptionCollabrrHook with Collabrr configurationDocuments to/from the Collabrr platform; can include a send instruction in the same call (e.g. "send via Peppol"). Uses Collabrr ID (-0003:XC...) as identifier
Automatic channel selection

The PSB selects the channel based on a priority order:

  1. PartyId-level hooks take precedence over environment-level hooks; if you have configured a channel for a specific recipient, that channel is always used
  2. Specific topics take precedence over wildcards; a hook for InvoiceSent takes priority over a wildcard hook
  3. When priorities are equal: hook-id as tiebreaker

Before sending an invoice, you can use queryRecipientParty to check which channel the PSB will use:

GET /api/v1/queryRecipientParty?identifier={schemeID}:{id}

The response shows the selected channel and the available alternatives.

Forcing a channel

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.

Peppol with email fallback as a separate channel

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.

Setting up Coupa and Ariba
Coupa

eConnect automatically transforms UBL invoices into the cXML format that Coupa expects. The connection requires:

  1. Your client creates accounts on the Coupa CSP test and live environments
  2. The receiving party creates a Shared Secret
  3. TechSupport configures the connection in the PSB
Ariba (SAP Business Network)

The Ariba connection works with 1-to-1 trading relationships, unlike the open Peppol network:

  1. The supplier shares their AN-ID with the buyer
  2. SAP may require a paid subscription at higher volumes
  3. The test environment uses an AN-ID with suffix "-T"
XML transformation

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.

Practical scenario

A large company sends invoices to:

  • Dutch clients → Peppol (automatic)
  • Construction sector companies → DICO (specific hook per partyId)
  • A multinational on another procurement network → specific hook
  • Small suppliers without a network → email fallback
  • Collabrr platform users → Collabrr (automatic via Collabrr ID)

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.

Frequently asked questions
How does the PSB determine which channel to use for an 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).

Can I override the automatically selected channel?

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.

Does multi-channel support document types other than invoices?

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