Send a UBL Order via the PSB API: endpoint, profiles, idempotency and status tracking.
With the PSB API, you can send purchase orders to your suppliers via the Peppol network. The process works similarly to sending invoices: you send a UBL Order XML document to the API, and the PSB takes care of validation, routing and delivery.
POST /api/v1/{partyId}/purchaseOrder/send
The request contains the UBL Order XML document as the body with content-type application/xml. The {partyId} is the Peppol identifier of the sending organisation (the buyer).
The PSB supports two Peppol order profiles:
urn:fdc:peppol.eu:poacc:bis:order_only:3urn:fdc:peppol.eu:poacc:bis:advanced_ordering:3With Order Only, the buyer sends an order and the process is complete. With Advanced Ordering, the supplier can respond with an Order Response, and the buyer can modify or cancel the order later.
Tip: Use the Advanced Ordering profile if you want the supplier to confirm the order or if you want to be able to modify orders later.
OrderSent webhook with the delivery statusUse the X-EConnect-DocumentId header to prevent duplicate processing:
X-EConnect-DocumentId: 550e8400-e29b-41d4-a716-446655440000
If you send the same documentId again, the API returns 409 Conflict. Always use a UUID/GUID, never an order number.
When delivery fails, the PSB automatically applies retries:
OrderSentRetry event is published for each attemptOrderSentError eventqueryRecipientParty whether the supplier can receive ordersSet up webhooks for the following topics to track the order process:
OrderSentOrderSentRetryOrderSentErrorOrderResponseReceivedOrderChangeReceivedOrderCancellationReceivedA successful upload returns 200 OK with the document ID in the PSB. Use this ID to track the order via the API or via webhooks.
Order Only (urn:fdc:peppol.eu:poacc:bis:order_only:3) is a one-way order without any further message flow. Advanced Ordering (urn:fdc:peppol.eu:poacc:bis:advanced_ordering:3) is required when the supplier needs to respond with an Order Response or when you want to modify or cancel orders later. Choose Advanced if you need that full process.
Include the X-EConnect-DocumentId header with a unique UUID or GUID. If you reuse the same documentId, the API responds with 409 Conflict. Do not use an order number as an idempotency key, as it is not intended for this mechanism.
For 5xx errors on the receiving end, the PSB automatically retries delivery (up to 8 attempts over approximately 35 hours). You will see OrderSentRetry for each attempt and OrderSentError on permanent failure. On success, you receive OrderSent.
View the full API specification at psb.econnect.eu for all parameters and example payloads.
Try it in the API