Overview
With the e-invoice.be API you create, send and receive Peppol invoices and credit notes. The API converts each document to UBL BIS Billing 3.0 and transmits it on the Peppol network. This page is an overview. The endpoint pages in this tab give the parameters and the schemas of each operation. For the changes to the API and to this documentation, see the Changelog.Base URL
There is one API host:Develop and test with a sandbox company. A sandbox company runs in test mode: the API sends each document as UBL XML to the contact email address of the company, and nothing goes to the Peppol network. The API host and the endpoints are the same as for a production company. See Test mode and sandbox companies.
company_email field of the company. GET /api/me/ returns it. If company_email is empty, the send call of a sandbox company returns 400 with the detail Tenant is in test mode but no company email is set. See Send errors.
Authentication
Send the API key of your company as a bearer token in theAuthorization header:
Endpoints
Documents
Schemas: Document schema, LineItem schema.
Guides: Create e-invoices, Create credit notes, Self-billing and debit notes, Advanced invoicing, Send UBL documents, Create documents from PDF, Document lifecycle and delivery tracking.
Attachments
Guide: Attachments and PDF.
Document lists
Guides: Receive documents for requests, responses, inbox filters and the pattern to prevent double processing. List, filter and manage documents for filters, sort options and drafts.
Mailbox
Guide: Send invoices by email (Mailbox).
Validation
Validation is not a separate mandatory call.
POST /api/documents/ rejects a payload that does not pass the same rules. Use POST /api/validate/json while you develop, because it returns all rule failures and the generated UBL.Lookup
Guide: Look up Peppol participants.
PDF conversion
Guide: Create documents from PDF.
Webhooks
Guide: Webhooks.
Account and usage
Guides: Authentication, Usage statistics and credits.
Admin API for resellers
Resellers that manage more than one customer company use a separate Admin API. It requires an organisation API key and is available to approved resellers only. The Admin API endpoints are not in the OpenAPI specification. In the Admin API, the name of a company is “tenant”. With the Admin API you can:- Create and manage the companies of your customers
- Create and rotate the API keys of these companies
- Register these companies on the Peppol network
Admin API
Manage the companies of your customers as a reseller
Request and response format
Request format
Requests with a body use JSON, with the headerContent-Type: application/json. The endpoints that accept files (POST /api/documents/ubl, POST /api/documents/pdf, POST /api/validate/ubl, POST /api/conversion/pdf) use multipart/form-data.
406). Before you run this example, replace the vendor fields with those of your own company.
Response format
A successful request returns JSON with a2xx status code. This example shows the first fields of the response to a create request:
Error responses
The API returns these error status codes:400, 401, 403 (Admin API only), 404, 405, 406, 409, 415, 422, 429, 500.
406means that the document does not obey a business rule, or that its Peppol sender (the vendor, or the customer for self-billing) is not a Peppol ID of your company.405means that the document is not in a state that permits a send.409means that the sender of a send call is not a Peppol ID of your company.422means that the request does not agree with the schema of the endpoint, or that the API cannot read an input file.
Pagination
The document list endpoints (/api/inbox/, /api/outbox/, /api/drafts/) use page (default 1) and page_size (default 20, maximum 100). The response contains items, total, page, page_size, pages and has_next_page.
For filters, sort options and a loop sample, see List, filter and manage documents.
The Admin API list endpoints (
/api/admin/tenants and its API-key routes) use skip and limit parameters. See the Admin API.Rate limiting
The API applies a rate limit for each API key to these endpoints:POST /api/documents/andPOST /api/documents/ublPOST /api/validate/jsonandPOST /api/validate/ubl
429 Too Many Requests with a Retry-After header. The value of Retry-After is a fixed number of seconds: the length of the rate-limit window. It is not the time until your counter resets. If the request after the wait also gets 429, wait longer before the next attempt.
Do not write a fixed limit into your code. A successful response of these endpoints contains these headers:
X-RateLimit-Limit: the number of requests in one window.X-RateLimit-Remaining: the number of requests that remain in the current window.X-RateLimit-Reset: the Unix time in seconds when the window ends.
Document states
You can send a document only when it is in the
DRAFT or FAILED state. For the transitions, the retry behaviour and the webhook events of each state, see Document lifecycle and delivery tracking.
To follow the state changes, use webhooks or the timeline. See Document lifecycle and delivery tracking for the state diagrams, the transitions and the timeline.
Supported currencies
Thecurrency field accepts these ISO 4217 codes:
EUR, USD, GBP, JPY, CHF, CAD, AUD, NZD, CNY, INR, SEK, NOK, DKK, SGD, HKD
The default is EUR.
Peppol participant IDs
A Peppol ID has the formatscheme:identifier. For example, a Belgian company uses the scheme 0208 with its enterprise number: 0208:1018265814.
For the list of schemes and for the lookup of a participant, see Look up Peppol participants.
OpenAPI specification
The reference is generated from theopenapi.json file in the docs repository, which a CI check compares with the live spec at https://api.e-invoice.be/api/openapi.json.
You can use the live specification to:
- Generate a client library in your programming language
- Import the API into a test tool (for example Postman or Insomnia)
- Validate request and response structures
Support
Support
Send an email to the support team
GitHub
See the open-source projects
Next Steps
Quickstart
Send a first invoice with a sandbox company
Authentication
Get and use an API key
Create e-invoices
Create and send an e-invoice
Validation during development
Validate invoices while you develop