Python SDK for the eleata Peppol API. Validate EU invoices (Peppol BIS 3, XRechnung, Factur-X, UBL) in 5 lines.
pip install eleata-peppolimport os
from eleata_peppol import Client
client = Client(api_key=os.environ["ELEATA_KEY"])
with open("invoice.xml", "rb") as f:
result = client.validate(
format="peppol-bis-3",
xml=f.read(),
)
if not result.valid:
raise ValueError(f"Invalid: {result.errors}")
print(f"✓ Valid in {result.duration_ms}ms — {result.report_url}")from eleata_peppol import AsyncClient
async with AsyncClient(api_key=os.environ["ELEATA_KEY"]) as client:
result = await client.validate(format="xrechnung-2.x", xml=xml_bytes)- Timeout: 15 seconds
- Retries: 3 with exponential backoff
- Max payload: 5 MB (client-side reject)
- Base URL:
https://api.eleata.io
job = client.validate_batch(
format="peppol-bis-3",
files=[(invoice.id, invoice.xml) for invoice in invoices],
webhook_url="https://yourapp.com/webhooks/eleata",
)
print(f"Job started: {job.job_id}")Full type annotations. Works with mypy --strict and Pyright.
MIT