Find out why your e-invoice is rejected
Drop a Factur-X PDF or a UBL/CII XML and get every failed EN 16931 rule in plain English, with the field that caused it. Free, in your browser.
- BR-CO-15 BT-112
- BR-08 BT-35
Real output. Nothing is uploaded: validation runs client-side.
Free validator
Check an invoice in seconds
Drop a Factur-X / ZUGFeRD PDF or an XML invoice (UBL or CII, incl. XRechnung). We extract the embedded XML if needed, detect the syntax and check the core EN 16931 business rules, every failure explained in plain English with its BT-field reference. Everything runs in your browser; your invoice never leaves your machine.
Drop an invoice here or click to choose a file
.xml (UBL, CII, XRechnung) or .pdf (Factur-X / ZUGFeRD), validated locally in your browser, nothing is uploaded.
API preview
The same engine, from your code coming soon
Validate, generate and parse Factur-X, XRechnung, UBL and CII without touching XML or schematron yourself. These endpoints are in development, the examples below are the planned contract. Join the waitlist for early access and launch pricing.
Validate a Factur-X PDF or UBL/CII XML against the full EN 16931 rule set (plus XRechnung CIUS rules). Returns every failed rule with its BT reference.
curl https://api.einvoicekit.com/v1/validate \
-H "Authorization: Bearer eik_live_..." \
-F "file=@invoice.pdf" {
"valid": false,
"syntax": "cii",
"profile": "urn:factur-x.eu:1p0:en16931",
"errors": [
{
"rule": "BR-CO-15",
"bt": "BT-112",
"message": "Total with VAT (115.00) should be 120.00",
"path": "//ram:GrandTotalAmount"
}
],
"warnings": []
} Build a compliant e-invoice from plain JSON. Output as UBL, CII (XRechnung) or a Factur-X PDF/A-3 with the XML embedded.
curl https://api.einvoicekit.com/v1/generate \
-H "Authorization: Bearer eik_live_..." \
-H "Content-Type: application/json" \
-d '{
"format": "factur-x",
"profile": "en16931",
"invoice": {
"number": "INV-2026-001",
"issueDate": "2026-07-15",
"currency": "EUR",
"seller": { "name": "Acme SARL", "vatId": "FR40123456824",
"address": { "country": "FR" } },
"buyer": { "name": "Beispiel GmbH",
"address": { "country": "DE" } },
"lines": [
{ "name": "Consulting", "quantity": 2,
"unitPrice": 50.00, "vatRate": 20 }
]
}
}' {
"id": "gen_9f2c1a",
"format": "factur-x",
"valid": true,
"download": {
"pdf": "https://api.einvoicekit.com/v1/files/gen_9f2c1a.pdf",
"xml": "https://api.einvoicekit.com/v1/files/gen_9f2c1a.xml"
}
} Parse any e-invoice into normalized JSON, the same shape regardless of whether the input was UBL, CII or a Factur-X PDF.
curl https://api.einvoicekit.com/v1/extract \
-H "Authorization: Bearer eik_live_..." \
-F "file=@invoice.xml" {
"syntax": "ubl",
"invoice": {
"number": "INV-2026-001",
"issueDate": "2026-07-15",
"currency": "EUR",
"seller": { "name": "Acme SARL", "vatId": "FR40123456824" },
"buyer": { "name": "Beispiel GmbH" },
"totals": { "net": 100.00, "vat": 20.00, "due": 120.00 },
"lines": [
{ "name": "Consulting", "quantity": 2, "net": 100.00 }
]
}
} The API is next
The same engine behind this validator, as endpoints you can call: validate, generate and parse Factur-X, XRechnung, UBL and CII from your own code. Tell us what you are building and you shape what ships first.
Join the API waitlist
One email when the API opens, with launch pricing. No newsletter.