Create an E-Rechnung from your data
Map your ERP or shop fields to one JSON object. The API returns XRechnung 3.0, recomputed and validated with the KoSIT rules.
curl -H "Authorization: Bearer $FINEKOT_KEY" -H "Content-Type: application/json" -d @invoice.json https://api.finekot.com/v1/e-invoice
{
"format": "XRechnung 3.0 UBL",
"result": "https://api.finekot.com/f/…/RE-2026-0042-xrechnung-ubl.xml",
"totals": {"line_total": "1022.90", "tax_total": "191.36", "payable": "1214.26"},
"validation": {"valid": true, "errors": 0, "warnings": 0},
"units": 2, "cost": 0.04
}No subscription, no contract.
Per check €0.02 · PDF → XRechnung €0.10
A subscription bills the same monthly plan for 10 invoices or 1,000. Here you prepay any amount and pay per call; unused credit stays.
10 free checks a day · €1 free with a key · then €0.02 per check
Create XRechnung CII from Python
XRechnung needs a buyer reference, a seller contact with phone and email and a buyer electronic address. Missing ones come back as BR-DE-* errors in validation, not as a silent pass.
import os, requests
invoice = {
"number": "RE-2026-0042", "issue_date": "2026-11-03", "currency": "EUR",
"buyer_reference": "04011000-12345-34", # Leitweg-ID or agreed reference
"delivery_date": "2026-11-01",
"seller": {"name": "Muster Software GmbH", "vat_id": "DE123456789",
"address": {"street": "Hauptstr. 1", "city": "Berlin", "postcode": "10115", "country": "DE"},
"contact": {"name": "Billing", "phone": "+49 30 1234567", "email": "billing@muster.example"}},
"buyer": {"name": "Beispiel AG",
"address": {"street": "Rathausplatz 2", "city": "Köln", "postcode": "50667", "country": "DE"},
"electronic_address": {"scheme": "EM", "id": "invoices@beispiel.example"}},
"payment": {"means_code": "58", "iban": "DE02120300000000202051"},
"lines": [{"name": "Support, November", "quantity": 10, "unit": "HUR", "price": 95, "vat_rate": 19}],
}
r = requests.post("https://api.finekot.com/v1/e-invoice",
headers={"Authorization": f"Bearer {os.environ['FINEKOT_KEY']}"},
json={"op": "create", "profile": "xrechnung", "syntax": "cii", "invoice": invoice},
timeout=60)
out = r.json()
print(out["format"], out["totals"]["payable"], out["validation"]["valid"])
open("RE-2026-0042.xml", "wb").write(requests.get(out["result"], timeout=60).content)Validate an e-invoice
Official EN 16931 and XRechnung rules. Errors with rule id, message and location.
10 free checks a day · €1 free with a key · then €0.02 per check
Processed on servers in Germany (Hetzner, Falkenstein). The uploaded file is checked in memory and not stored.
The verdict, profile, totals and every rule violation appear here.
From ERP fields to XRechnung
The JSON follows the EN 16931 model with plain names: number, issue_date, seller, buyer, payment, lines. Units use UN/ECE codes (C62, HUR, DAY); VAT category defaults to S.
The server computes line nets, VAT per rate and payable amount, writes UBL or CII with the XRechnung 3.0 specification identifier and runs EN 16931 1.3.17 and KoSIT schematron 2.6.0 on the result.
Price: €0.04 per invoice from a prepaid balance. Credits never expire; there is no monthly minimum.
Price in plain numbers
A prepaid balance, no subscription. Charged only for a successful answer; errors are free.
A new key comes with €1 of free credit: 50 validations.
Credits never expire. No subscription.
Apple Pay, Google Pay or card on the monobank page. The key is created for you if you have none.
No key in this browser yet.
For developers
Same checks over REST and MCP. One header, JSON out.
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_…"
Full reference: /llms.txt · /openapi.json · /.well-known/mcp.json