API reference.
One stateless endpoint for every e-invoice a business receives. Send the file as multipart field file or as the raw body; get canonical EN 16931 JSON, a validation report with fix hints, a PDF, CSV or DATEV back. Nothing is stored.
Auth
Authorization: Bearer <key> or X-Api-Key. No key = demo, 20 invoices per IP per day. One invoice = one credit whatever outputs you ask for (a FatturaPA lot with several invoices costs one per invoice); remaining credits come back in X-Credits-Remaining.
Try it here
Every POST below has Try it out: pick a file, press Execute, read the JSON. The same quota as the product-page demo applies.
Errors
Always JSON: {"ok": false, "error": {"code", "message", "hint"}}. 422 = not a supported e-invoice, 402 = credits exhausted, 429 = demo limit, 413 = over 25 MB. A bare 403 «error code: 1010» comes from Cloudflare, not from us: send a real User-Agent (the default Python-urllib one is rejected).
Agents
MCP server at /mcp (streamable HTTP) with the same tools: read_invoice, validate_invoice, invoice_to_html, invoice_to_csv, invoice_to_datev.