Peppol Gateway
Send e-invoices directly via the Peppol network to authorities and businesses across Europe. Including delivery confirmation and status tracking.
What is Peppol?
Peppol (Pan-European Public Procurement OnLine) is a pan-European network for the secure exchange of e-invoices and other business documents.
Peppol dispatch over AS4 is planned for 2027. Until then the API delivers the finished Peppol BIS 3.0 document; certificates, SMP lookup and AS4 transport stay with your access point.
Send Invoice
1curl -X POST https://service.invoice-api.xhub.io/api/v1/peppol/send \2 -H "Authorization: Bearer sk_live_abc123..." \3 -H "Content-Type: application/json" \4 -d '{5 "receiverPeppolId": "9930:DE987654321",6 "documentType": "invoice",7 "document": "PD94bWwgdmVyc2lvbj0iMS4wIj8+PEludm9pY2U+Li4u",8 "invoiceNumber": "RE-2026-0042",9 "issueDate": "2026-03-01",10 "verifyReceiver": true11 }'Check first: is the receiver reachable?
1curl https://service.invoice-api.xhub.io/api/v1/peppol/receivers/9930:DE987654321 \2 -H "Authorization: Bearer sk_live_abc123..."3 4# {5# "reachable": true,6# "participant": {7# "peppolId": {8# "scheme": "9930",9# "identifier": "DE987654321",10# "formatted": "9930:DE987654321"11# },12# "name": "Behörde XY",13# "country": "DE",14# "documentTypes": ["urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0"],15# "accessPoint": "storecove"16# }17# }Response
1{2 "success": true,3 "transmission": {4 "id": "d29c1f5e-8c2a-4c1e-9f0b-3f1a2b4c5d6e",5 "organizationId": "org_7Hq2",6 "invoiceId": null,7 "direction": "outbound",8 "providerName": "storecove",9 "messageId": "0f7b1c94-5a1e-4a0b-9d3c-2e6f8a9b0c1d",10 "senderPeppolId": "9930:DE123456789",11 "receiverPeppolId": "9930:DE987654321",12 "documentType": "invoice",13 "status": "sent",14 "errorCode": null,15 "errorMessage": null,16 "contentHash": "9f2c1b7d4e8a03f5c6b9d0e1a2f3c4b5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1",17 "createdAt": "2026-03-01T10:30:00.000Z",18 "updatedAt": "2026-03-01T10:30:00.000Z",19 "statusAt": "2026-03-01T10:30:00.000Z"20 }21}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
receiverPeppolId | string | Peppol address of the receiver, pattern `^\d{4}:.+$` (example `9930:DE987654321`). | |
document | string | Base64-encoded UBL XML (Peppol BIS Billing 3.0) — e.g. the `data` value from a `/generate` call. | |
documentType | "invoice" | "credit-note" | - | Document type of the UBL payload. Default: `invoice`. |
environment | "sandbox" | "production" | - | Which Peppol settings (provider configuration and provider key) to use. Default: `production`. |
invoiceNumber | string | - | Invoice number for the transmissions log — not sent over the network. |
issueDate | string | - | Issue date (ISO 8601) for the transmissions log — not sent over the network. |
verifyReceiver | boolean | - | Run an SMP discovery check first and refuse with `RECEIVER_NOT_REACHABLE` (HTTP 422) when the receiver cannot accept the document type. |
Peppol Participant IDs
Peppol IDs consist of a schema prefix and an identifier. Commonly used schemas:
| Schema | Name | Example | Country |
|---|---|---|---|
0204 | DE: Leitweg-ID | 0204:04011000-12345-34 | DE |
9930 | DE: USt-IdNr. | 9930:DE123456789 | DE |
0088 | GLN (GS1) | 0088:5790000123456 | INT |
0060 | DUNS | 0060:123456789 | INT |
0184 | DK: CVR | 0184:12345678 | DK |
0190 | NL: OIN | 0190:12345678901234567890 | NL |
0106 | NL: KvK | 0106:12345678 | NL |
0009 | FR: SIRET | 0009:12345678901234 | FR |
0007 | SE: Organisationsnummer | 0007:1234567890 | SE |
0192 | NO: Organisasjonsnummer | 0192:123456789 | NO |
0208 | BE: Ondernemingsnummer | 0208:1234567890 | BE |
9914 | AT: UID | 9914:ATU12345678 | AT |
9920 | ES: NIF | 9920:ESA12345674 | ES |
Check Delivery Status
GET /api/v1/peppol/transmissions
1{2 "transmissions": [3 {4 "id": "d29c1f5e-8c2a-4c1e-9f0b-3f1a2b4c5d6e",5 "direction": "outbound",6 "providerName": "storecove",7 "messageId": "0f7b1c94-5a1e-4a0b-9d3c-2e6f8a9b0c1d",8 "senderPeppolId": "9930:DE123456789",9 "receiverPeppolId": "9930:DE987654321",10 "documentType": "invoice",11 "status": "delivered",12 "errorCode": null,13 "errorMessage": null,14 "createdAt": "2026-03-01T10:30:00.000Z",15 "updatedAt": "2026-03-01T10:30:12.000Z",16 "statusAt": "2026-03-01T10:30:12.000Z"17 }18 ]19}Ask the access point for the delivery status of a single transmission: POST /api/v1/peppol/transmissions/{messageId}/refresh
1curl -X POST https://service.invoice-api.xhub.io/api/v1/peppol/transmissions/0f7b1c94-5a1e-4a0b-9d3c-2e6f8a9b0c1d/refresh \2 -H "Authorization: Bearer sk_live_abc123..." \3 -H "Content-Type: application/json" \4 -d '{ "environment": "production" }'Status Values
pendingE-invoice waiting for transmissionsentHanded over to Peppol networkdeliveredDelivery confirmation (MDN) receivedfailedTransmission failedrejectedAccess point rejected the documentPeppol Webhooks
Receive automatic notifications about delivery status:
peppol.sentInvoice handed over to Peppol network
peppol.deliveredDelivery confirmation (MDN) received
peppol.failedTransmission failed
Webhook configuration: Webhooks Documentation
Your existing access point
Until our gateway ships (planned 2027), the API produces Peppol BIS 3.0 compliant documents that you send through your existing access point. The format is a public standard — it is not tied to us.
Premium and Enterprise plan
The Peppol Gateway is not available yet — planned for 2027. On release it becomes part of the Premium plan; it is not included in the Free and Starter plans.