Automating invoice processing: DATEV, Lexoffice, Excel
I’m Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, running DennisCraft AI Studio with a Claude, Supabase, n8n, Doppler, and self-hosted Postgres stack. When a client sent me 241 invoices for a single month—mostly as Excel files and PDFs—their accounting team spent over 8 hours weekly just copying numbers into DATEV. For a business with more than €2M turnover, that’s not just a time sink, but also a compliance risk if one number is miskeyed and a payment gets blocked or th
I’m Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, running DennisCraft AI Studio with a Claude, Supabase, n8n, Doppler, and self-hosted Postgres stack. When a client sent me 241 invoices for a single month—mostly as Excel files and PDFs—their accounting team spent over 8 hours weekly just copying numbers into DATEV. For a business with more than €2M turnover, that’s not just a time sink, but also a compliance risk if one number is miskeyed and a payment gets blocked or the tax office finds errors.
Where automation matters: a real-world scenario
Across my DACH clients, most use DATEV (for tax reporting), Lexoffice (online accounting), or manage invoices in Excel/Sharepoint. The bottleneck: importing and parsing invoices is still manually done. Even with Lexoffice’s OCR, you won’t get 100% accuracy—blurry scans, unfamiliar formats, or invoices from non-German partners all trip up the system.
| Workflow | Error rate (manual) | Time per invoice (min) |
|---|---|---|
| DATEV Import | ~3% (on a dataset of 600 invoices, my own measurement) | 3–6 |
| Lexoffice OCR | ~7% (especially scanned PDFs) | 1–2 |
| Excel manual entry | up to 10% | 2–8 |
Typical problems: missed amounts, wrong dates, duplicate line items. Even with official APIs, you need a control layer: an AI system that prepares data and flags anything suspicious for review.
How the stack works: automation with human-in-the-loop
1. Collect and normalize invoices
First, gather all incoming files (email, cloud, web portal). I use n8n to trigger on new emails or cloud uploads, check the format, and send the file to Claude for data extraction.
def extract_invoice_data(file_path):
import requests
with open(file_path, "rb") as f:
content = f.read()
# Send to Claude via API
response = requests.post(
"https://api.anthropic.com/v1/messages",
headers={"x-api-key": "API_KEY"},
json={
"model": "claude-3-opus-20240229",
"messages": [
{"role": "user", "content": "Extract amount, date, counterparty from invoice"}
],
"attachments": [content]
}
)
return response.json()
Output: clean structured data—amount, date, counterparty, IBAN, payment reference.
2. Validation and error-checking
Next, validate with Supabase/Postgres: cross-check against past invoices (has this already been paid?), verify amounts, catch OCR mistakes. Whenever the system is unsure—bad scan, mismatch on amount—it flags for human review. No entry is posted without a final check if there’s doubt.
3. Export to your system
Data is exported via API or CSV: to DATEV (via XML/CSV), to Lexoffice (REST API), or to Excel (direct). This is not plug-and-play: sometimes, non-German invoices lack key fields (like USt-ID), so format conversion is needed.
import csv
def export_to_datev(data, output_file):
fields = ["Buchungsdatum", "Betrag", "Gegenkonto", "Text"]
with open(output_file, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=fields, delimiter=';')
writer.writeheader()
for row in data:
writer.writerow(row)
When NOT to automate: honest boundaries
If you have fewer than 30 invoices per month, standard Lexoffice or DATEV with manual review is both faster and cheaper. Automation only pays off at scale (4+ hours manual work per week) or if errors have direct compliance consequences. Don’t build a process just for the sake of automation—if you’re not feeling real pain (mistakes, penalties, blocked payments), it will only add complexity.
Time, cost, risk: what really changes
- Implementation time: 7–20 business days (including testing on your invoices).
- Market price: external agency setup typically runs €3,000–€9,000 (see KI-Consulting.de price list, as of June 2026).
- Time saved: for 200 invoices/month, expect to cut 20–30 hours of manual work (based on client deployments).
- Risk: if an invoice can’t be parsed, the system immediately notifies a responsible person—nothing gets lost.
- Data stays in your infrastructure: Claude can run via proxy, files are kept in Supabase or local Postgres, no third-party sharing.
FAQ
How much does it cost and who maintains it?
Implementation: from €3,000 (one-time). Ongoing support: €200–€400/month (market rate). If you use 1C or SAP, their built-in modules may be a better fit—don’t overcomplicate.
How long does setup take?
7–20 business days, depending on invoice volume and formats (PDF, Excel, scans).
What if the AI gets it wrong?
The system sets the invoice to “needs review” and notifies your team. No errors enter the final export.
Does my data leave our servers?
No, if you use a proxy or self-hosted stack. Claude can be called via a secure API; data is stored locally or in your own Supabase/Postgres instance.
Who is liable for mistakes?
Your accounting team remains legally responsible. The AI prepares data, but final sign-off is yours.
In what cases would you NOT automate invoice processing? For example, if you only have 1–2 suppliers or get all invoices electronically, is an extra system worth the hassle? I run a free 30-min stack audit for DACH founders building AI for real business. DM me on LinkedIn or write to @ger_dennis_ai.
Turn your process into an AI system
Production quality. DACH B2B focus.