Validate, parse and generate e-invoices with one API call.
The EU E-Invoice API validates XRechnung and ZUGFeRD against the official rule sets, turns invoices into clean JSON and generates valid e-invoices from JSON. For accounting, ERP and invoicing software that would rather not rebuild the e-invoicing mandate in-house.
- Official KoSIT, CEN and FeRD rules, PDF/A-3 checks with veraPDF
- Processed on servers in Germany, in memory only
- Start free: 100 documents a month
# upload a PDF or XML, the format is detected automatically
curl -H "Authorization: Bearer $API_KEY" \
-F "file=@invoice.pdf" \
https://api.einvoice-api.eu/v1/validate
{
"valid": false,
"format": "zugferd",
"profile": "EN16931",
"summary": { "fatal": 0, "error": 1, "warning": 0 },
"findings": [{
"severity": "error",
"ruleId": "BR-CO-15",
"message": "Invoice total amount with VAT (BT-112) = …",
"xpath": "/rsm:CrossIndustryInvoice[1]/…"
}]
}
E-invoicing is becoming mandatory – for your customers too
In German B2B business, a PDF sent by e-mail will soon no longer be enough. Invoicing software has to read, check and write XRechnung and ZUGFeRD.
- since 1 January 2025Every business must be able to receive e-invoices.
- from 1 January 2027Businesses with more than €800,000 prior-year turnover must issue them.
- from 1 January 2028All domestic B2B invoices must be e-invoices.
Simplified summary of the German Growth Opportunities Act; exceptions (e.g. small-amount invoices) remain. Not legal advice.
What the API does
A lean REST API with four jobs. Errors are RFC 9457 problem+json with a request id, and the
interface is described in OpenAPI 3.1.
Validate
Detects the format and checks XML or PDF against schema, Schematron and PDF/A-3. You get valid
and every finding with rule id, severity, message and XPath.
Parse
Validates, then returns the invoice as normalized EN 16931 JSON with recomputed totals. Ideal for inbound invoices: one data model for every format.
Generate
The same JSON becomes XRechnung (CII or UBL), ZUGFeRD EN 16931 or Factur-X BASIC. Every output is validated before it is returned – invalid invoices never leave the API.
Preview upcoming rules Paid plans
Validates against the next published rule-set release before it becomes mandatory, so you know early whether your invoices will still pass after the update.
- XRechnung 3.0 (UBL)
- XRechnung 3.0 (CII)
- ZUGFeRD 2.x (MINIMUM to EXTENDED, XRECHNUNG)
- Factur-X
- EN 16931
- PDF/A-3
Built for data nobody can afford to lose
Invoices carry trade secrets and personal data. The API is designed to see as little of it as possible and to keep none of it.
Official rule sets
Validation uses the KoSIT validator configuration for XRechnung, the CEN EN 16931 Schematron and the FeRD Schematron for ZUGFeRD / Factur-X – not re-implemented rules.
PDF/A-3 with veraPDF
ZUGFeRD PDFs are also checked for PDF/A-3 with veraPDF, the PDF Association's reference validator.
Processed in Germany
Invoices are processed on servers in a data centre in Germany (Hetzner, Falkenstein), not at a US hyperscaler.
Nothing is stored
Invoices are processed in memory only, never written to disk and never logged. Only metadata such as endpoint, status, duration and size is recorded.
Up-to-date rule sets
New official rule-set releases are added as soon as they are published – early through the preview, binding on their effective date. Every response names the version used.
No cookies, no tracking
This website sets no cookies, loads no third-party fonts or scripts and keeps no access log either.
Integrated in minutes
One HTTP call with your API key – no SDK, no Java libraries in your stack. Examples for curl, Python and JavaScript are in the developer portal.
curl -H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/xml" \
--data-binary @xrechnung.xml \
https://api.einvoice-api.eu/v1/parse
{
"valid": true,
"format": "xrechnung",
"rulesets": [{ "id": "xrechnung", "version": "3.0.2" }],
"invoice": {
"invoiceNumber": "RE-2026-0042",
"currency": "EUR",
"seller": { "name": "Muster Software GmbH", … },
"totals": { "taxInclusiveAmount": "1190.00", … }
}
}
curl -H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
--data-binary @invoice.json \
-o invoice.pdf \
"https://api.einvoice-api.eu/v1/generate?format=zugferd-en16931"
# other formats: xrechnung-cii, xrechnung-ubl, facturx-basic
# The output is already validated. If the JSON is incomplete,
# you get 422 with the findings instead of an invalid invoice.
Pricing
Every plan includes every format and endpoint; paid plans add the rule-set preview. Plans differ only in volume, speed and file size. Pay annually and get two months free.
Free
- 100 documents / month
- 10 requests / minute
- Files up to 2 MB
- Stops at the quota
Starter
- 2,500 documents / month
- 30 requests / minute
- Files up to 5 MB
- Preview of upcoming rule sets
Pro
- 15,000 documents / month
- 60 requests / minute
- Files up to 10 MB
- Preview of upcoming rule sets
Scale
- 100,000 documents / month
- 120 requests / minute
- Files up to 10 MB
- Preview of upcoming rule sets
All prices net, plus VAT where applicable, for businesses. Annual price = 10 monthly prices. A validate or parse call counts as 1 document, generate as 2 (it generates, then validates). The Free plan stops at its quota; paid plans bill overage automatically at the price shown. All plans are self-service: sign-up, plan changes and billing are automatic, with no individual contracts.
Frequently asked questions
Are my invoices stored?
No. The API is stateless: invoices are processed in memory and discarded after the response. They never reach the disk or the logs. Only metadata is recorded (endpoint, format, status, duration, size in bytes).
Which rule-set versions are used?
Always the official versions in force, e.g. XRechnung 3.0.2 (KoSIT, release 2026-08-31). Every response
names the versions used, and GET /v1/formats lists them all. The ?ruleset= parameter
pins a version.
What counts as a document?
Every processed call to validate, parse or the rule-set preview counts as 1 document, generate as 2 – also
when the invoice has errors, because the check was performed. Calls to /v1/formats and
/v1/health are free.
Is there a data processing agreement (DPA)?
Yes. A standard DPA under Art. 28 GDPR is part of the terms and applies to every plan; you accept it when you sign up. We don't offer individual contracts.
Is there support?
The API is a self-service product: the documentation, the API reference and the examples answer most questions, and every error message says what to fix. There is no personal support with committed response times.
Ready for e-invoicing?
Sign-up opens soon. You'll then get a free API key in the developer portal and validate your first invoice in a few minutes.