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.

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.


Need help setting up multi-channel delivery? Contact TechSupport.

Open the API reference