Peppox API — API Documentation

Authentication

Type
APIKEY — API KEY
Location
query / param: apikey
Fallback via query/body param "apikey"
GET /sendsms/?apikey=YOUR_API_KEY

Invoice Management

/invoice/add • Methods: POST

Add a sales invoice header

Creates a new invoice header in DRAFT status. The endpoint records all supplier and customer information, issue dates, payment terms, and delivery details. Supplier data are automatically loaded from your API key registration (customer_api).
POST /invoice/add • Rate: 60 req/min Auth required

Parameters

NameInTypeRequiredDefaultDescription
apikey string Yes Your Peppox API key (from your registered supplier account).
network string No Optional network identifier (Peppol by default).
inv_id string No Optional internal invoice number.
issue_date string Yes Invoice issue date (YYYY-MM-DD).
due_date string No Invoice due date (YYYY-MM-DD).
invoice_type_code string No 380 Peppol invoice type code (e.g. 380 = Invoice, 381 = CreditNote).
currency string No EUR ISO currency code.
accounting_cost string No Internal accounting code reference.
buyer_reference string No Buyer reference / PO number.
payment.means_code string No 1 Means of payment (Peppol code list).
payment.payment_id string No Payment identifier / reference.
payment.iban string No Payee IBAN.
payment.account_name string No Payee account holder name.
payment.bic string No Payee BIC/SWIFT code.
payment.terms_note string No Payment terms note.
delivery.date string No Delivery date.
delivery.location_scheme string No 0088 Delivery location scheme identifier.
delivery.location_id string No Delivery location ID.
delivery.street string No Delivery address street.
delivery.city string No Delivery address city.
delivery.postal string No Delivery address postal code.
delivery.country string No Delivery address country code.
delivery.party_name string No Delivery party name.
customer.endpoint_scheme string No 0208 Customer Peppol scheme ID.
customer.endpoint_id string No Customer Peppol Participant ID.
customer.name string No Customer name.
customer.street string No Customer street.
customer.city string No Customer city.
customer.postal string No Customer postal code.
customer.country string No Customer country code.
customer.vat_id string No Customer VAT number.
customer.company_id_scheme string No 0208 Customer company ID scheme.
customer.company_id string No Customer company ID (national number).
customer.phone string No Customer contact phone.
customer.email string No Customer contact email.

Request examples

CURL
PYTHON
curl -X POST "https://api.peppox.com/invoice/add/" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d "{ "issue_date": "2025-10-17", "due_date": "2025-11-17", "customer": { "endpoint_id": "9915:BE0123456789", "name": "ACME SPRL", "country": "BE" }, "payment": { "iban": "BE12345678901234", "bic": "GEBABEBB", "account_name": "Peppox Supplier" } }"

Responses

Status: 200Invoice successfully created (draft).
JSON
{ "ok": true, "invoice_guid": "inv-8c3b4a99-2025-10-17", "status": "DRAFT" }
Status: 400Invalid or missing fields.
Status: 401Invalid or expired API key.
Status: 500Internal server or database error.
/invoice_line/add • Methods: POST

Add an invoice line to an existing invoice

Adds a new line to an existing invoice (identified by invoice_guid). Supports unit, quantity, price, VAT category, and product identification codes.
POST /invoice_line/add • Rate: 60 req/min Auth required

Parameters

NameInTypeRequiredDefaultDescription
apikey string Yes Your Peppox API key (required for authentication).
invoice_guid string Yes The unique invoice GUID returned from /invoice/add.
line_id string No Optional internal line identifier (defaults to generated GUID).
quantity number Yes Quantity of the item or service.
unit_code string No Unit code according to UNECE Rec 20 (e.g. H87 for “piece”).
price_amount number Yes Unit price (excluding tax).
item_description string No Description of the item or service.
item_name string No Item name or title.
seller_item_id string No Seller internal item ID or SKU.
std_item_id_scheme string No 0088 Standard scheme ID for item identification (e.g. GTIN).
std_item_id string No Standardized item ID (GTIN, EAN, etc.).
origin_country string No Country of origin (ISO 3166-1 alpha-2).
tax_category string No VAT category code (e.g. S, Z, AE).
tax_percent number No VAT rate percentage (e.g. 21.00).

Request examples

CURL
PYTHON
curl -X POST "https://api.peppox.com/invoice_line/add/" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d "{ "invoice_guid": "inv-8c3b4a99-2025-10-17", "quantity": 2, "unit_code": "H87", "price_amount": 49.99, "item_name": "Consulting service", "tax_percent": 21 }"

Responses

Status: 200Invoice line successfully added.
JSON
{ "ok": true, "line_guid": "line-2b4fa3c1-2025-10-17" }
Status: 400Invalid parameters (missing invoice_guid or invalid numeric fields).
Status: 401Invalid or expired API key.
Status: 500Internal database or server error.
/invoice_attach_pdf/add • Methods: POST

Attach a PDF to an existing invoice

Attaches a PDF document (via upload, Base64, or remote URL) to an existing invoice identified by invoice_guid. Only one attachment per invoice is stored; any previous file is replaced.
POST /invoice_attach_pdf/add • Rate: 30 req/min Auth required

Parameters

NameInTypeRequiredDefaultDescription
apikey string Yes Your Peppox API key (authentication).
invoice_guid string Yes The GUID of the invoice to attach the PDF to.
doc_id string No Optional document identifier (defaults to invoice ID or a generated UUID).
filename string No attachment.pdf Attachment file name (e.g. invoice.pdf).
mime string No application/pdf MIME type of the file.
content_base64 string No PDF content as Base64 string. Accepts data URI format.
file_url string No Remote HTTPS URL of a PDF to download and attach.
file file No File upload field (multipart/form-data).

Request examples

CURL
CURL
CURL
curl -X POST "https://api.peppox.com/invoice_attach_pdf/add/" \ -H "Authorization: Bearer YOUR_API_KEY" \ -F "invoice_guid=inv-8c3b4a99-2025-10-17" \ -F "file=@invoice.pdf"

Responses

Status: 200PDF successfully attached to the invoice.
JSON
{ "ok": true, "invoice_guid": "inv-8c3b4a99-2025-10-17", "doc_id": "DOC-1452", "filename": "invoice-2025-10.pdf", "mime": "application/pdf", "size_bytes": 184527 }
Status: 400Invalid parameters or missing content (no Base64, file, or URL).
Status: 401Invalid or expired API key.
Status: 404Invoice not found.
Status: 500Internal server or database error.

XML Generation

/xml/generate • Methods: POST

Generate a UBL XML file for an invoice

Combines invoice header, lines, and attached PDF (if any) into a Peppol-compliant UBL 3.0 XML document. Returns the local path to the generated file and updates the invoice status to XML_BUILT.
POST /xml/generate • Rate: 30 req/min Auth required

Parameters

NameInTypeRequiredDefaultDescription
apikey string Yes Your Peppox API key for authentication.
invoice_guid string Yes The unique identifier of the invoice to convert to XML.
guid string No Alternative key for invoice_guid.

Request examples

CURL
PYTHON
curl -X POST "https://api.peppox.com/xml/generate/" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d "{ "invoice_guid": "inv-8c3b4a99-2025-10-17" }"

Responses

Status: 200XML successfully generated and stored on server.
JSON
{ "ok": true, "status": "XML_BUILT", "xml_path": "/var/www/vhosts/peppox.com/httpdocs/invoices_xml/inv-8c3b4a99-2025-10-17.xml" }
Status: 400Missing invoice_guid or invoice lines.
Status: 401Invalid or expired API key.
Status: 404Invoice not found.
Status: 500Internal XML generation or write error.

Webhooks

No webhooks documented.

SDKs

No SDKs listed.

Error catalog

No errors defined.

Changelog

No releases yet.