Turn the invoice PDF you already have into an e-invoice.

Your invoice looks as it did. The invoice data is added in machine-readable form, as XML following EN 16931 (ZUGFeRD / Factur-X).

Nothing is uploaded. Everything happens in your browser.

  • Free
  • Open source (MIT)
  • No sign-up

Check and complete the data

In an e-invoice the XML is what counts legally. Compare every value with your PDF.

Create as

Read with AI

A language model reads names, addresses and line items from the text of your invoice. The models in the list run on your device; your invoice does not leave the browser.

The model (about 1 GB) is downloaded from huggingface.co and raw.githubusercontent.com on first use and kept in the browser.

Totals

What goes into your file

Your e-invoice is ready.

The same invoice as before, now with its data inside as XML (ZUGFeRD / Factur-X, profile EN 16931).

Download e-invoice Download the XML only

Checksum (SHA-256) of :

What is added to your file

People read the left side, software the right one. Both have to say the same, so the key values are compared with your PDF.

Printed on your invoice Written into the XML
Rechnung Nr. RE-2026-0042 <ram:ID>RE-2026-0042</ram:ID>
Rechnungsdatum 03.11.2026 <udt:DateTimeString format="102">20261103</udt:DateTimeString>
Umsatzsteuer 19 % 284,81 € <ram:CalculatedAmount>284.81</ram:CalculatedAmount>
Gesamtbetrag 1.783,81 € <ram:GrandTotalAmount>1783.81</ram:GrandTotalAmount>

Compared

Many services convert PDF invoices too. The main difference is where your invoice is processed.

Typical online converter pdf-to-einvoice
Where is your invoice processed? Typical online converterOn the provider's servers: the file is uploaded. pdf-to-einvoiceOn your device, in the browser. Nothing is uploaded.
Who reads the data? Typical online converterDepending on the provider, an AI service in the cloud, also outside the EU, or you type everything in. pdf-to-einvoiceRules on your device; on request also a language model that runs in your browser too, or a service whose address you enter yourself.
Where does each value come from? Typical online converterYou get a form to correct. pdf-to-einvoiceWhat was read from the PDF is marked on it. Numbers, names, addresses, dates, prices and totals are compared with its text: whether they are there, not where.
Account, ads, tracking Typical online converterDepending on the provider, sign-up, ads or a subscription. pdf-to-einvoiceNo sign-up, no ads, no cookies.
Source code Typical online converterMostly closed. pdf-to-einvoiceOpen (MIT licence): anyone can check what the page does.
For software and AI assistants Typical online converterMostly an API that invoices are sent to. pdf-to-einvoiceLibrary, command line tool and MCP server, all on your own machine.
Formats Typical online converterZUGFeRD, often XRechnung and more. pdf-to-einvoiceZUGFeRD / Factur-X and XRechnung, following EN 16931.
Checking against the official rule sets Typical online converterSome offer their own validator. pdf-to-einvoiceIts own plausibility check; not a complete check against the official rule sets.

Questions and answers

.

.

.

.

.

.

.

.

.

.

Which kinds of invoices work?
. .
. .
. .
. .
. .
. .
. .

For developers and AI assistants

The same core runs as a library, as a command line tool and as an MCP server that lets AI assistants convert invoices. All three run on your machine and send nothing. An AI assistant reads the invoice itself, though: its content goes wherever the model of that assistant runs.

// npm install pdf-to-einvoice
import { check, createEInvoice, extractLayout, guessFromText } from 'pdf-to-einvoice';

const { text, blocks } = await extractLayout(pdfBytes);
const invoice = guessFromText(text, { blocks }); // what the page says
const { findings } = check(invoice, { pdfText: text }); // what is missing or wrong
const { pdf, xml } = await createEInvoice({ pdf: pdfBytes, invoice });