Metadata-Version: 2.4
Name: xrechnung-check
Version: 0.1.0
Summary: CLI for the free XRechnung / ZUGFeRD (EN 16931) validator API at checkxrechnung.com
Author-email: Bobook Limited <info@bobook.club>
License-Expression: MIT
Project-URL: Homepage, https://checkxrechnung.com
Project-URL: Documentation, https://checkxrechnung.com/en/docs
Project-URL: Repository, https://github.com/wenboteng/xrechnung-validator
Project-URL: API waitlist, https://checkxrechnung.com/api-waitlist
Project-URL: Changelog, https://checkxrechnung.com/changelog
Keywords: xrechnung,zugferd,e-invoicing,en16931,validator,einvoice,germany
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Office/Business :: Financial
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.31
Dynamic: license-file

# xrechnung-check

Command-line client for the free, keyless XRechnung / ZUGFeRD validator API.

```bash
pip install xrechnung-check
xrechnung-check invoice.xml
xrechnung-check invoice.xml --json
```

Until the package is on PyPI, install it from a checkout:

```bash
pip install ./cli
```

`FILE` is an XRechnung XML document (UBL or CII) or a ZUGFeRD PDF. The command posts it as multipart field `file` to `https://checkxrechnung.com/v1/validate`. Python 3.9+. The only dependency is `requests`.

No API key. Free limit: 50 validations per IP per UTC day, 10 per minute, 5 MB maximum. HTTP 429 carries `Retry-After`. Higher volume: https://checkxrechnung.com/api-waitlist

Human output lists each issue with its rule id and `rule_url`. If the API omits `rule_url`, the CLI uses `https://checkxrechnung.com/fehler/<code>` (lowercase). `--json` prints a normalized report: `valid`, `errors[]` with `rule_id` and `rule_url`, plus summary fields from the API.

| Exit | Meaning |
| --- | --- |
| 0 | `ok` was true |
| 1 | the file is invalid, or it is not an e-invoice |
| 2 | usage error, unreadable file, or the API could not be reached |

Docs: https://checkxrechnung.com/en/docs · Rules: https://checkxrechnung.com/fehler/ · OpenAPI: https://checkxrechnung.com/openapi.json

MIT. Copyright (c) 2026 Bobook Limited.
