Peppol API for sending UBL invoices
Send e-invoices from your ERP, web shop or own billing software through one endpoint. Get a status straight away and track delivery with webhooks.
We enable the Peppol API per company. Create an account first, then contact us. Contact us to activate the API
How the Peppol API works
One endpoint for sending
Send one base64-encoded UBL XML invoice per request to POST /v1/peppol/invoice.
An immediate status
The response contains a submissionId and the status sending or failed, with an error message if something goes wrong.
Delivery updates via webhooks
When the status changes, for example to delivered or failed, your webhook URL receives a callback.
When should you use the Peppol API?
- You invoice from your own ERP, web shop or platform and want every invoice sent via Peppol automatically.
- You invoice Belgian businesses. Since January 1, 2026, VAT-registered businesses in Belgium must exchange structured e-invoices, and they can be reached by default on scheme 0208 with their enterprise number. Belgian FPS Finance: structured e-invoices between companies
- You prefer to pay per invoice sent, with no monthly fee.
No integration needed?
Do you create your invoices in Factuur Simpel itself? Then you don't need the API: Peppol is included in Complete, with no per-invoice fees.
Create and send Peppol invoices from Factuur Simpel
Does your system already produce UBL files that you would rather upload than integrate?
OpenAPI docs and code samples
Start in Swagger UI or import the OpenAPI JSON into your own tooling.
API references
Swagger UI
Explore request and response schemas and test from your browser.
https://api.budgetinvoice.com/docs/peppolOpenAPI JSON
Import the schema into Postman, Insomnia or your code generator.
https://api.budgetinvoice.com/docs/peppol/openapi.jsonSubmission endpoint
Authenticated endpoint for one UBL invoice per request.
POST https://api.budgetinvoice.com/v1/peppol/invoicecurl --request POST \
--url 'https://api.budgetinvoice.com/v1/peppol/invoice' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"xml": "BASE64_ENCODED_UBL_XML",
"targetNetwork": "auto"
}'Put your API key in the Authorization header. You create API keys under Settings > API keys.
Delivery status via webhooks
After an accepted submission, your webhook receives the status changes sending, delivered and failed.
- Set a production and a test webhook URL. Live API keys use the production URL, test keys the test URL.
- Each callback contains submissionId, filename, targetNetwork, recipient, status and updatedAt.
- One callback is sent per status change. Failed callbacks appear in the webhook history, where you can resend them.
- Use submissionId as a unique key so a resent callback is not processed twice.
Secure your endpoint
Callbacks carry no signature header. Use an HTTPS endpoint and check each submissionId against your own submissions.
Example callback
JSON{
"submissionId": "bd9f47f3-7bc4-4760-a1dc-8c33df6496f3",
"filename": "invoice-2026-0001.xml",
"status": "delivered",
"targetNetwork": "peppol",
"recipient": {
"scheme": "iso6523-actorid-upis",
"id": "0208:0123456789"
},
"updatedAt": "2026-02-28T09:42:11.202Z"
}Price per invoice sent
No monthly fee and no separate API surcharge. You pay for each invoice you send through the API.
Tiers per calendar month
- 0 - 3,000 invoices
- €0.35
- 3,001 - 10,000 invoices
- €0.25
- 10,001 - 50,000 invoices
- €0.18
- 50,001 - 250,000 invoices
- €0.15
- More than 250,000 invoices
- €0.12
Price per invoice, excl. VAT
Each tier has its own price. If you send 5,000 invoices in a month, you pay 3,000 × €0.35 + 2,000 × €0.25 = €1,550.00 excl. VAT.
- No minimum volume
- No monthly fee
- Peppol registration included
- Receiving and forwarding invoices included
- Same price as bulk sending
How to go live
- Create a free account and turn on Peppol in your settings.
- Contact us. We activate the Peppol API and per-invoice pricing for your company.
- Create an API key under Settings > API keys and set your webhook URLs.
Frequently asked questions
How do I authenticate with the Peppol API?
Send your API key as a Bearer token in the Authorization header. Requests without a valid key return an authorization error.
What format does the endpoint accept?
One base64-encoded UBL XML document per request. This endpoint does not accept ZIP files; use bulk sending for those.
When do I receive webhook callbacks?
Whenever the status of a submission changes. The statuses are sending, delivered and failed. One callback is sent per status change.
Can I choose the target network?
Yes. Pass targetNetwork with auto, peppol or ksef. If you leave it out, auto is used.
How do I activate the Peppol API?
Create an account and contact us. We enable the API and per-invoice pricing for your company. Then create an API key under Settings > API keys and set your webhook URLs.
How much does the Peppol API cost?
You pay per invoice sent, from €0.35 down to €0.12 excl. VAT. The price per invoice drops per tier as you send more invoices in a calendar month. There is no monthly fee and no minimum volume.
Start your Peppol integration
Read the OpenAPI spec, test with the code samples and contact us to activate the API for your company.