Factur-X API¶
Find invoice errors, understand the fix, and validate the corrected file.
Check your own invoice free, no account Try a sample without signup
Validation is free without a key. To generate, embed or extract, get 10 operations for 14 days with a verified Orvel account. No card or automatic renewal.
An invoice is emitted only when the parties are receivable. EU Verify decides; this API refuses the file when a seller or buyer is not_ready, and returns a dated evidence pack with the document. Generate, embed, validate and read stay the same engine, over REST or MCP. This is not a Plateforme Agréée and not a Peppol access point: you hand the file to your PA.
party_check defaults to on for the extended-ctc-fr profile. A register outage does not block the file; the response carries X-Facturx-Party-Check: upstream_unavailable. Field list, evidence pack, and the party_not_ready error: Invoice-ready parties.
-
Generate
Invoice JSON in, compliant Factur-X PDF/A-3 (with embedded CII XML), CII XML or UBL 2.1 XML out. Totals and VAT breakdown are computed for you.
-
Validate
Any Factur-X PDF, CII or UBL file checked against the XSD and the EN 16931 schematron, plus the French
fr-ctcrules (BR-FR-*). Findings come back with rule ids, locations, and ajson_pointerinto the invoice JSON when one can be named, so an agent can patch and retry. -
Embed
Keep your own PDF design: attach a Factur-X XML (or let us generate it from JSON) and get a PDF/A-3 Factur-X invoice.
-
Extract
Read inbound e-invoices: embedded XML plus parties, totals, VAT breakdown and lines as JSON.
One call¶
First save the invoice JSON from the quickstart as invoice.json, then set FACTURX_API_KEY. This command uses Bash.
curl --fail --silent --show-error --max-time 60 -X POST https://facturx.orvel.dev/v1/invoices/generate \
-H "Authorization: Bearer $FACTURX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"invoice": '"$(cat invoice.json)"', "options": {"profile": "en16931", "output": "facturx-pdf"}}' -o invoice-facturx.pdf
Try fixed samples without signup: MCP demo and client setup. Processing your own documents requires a key. See Pricing.
Why this API¶
- Standards, not opinions. Output passes the official EN 16931 schematron and the French CTC (
fr-ctc) rule set published for the reform. Every response tells you exactly which rules ran. Don't take our word for it: the Conformity page publishes live-API samples checked by an independent validator, with the raw reports. - Transparent availability. Checks run every 5 minutes from outside our hosting provider; see the public status page.
- Stateless. Documents are processed in memory and never stored.
- Same engine for humans and agents. The REST endpoints and the MCP tools share one implementation, so what an agent produces in Claude or Cursor is what your ERP gets.
- Profiles: generates BASIC WL, EN 16931, EXTENDED and EXTENDED-CTC-FR (the French extended profile); validates and reads every Factur-X profile including MINIMUM and BASIC, plus UBL 2.1.
Where to next¶
- Quickstart: first invoice in five minutes.
- REST API: endpoints, headers, errors. Interactive OpenAPI at
/api. - MCP server: connect Claude Desktop, Cursor, VS Code or any MCP client.
- Invoice fields: the JSON you send, mapped to EN 16931 business terms.
- French reform FAQ: dates, obligations, formats, SIREN rules.
- Conformity: independent validation reports of what the API produces, and how to reproduce them.
A product of Orvel.