XRechnung-Prüfung in GitHub Actions
Rechnungsvorlagen bei jedem Push gültig halten: ein curl-Schritt, Regelverstöße als Annotationen an der Datei, ein roter Job, wenn eine Rechnung abgelehnt würde.
curl -H "Authorization: Bearer $FINEKOT_KEY" -F file=@invoice.xml https://api.finekot.com/v1/e-invoice
{
"valid": false,
"verdict": "technically_invalid",
"profile": {"name": "XRechnung 3.0"},
"errors": 3, "warnings": 1,
"issues": [
{"rule": "BR-DE-15", "severity": "error",
"message": "Das Element \"Buyer reference\" (BT-10) muss übermittelt werden.",
"location": "/ubl:Invoice[1]"},
…
],
"cost": 0.02, "balance": 0.98
}Kein Abo, kein Vertrag.
Erstellung aus JSON €0,04 · PDF → XRechnung €0,10
Ein Abo berechnet denselben Monatstarif für 10 oder 1.000 Rechnungen. Hier laden Sie einen beliebigen Betrag auf und zahlen pro Aufruf; Restguthaben bleibt.
10 kostenlose Prüfungen am Tag · €1 gratis mit Schlüssel · danach €0,02 pro Prüfung
Workflow mit curl und jq
Den Schlüssel als Repository-Secret FINEKOT_KEY ablegen. ubuntu-latest hat curl und jq; kein Java-Setup, kein Validator-Download.
# .github/workflows/einvoice.yml
name: e-invoice
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate XRechnung files
env:
FINEKOT_KEY: ${{ secrets.FINEKOT_KEY }}
run: |
fail=0
for f in invoices/*.xml; do
r=$(curl -sS -H "Authorization: Bearer $FINEKOT_KEY" -F file=@"$f" \
https://api.finekot.com/v1/e-invoice)
echo "$r" | jq -r --arg f "$f" '"\($f): \(.verdict), \(.errors) errors"'
echo "$r" | jq -r --arg f "$f" \
'.issues[] | select(.severity=="error") | "::error file=\($f)::[\(.rule)] \(.message)"'
[ "$(echo "$r" | jq .valid)" = "true" ] || fail=1
done
exit $failE-Rechnung prüfen
Offizielle Regeln EN 16931 und XRechnung. Fehler mit Regel-ID, Meldung und Fundstelle.
10 kostenlose Prüfungen am Tag · €1 gratis mit Schlüssel · danach €0,02 pro Prüfung
Verarbeitung auf Servern in Deutschland (Hetzner, Falkenstein). Die hochgeladene Datei wird im Arbeitsspeicher geprüft und nicht gespeichert.
Hier erscheinen Ergebnis, Profil, Summen und jeder Regelverstoß.
Warum in der CI
Rechnungsausgabe bricht leise: Ein Refactoring entfernt die Käuferreferenz, eine geänderte Rundung bricht BR-CO-16. Eine CI-Prüfung auf Beispielrechnungen findet das, bevor das Eingangsportal des Kunden es tut.
Jede Datei kostet €0,02; 20 Beispielrechnungen bei jedem Push sind €0,40. Ohne Schlüssel erlaubt der Playground-Endpunkt /v1/try/e-invoice 10 Prüfungen pro Tag und IP.
Geprüft wird mit EN 16931 1.3.17 und KoSIT-XRechnung-Schematron 2.6.0, den Schematron-Regelwerken des KoSIT-Validators für XRechnung; dessen XSD-Schritt gehört nicht zu dieser Prüfung.
Preis in einfachen Zahlen
Vorausbezahltes Guthaben, kein Abo. Berechnet wird nur eine erfolgreiche Antwort; Fehler sind kostenlos.
Ein neuer Schlüssel enthält €1 Startguthaben: 50 Prüfungen.
Guthaben verfällt nicht. Kein Abo.
Apple Pay, Google Pay oder Karte auf der Zahlungsseite der monobank. Ohne Schlüssel wird einer für Sie erstellt.
In diesem Browser ist noch kein Schlüssel.
Für Entwickler
Dieselben Prüfungen per REST und MCP. Ein Header, JSON zurück.
curl https://api.finekot.com/v1/e-invoice \
-H "Authorization: Bearer fk_live_…" \
-F file=@invoice.xml
# → {"valid":false,"errors":2,"issues":[{"rule":"BR-DE-15",…}]}
# X-Cost: 0.02curl https://api.finekot.com/v1/e-invoice \
-H "Authorization: Bearer fk_live_…" \
-H "Content-Type: application/json" \
-d '{"op":"create","output":"pdf","invoice":{…}}'
# → Factur-X PDF url + validation report · X-Cost: 0.04claude mcp add --transport http finekot https://api.finekot.com/mcp --header "Authorization: Bearer fk_live_…"
Vollständige Referenz: /llms.txt · /openapi.json · /.well-known/mcp.json