E-Invoicing API: How to Integrate Peppol Into Your Software
If you build software that handles invoices, you need to support Peppol e-invoicing. The Belgian mandate requires it since January 2026, and the rest of the EU is following with ViDA by 2030. The good news: integrating Peppol does not require reading a 400-page XML specification. With the right API, you can send your first e-invoice in under an hour.

E-invoicing in two API calls
Send JSON, we handle UBL conversion, validation, and Peppol delivery. Full REST API with webhooks, SDKs for 5 languages, and a sandbox to test with.
View API documentationIn this article
1. Why integrate e-invoicing via API?
Many businesses use the e-invoice.be dashboard to send and receive invoices manually. That works fine for low volumes. But if your software generates invoices (ERP, billing system, SaaS platform, marketplace), you want to automate this completely.
Zero manual work
Your system creates the invoice and sends it via Peppol automatically. No human intervention needed.
Always compliant
The API handles UBL conversion and Peppol BIS 3.0 validation. You send JSON, we ensure compliance.
Scale without limits
Send 10 or 10,000 invoices per month. The API scales with your volume. Volume discounts apply.
2. How Peppol works under the hood
Before integrating, it helps to understand the basics. Peppol is a network of Access Points that exchange structured documents. It works similar to email: you send through your Access Point, and it gets delivered to the recipient's Access Point.
You send invoice data via API
POST your invoice as JSON to the e-invoice.be API. Include seller/buyer details, line items, VAT, and payment terms.
We convert to UBL and validate
Your JSON is converted to a Peppol BIS Billing 3.0 compliant UBL document. We validate it against all required business rules. If anything is wrong, you get a clear error message.
We look up the recipient
Using the recipient's Peppol Participant Identifier, we find their Access Point in the Peppol network.
The invoice is delivered
We send the UBL document to the recipient's Access Point via the AS4 protocol. They receive a fully compliant e-invoice. You get a delivery confirmation via webhook.
The key point: you never need to touch UBL XML, worry about AS4 protocols, or manage SMP lookups. The API abstracts all of that away. You work with JSON.
3. What you need to get started
An e-invoice.be account
Register for free. You get API keys and access to the sandbox immediately after signing up.
Your API key
Available in your dashboard under Settings. Use the sandbox key for testing and the production key for live invoices.
A registered Peppol ID
Your company needs to be registered on the Peppol network before you can send or receive e-invoices. This is part of the signup process.
4. Sending an e-invoice via API
Sending an e-invoice takes two API calls. First, create the document. Then, send it.
Step 1: Create the invoice
POST https://api.e-invoice.be/api/documents/
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"document_type": "INVOICE",
"invoice_id": "INV-2026-001",
"invoice_date": "2026-02-17",
"due_date": "2026-03-17",
"vendor_name": "Your Company BV",
"vendor_tax_id": "BE0123456789",
"vendor_address": "Kerkstraat 1, 1000 Brussels, BE",
"customer_name": "Client NV",
"customer_tax_id": "BE0987654321",
"customer_peppol_id": "0208:0987654321",
"currency": "EUR",
"items": [
{
"description": "Consulting services",
"quantity": 10,
"unit_price": 150.00,
"tax_rate": 21.00
}
]
}Step 2: Send via Peppol
POST https://api.e-invoice.be/api/documents/{id}/send
Authorization: Bearer YOUR_API_KEY
// Response: the full document with updated state
{
"id": "doc-abc123",
"state": "SENT",
"document_type": "INVOICE",
"invoice_id": "INV-2026-001",
"invoice_date": "2026-02-17",
"vendor_name": "Your Company BV",
"customer_name": "Client NV",
"items": [...],
"created_at": "2026-02-17T10:30:00Z"
}That is it. The API converts your JSON to a valid UBL document, validates it, looks up the recipient on the Peppol network, and delivers it. The response returns the full document with the state updated to SENT.
5. Receiving e-invoices via webhooks
When someone sends your company an e-invoice via Peppol, you want your system to know about it immediately. This is where webhooks come in.
Configure a webhook URL in your dashboard. Every time an e-invoice arrives, we POST the invoice data to your endpoint as JSON. Your system can then process it automatically: import into your ERP, trigger an approval workflow, or update your accounting records.
// Incoming webhook payload (event: DOCUMENT_RECEIVED)
{
"id": "doc-xyz789",
"state": "RECEIVED",
"document_type": "INVOICE",
"invoice_id": "SUPP-2026-042",
"invoice_date": "2026-02-15",
"due_date": "2026-03-15",
"vendor_name": "Supplier BV",
"vendor_tax_id": "BE0111222333",
"customer_name": "Your Company NV",
"customer_tax_id": "BE0123456789",
"subtotal": 1500.00,
"total_tax": 315.00,
"invoice_total": 1815.00,
"items": [...]
}No polling needed. No manual downloads. Invoices flow from your suppliers into your system in real time. For a deeper look at automating your incoming invoice flow, see our guide on vendor invoice management.
6. Available SDKs
We provide official SDKs for five languages. Each SDK wraps the REST API with type-safe methods, automatic retries, and built-in error handling.
| Language | Install command | Highlights |
|---|---|---|
| Python | pip install e-invoice-api | Async/await, type hints |
| TypeScript | npm install e-invoice-api | Full type safety, Promise-based |
| Java | be.einvoice:einvoice-api:1.0.0 | Builder pattern, thread-safe |
| PHP | composer require e-invoice/e-invoice-api | PHP 8+, PSR-4 |
| Ruby | gem install e-invoice-api | Ruby 3.0+, ActiveRecord-style |
All SDKs include auto-retry with exponential backoff, auto-pagination, and rich error types. For detailed examples in each language, visit the SDK documentation pages.
7. Common integration use cases
ERP integration
Connect your ERP (SAP, Odoo, Exact, Microsoft Dynamics) to Peppol. Outgoing invoices are sent automatically. Incoming invoices are imported directly. No manual export/import steps.
SaaS billing
If your SaaS platform serves Belgian customers, you need to send compliant e-invoices. Add a few API calls to your billing flow and every invoice goes through Peppol automatically.
Marketplace platforms
Marketplaces that facilitate B2B transactions can use the API to generate and send e-invoices on behalf of sellers. Each seller gets their own Peppol registration, invoices go out automatically.
Accounting software
Accounting software providers can embed Peppol connectivity for their users. Our API handles the Access Point infrastructure so you do not have to become a certified Access Point yourself.
8. Frequently asked questions
Do I need to understand UBL/XML to use the API?
No. You send and receive JSON. The API handles UBL conversion, validation, and all Peppol-specific protocols. You never need to read or write XML.
Is there a sandbox for testing?
Yes. You get a sandbox environment immediately after registration. It connects to a test Peppol network so you can send and receive test invoices without affecting production.
What does it cost?
Pay per invoice, no subscription. Pro plan starts at €0.25 per invoice, Enterprise at €0.18 per invoice with volume discounts. No setup fee. Receiving e-invoices is always free. See the full pricing details.
Can I also send PDFs through the API?
Yes. You can upload a PDF invoice and we extract the data and convert it to a valid UBL e-invoice. This is useful when migrating from a PDF-based workflow. Read more about PDF to Peppol conversion.
What uptime and performance can I expect?
The API runs on European data centers with a 99.9% uptime SLA. Response times are under 200ms. We handle all Peppol network reliability concerns (retries, failover, message queuing) so you do not have to.
Can I verify if a recipient is on Peppol before sending?
Yes. The API includes a Peppol lookup endpoint. Pass a VAT or enterprise number and check if they are registered on the network. You can also use our free Peppol Radar tool for manual lookups.
Start integrating today
Get your API key and send your first test invoice in the sandbox. Full REST API, SDKs for 5 languages, and webhooks for real-time incoming invoices.