Skip to content

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-ctc rules (BR-FR-*). Findings come back with rule ids, locations, and a json_pointer into 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.