Skip to main content

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.

Authentication

Send the API key of your company as a bearer token in the Authorization header:
Three lookup endpoints accept requests without an API key. See Authentication.

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.
Guides: Validation during development, Look up Peppol participants.

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
See also the reseller programme.

Request and response format

Request format

Requests with a body use JSON, with the header Content-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.
The API rejects a document whose vendor is not a Peppol ID of your company (406). Before you run this example, replace the vendor fields with those of your own company.

Response format

A successful request returns JSON with a 2xx status code. This example shows the first fields of the response to a create request:
For all fields, see the Document schema.

Error responses

The API returns these error status codes: 400, 401, 403 (Admin API only), 404, 405, 406, 409, 415, 422, 429, 500. Most errors have this body:
For the body formats, the cause of each code and the retry rules, see Errors and troubleshooting.

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/ and POST /api/documents/ubl
  • POST /api/validate/json and POST /api/validate/ubl
When you exceed the limit, the API returns 429 Too Many Requests with a Retry-After header that contains a number of seconds. Do not write a fixed limit into your code. Read Retry-After and wait. See Rate limits.

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

The currency 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 format scheme: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 the openapi.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
SDKs and a command-line tool are available: see SDKs and peppol CLI. To connect an AI assistant to your company through MCP, see Model Context Protocol (MCP).

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