Validate XRechnung XML and ZUGFeRD / Factur-X PDFs with the free checkxrechnung.com API.
MCPpedia last refreshed this data
io.github.wenboteng/xrechnung-validator is an MCP server that validate XRechnung XML and ZUGFeRD / Factur-X PDFs with the free checkxrechnung.com API. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 87/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"io-github-wenboteng-xrechnung-validator": {
"args": [
"-y",
"xrechnung-validator-mcp"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Validate XRechnung XML and ZUGFeRD / Factur-X PDFs with the free checkxrechnung.com API.
This server supports HTTP transport. Be the first to test it - help the community know if it works.
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked xrechnung-validator-mcp against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in other
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.
SQL for Android APK and DEX files: classes, methods, strings, references and smali.
System 1 decision models (Jev, Laya, Cua-S1) as brain for agents: Browser use, computer use, games and robotics
MCP Security Weekly
Get CVE alerts and security updates for io.github.wenboteng/xrechnung-validator and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Client tools for the free, keyless validator at checkxrechnung.com. Send one XRechnung XML file (UBL or CII) or a ZUGFeRD PDF and get EN 16931 / XRechnung rule results back. The API runs the KoSIT validator with the official XRechnung configuration.
This repository is only the public client: CLI, MCP server, OpenAPI copy, samples, and examples. It does not contain the validator engine.
The file is uploaded to POST https://checkxrechnung.com/v1/validate for that request. The service reports persisted: false.
| Limit | Value |
|---|---|
| API key | none |
| Per IP per UTC day | 50 validations |
| Per minute | 10 |
| Max upload | 5 MB on POST /v1/validate. 10 MB on POST /v1/zugferd/validate and POST /v1/zugferd/extract |
| Over the daily or minute limit | HTTP 429 and Retry-After |
| Over 5 MB | HTTP 413 |
Batch and higher volume: API waitlist (joining is free). Docs: English, Deutsch. Machine-readable contract: openapi.json (copy in openapi/openapi.json).
A file can pass here and still be rejected by a portal such as ZRE or OZG-RE. This is not a Peppol access point and not legal or tax advice.
UBL, using the published valid sample:
curl -F "file=@samples/valid-xrechnung-ubl.xml" https://checkxrechnung.com/v1/validate
CII uses the same endpoint and the same file field. Point it at a Cross Industry Invoice XML file:
curl -F "file=@invoice-cii.xml" https://checkxrechnung.com/v1/validate
examples/curl.sh wraps the same request. The public sample set below is UBL plus a PDF; it does not include a CII file.
Request:
curl -F "file=@samples/invalid-xrechnung-ubl.xml" https://checkxrechnung.com/v1/validate
The invalid sample is published as failing. The API docs show this shape (first issue only; the full report has more):
{
"ok": false,
"persisted": false,
"fileName": "invalid-xrechnung-ubl.xml",
"bytes": 2496,
"hasXml": true,
"syntax": "UBL Invoice",
"invoiceType": "XRechnung",
"summary": { "errors": 14, "warnings": 0 },
"versions": {
"product": "RechnungCheck",
"domain": "checkxrechnung.com",
"xrechnung": "3.0.2",
"kosit_validator": "1.6.3",
"kosit_configuration": "2026-08-31",
"en16931_schematron": "1.3.16"
},
"issues": [
{
"severity": "error",
"code": "BR-08",
"location": "/Invoice",
"message": "[BR-08]-An Invoice shall contain the Seller postal address.",
"hint": "Die Verkäuferanschrift (BG-5) fehlt. StreetName, CityName, PostalZone und Country/IdentificationCode setzen.",
"source": "kosit"
}
]
}
ok: true means the file passed. The CLI and MCP server map that to valid, and map each issue's code to rule_id. When the response includes rule_url (or ruleUrl), that URL is kept. Otherwise the tools link the public rule page https://checkxrechnung.com/fehler/<code> in lowercase. Some rule pages are not published yet.
Downloaded from checkxrechnung.com/samples. Synthetic data, not real invoices.
| File | What the site says to expect |
|---|---|
samples/valid-xrechnung-ubl.xml | Valid XRechnung 3.0 UBL. Pass, no errors. |
samples/invalid-xrechnung-ubl.xml | Missing required data. Fail, 14 errors, including BR-08 and BR-DE-15. |
samples/plain-invoice.pdf | PDF with no embedded XML. Not an e-invoice. |
samples/factur-x-en16931.pdf | Synthetic Factur-X PDF, profile EN16 |