Automation MCP Server Features Blog Pricing Contact

Convert E-Invoice XML to JSON

Upload a UBL, CII, Factur-X or ZUGFeRD invoice and receive a structured EN 16931 JSON object, parsed deterministically from the XML, no sign-up required.

Drop your e-invoice here

or browse files to upload

Accepted formats: XML (UBL / CII) or hybrid PDF · Max 20 MB

How E-Invoice to JSON Conversion Works

Upload XML or Hybrid PDF

Drop a UBL or CII XML file, or a Factur-X / ZUGFeRD PDF. The syntax is detected automatically, and for PDFs the embedded XML attachment is extracted first.

Deterministic BT Mapping

Every element is mapped to the EN 16931 semantic model: business terms become predictable JSON fields, identical for UBL and CII input. No AI, no guessing, no variance.

Receive Structured JSON

Download an InvoiceDocument JSON with seller, buyer, lines, totals and VAT breakdowns, ready for your ERP import, database, or approval workflow.

Why Convert E-Invoices to JSON?

E-invoicing mandates mean your inbox fills with UBL, CII, Factur-X and ZUGFeRD files, four different XML dialects your application would otherwise need to understand. This endpoint normalises all of them into one predictable JSON shape, keyed to the EN 16931 business terms. Because the field names mirror the request body of the create endpoints, the same model carries an invoice through your whole pipeline: receive a supplier invoice as XML, read it as JSON, store it, approve it, or even re-issue a corrected document through /v1/create. And because the parsing is deterministic, identical input always yields identical output, something AI extraction can never promise.

Developer API

Built for Developers

A single REST endpoint. Upload e-invoice XML or a hybrid PDF, receive a BT-mapped InvoiceDocument JSON. Deterministic parsing, no AI.

  • Supports all formats: DOCX, XLSX, PDF, images, no preprocessing needed
  • Works on scanned and photographed invoices
  • Every response validated against official Schematron rules

Supports ZUGFeRD · Factur-X · XRechnung · UBL · CII · EN 16931

API Documentation
Terminal
$ curl -X POST https://api.invoicexml.com/v1/extract/json \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: multipart/form-data" \
  -F "[email protected]"

// => 200 OK
// => { "id": "inv_8f3k...", "status": "completed" }

Frequently Asked Questions

Which input files are accepted?

Standalone e-invoice XML in UBL 2.1 or CII D16B syntax, or a hybrid PDF (Factur-X, ZUGFeRD, or any PDF/A-3 with an embedded invoice XML attachment). When you upload a PDF, the embedded XML is extracted automatically and then parsed. Maximum file size is 20 MB.

What does the JSON output look like?

A BT-first EN 16931 InvoiceDocument with consistent field names: invoiceNumber, issueDate, currency, seller, buyer, paymentDetails, lines, totals, and vatBreakdowns. It is the same shape the create endpoints accept as input, so you can read a received invoice, adjust it, and post it straight back to /v1/create/ubl or /v1/create/facturx.

Is any AI involved?

No. This endpoint is deterministic XML parsing: the same input always produces the same output, and every value comes straight from the source XML. For PDFs that carry no embedded XML (typed, scanned, or photographed invoices), use the AI-powered /v1/parse/json instead.

Is the invoice validated during conversion?

No, this endpoint parses, it does not run business rules. Values are mapped as they appear in the XML. For a full EN 16931 / CIUS validation pass, send the same file to /v1/validate/ubl, /v1/validate/cii, /v1/validate/facturx or /v1/validate/zugferd.

Start free today

Ready to automate your invoices?

Validate, convert and embed compliant e-invoices through one API. Start your 30-day free trial. No credit card required.

GDPR Compliant No credit card required Setup in minutes
Peppol UBL
Factur-X
EN 16931
142 / 142 passed
Compliant
PDF/A-3 embedded