Authentication
Type
APIKEY — API KEY
Location
query / param:
apikeyFallback 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
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
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: 200 — Invoice successfully created (draft).
JSON
{
"ok": true,
"invoice_guid": "inv-8c3b4a99-2025-10-17",
"status": "DRAFT"
}
Status: 400 — Invalid or missing fields.
Status: 401 — Invalid or expired API key.
Status: 500 — Internal 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
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
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: 200 — Invoice line successfully added.
JSON
{
"ok": true,
"line_guid": "line-2b4fa3c1-2025-10-17"
}
Status: 400 — Invalid parameters (missing invoice_guid or invalid numeric fields).
Status: 401 — Invalid or expired API key.
Status: 500 — Internal 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
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
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: 200 — PDF 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: 400 — Invalid parameters or missing content (no Base64, file, or URL).
Status: 401 — Invalid or expired API key.
Status: 404 — Invoice not found.
Status: 500 — Internal 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
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
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: 200 — XML 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: 400 — Missing invoice_guid or invoice lines.
Status: 401 — Invalid or expired API key.
Status: 404 — Invoice not found.
Status: 500 — Internal XML generation or write error.
Webhooks
No webhooks documented.
SDKs
No SDKs listed.
Error catalog
No errors defined.
Changelog
No releases yet.