API: read an electronic invoice from your own code

The same engine as the reader page, reachable over REST. You send a Factur-X, ZUGFeRD, UBL or CII file; you get back its structured data and the list of EN 16931 anomalies, as JSON.

What it is for

If invoices reach you as a continuous flow (a dedicated mailbox, a supplier drop point, an ERP), the problem is not reading one file. It is wiring the reading into something you already run:

Endpoints

MethodPathRole
POST/v1/invoices/parse Analyses one invoice: extracted data plus anomalies
POST/v1/invoices/parse-batch Analyses a batch of invoices in a single request
POST/v1/invoices/export.csv Returns a CSV ready for Excel (?lang=en for commas and ISO dates, default is the French layout)
GET/v1/usage Consumption and limits for your key
GET/v1/health Service availability

The interactive documentation, with the full response schema, lives at /docs: you can try every call directly from there.

Authentication

Every request carries your key, in either of two headers:

X-API-Key: your_key
Authorization: Bearer your_key

A request without a valid key gets 401. Errors come back as JSON, with a stable code your program can branch on rather than a message it would have to interpret.

Example

curl -X POST https://facturolia.fr/v1/invoices/parse \
     -H "X-API-Key: your_key" \
     -F "file=@invoice.pdf"

The response carries the detected format and profile, the parties, the dates, the totals, the IBAN when one is present, and the list of anomalies with the matching calculation. API labels are in English by default; add ?lang=fr if you want the messages in French.

Usage limits

TierPer minutePer day
Discovery10100
Starter605,000
Growth30050,000

Going over returns 429 with a Retry-After header. Each file is capped at 10 MB, and a batch at 200 files.

AI assistants: MCP server

An MCP server lets an assistant (Claude and other compatible clients) read and check an invoice directly: you point at a file, it answers with the contents in plain view and the EN 16931 check.

Nothing to install: Python 3.10+ is enough. Download facturolia_mcp.py (documentation) and declare it in your client:

{
  "mcpServers": {
    "facturolia": {
      "command": "python",
      "args": ["/path/to/facturolia_mcp.py"],
      "env": { "FACTUROLIA_API_KEY": "your-key" }
    }
  }
}

Two tools are exposed: read_invoice (full contents) and check_invoice (the compliance verdict alone). Answers come back in English by default; add "FACTUROLIA_LANG": "fr" to the env field for French. The file is sent to the API to be analysed: processed in memory, nothing retained, but it is not local processing. Worth checking if your internal policy forbids that.

Privacy

Files sent to the API are processed in memory and then discarded. No invoice is stored, and their contents never appear in the technical logs. The servers are located in the European Union. Read the privacy policy (in French).

Getting a key: the API is in early access. The Discovery tier is free, and the paid tiers are set out on the pricing page. Access is granted on request; there is no automatic sign-up. Write to info@facturolia.fr describing your use case and the volume you expect.

Request an API key →    Open the interactive documentation
What this API does not do. It reads and checks invoices. It does not issue them, does not transmit them, and is not a compliance solution: in France, delivery goes through an accredited platform (Plateforme Agréée, explained in French).