Zuruck zum Blog

Eingangsrechnungen automatisch verarbeiten: PDF per KI auslesen und in Odoo 18 buchen

Eingangsrechnungen automatisch verarbeiten: PDF per KI auslesen und in Odoo 18 buchen

Eine Rechnung kommt als PDF per E-Mail. Jemand öffnet sie, liest die Rechnungsnummer ab, sucht den Lieferanten im ERP, tippt Datum und Betrag ein, ordnet die richtige Steuerkategorie zu, speichert. Drei Minuten pro Rechnung, bei 50 Rechnungen im Monat zweieinhalb Stunden reine Tipparbeit. Dazu kommen Zahlendreher, vergessene Rechnungen und die Frage: War die Rechnung von Strato schon erfasst oder nicht?

Das lässt sich automatisieren. Komplett. Von der eingehenden E-Mail bis zur fertigen Buchung in Odoo, inklusive Archivierung der PDF im richtigen Ordner auf dem NAS.

Warum klassische OCR hier nicht reicht

Herkömmliche OCR-Lösungen lesen Text aus Bildern. Das funktioniert bei standardisierten Dokumenten wie Überweisungsträgern. Bei Rechnungen wird es schwierig:

Jede Rechnung sieht anders aus. Position und Bezeichnung der Felder variieren von Lieferant zu Lieferant. “Rechnungsnummer”, “Invoice No.”, “Belegnr.” — alles dasselbe Feld, aber OCR allein erkennt das nicht.

Tabellen, Logos, Fußzeilen. Klassische OCR gibt einen Textblock zurück. Die Zuordnung “welche Zahl gehört zu welchem Feld” fehlt. Man braucht zusätzliche Regeln oder Templates pro Lieferant.

Sprache und Format. Deutsche Rechnungen haben Komma als Dezimaltrennzeichen, amerikanische einen Punkt. Datumsformate variieren. Ein KI-Modell versteht den Kontext und liefert normalisierte Werte.

Was der Workflow macht

Die Lösung besteht aus zwei Workflows die zusammenspielen:

Workflow 1: E-Mail-Eingang

Ein n8n-Workflow überwacht automatisch ein E-Mail-Postfach (z.B. Outlook/M365) auf neue Nachrichten in einem definierten Ordner. Sobald eine E-Mail mit PDF-Anhang eintrifft:

  1. E-Mail erkennen — neue ungelesene Nachrichten im Rechnungsordner prüfen
  2. Anhänge filtern — nur PDFs werden verarbeitet, andere Dateitypen übersprungen
  3. PDF herunterladen — der Anhang wird als Binärdatei heruntergeladen
  4. Verarbeitung starten — die PDF wird an den Hauptworkflow übergeben
  5. E-Mail verschieben — nach erfolgreicher Verarbeitung wandert die E-Mail in einen “Verarbeitet”-Ordner

Kein manuelles Eingreifen nötig. Rechnung per E-Mail empfangen, fertig.

Workflow 2: Rechnungsverarbeitung

Der Kern-Workflow übernimmt die eigentliche Arbeit:

  1. PDF empfangen — per Webhook vom E-Mail-Workflow oder als manueller Upload
  2. PDF in Base64 umwandeln — damit die KI das Dokument verarbeiten kann
  3. Claude AI analysiert die Rechnung — extrahiert Lieferant, Rechnungsnummer, Datum, Netto, Brutto, USt-Satz und Währung
  4. Odoo-Authentifizierung — Anmeldung über die JSON-RPC-API
  5. Duplikat-Prüfung — existiert bereits eine Rechnung mit dieser Nummer? Falls ja: saubere Rückmeldung statt Doppelerfassung
  6. Lieferant suchen oder anlegen — der Workflow prüft ob der Lieferant in Odoo existiert und legt ihn bei Bedarf automatisch an
  7. Eingangsrechnung erstellen — als Entwurf in Odoo, mit Lieferant, Referenz, Datum und Betrag
  8. PDF archivieren — die Rechnung wird per WebDAV in einer strukturierten Ordnerstruktur auf dem NAS abgelegt: /Eingangsrechnungen/{Lieferant}/{Rechnungsnr}_{Datum}.pdf
  9. Ergebnis zurückgeben — strukturierte JSON-Antwort mit Odoo-ID und allen extrahierten Daten

Die Rechnung wird bewusst als Entwurf erstellt. So kann die Buchhaltung die KI-Extraktion prüfen und die Rechnung manuell bestätigen. Automatisierung bedeutet nicht Kontrollverlust.

Automatische Archivierung

Jede verarbeitete PDF landet automatisch in einer sauberen Ordnerstruktur auf dem NAS oder Fileserver. Der Ordner wird nach Lieferant benannt, die Datei nach Rechnungsnummer und Datum. So entsteht ohne Zutun ein durchsuchbares Rechnungsarchiv — wichtig für die Aufbewahrungspflicht nach GoBD (8 Jahre für Rechnungen, seit 2025 durch das Bürokratieentlastungsgesetz IV verkürzt).

Warum Claude AI und nicht ChatGPT?

Beide funktionieren. Die Wahl fiel auf Claude aus drei Gründen:

Native PDF-Verarbeitung. Claude kann PDF-Dokumente direkt als Base64 entgegennehmen, ohne Umweg über OCR-Services wie LlamaParse oder Tesseract. Das spart einen externen Dienst und reduziert Fehlerquellen.

Strukturierte Extraktion. Mit einem klaren Prompt liefert Claude valides JSON mit exakt den Feldern die man braucht. Kein Nachparsen von Freitext nötig.

API-Datenschutz. Über die Anthropic API werden Daten nicht zum Training verwendet. Für Unternehmen in Deutschland ein relevanter Unterschied.

Wer Kosten sparen möchte, kann statt Claude Sonnet 4.5 auch Claude Haiku 4.5 verwenden. Die Extraktion einfacher Rechnungen funktioniert damit genauso zuverlässig, bei einem Bruchteil der Kosten.

Die Odoo-Integration im Detail

Odoo 18 bietet eine vollständige JSON-RPC-API. Der Workflow nutzt sie für vier Operationen:

Authentifizierung

POST /jsonrpc
service: common
method: authenticate
args: [database, user, password, {}]

Gibt eine User-ID zurück, die für alle weiteren Aufrufe benötigt wird.

Duplikat-Check

model: account.move
method: search_read
domain: [['ref', '=', rechnungsnummer], ['move_type', '=', 'in_invoice']]

Sucht nach einer existierenden Eingangsrechnung mit derselben Referenznummer. Wenn gefunden, bricht der Workflow sauber ab und meldet das Duplikat zurück. Keine Fehlermeldung, sondern eine strukturierte Antwort die ein aufrufender Workflow verarbeiten kann.

Lieferant suchen oder anlegen

model: res.partner
method: search_read
domain: [['name', 'ilike', lieferant], ['supplier_rank', '>', 0]]

Findet existierende Lieferanten per unscharfer Namenssuche. Falls kein Treffer: automatische Anlage als Firma mit supplier_rank: 1.

Rechnung erstellen

model: account.move
method: create
move_type: in_invoice

Erstellt die Eingangsrechnung mit einer Rechnungszeile (Nettobetrag). Der Entwurf erscheint in Odoo unter Buchhaltung > Lieferantenrechnungen.

DSGVO: Darf ich Rechnungen an eine KI senden?

Rechnungen enthalten personenbezogene Daten: Firmennamen, Adressen, Steuernummern, bei Einzelunternehmen auch persönliche Namen. Die Verarbeitung über eine externe API ist datenschutzrechtlich relevant.

Was Sie brauchen:

  • Auftragsverarbeitungsvertrag (AV-Vertrag): Anthropic stellt ein Data Processing Addendum (DPA) bereit. Es ist automatisch Teil der Commercial Terms of Service. Wer die API nutzt, hat den Vertrag bereits akzeptiert.
  • Rechtsgrundlage: Art. 6 Abs. 1 lit. b (Vertragserfüllung) oder lit. c (gesetzliche Pflicht zur Rechnungsverarbeitung) DSGVO. Ergänzend lit. f (berechtigtes Interesse) für die Automatisierung über einen externen KI-Dienst.
  • Drittlandtransfer USA: Über Standardvertragsklauseln (SCCs) abgesichert, die Teil des DPA von Anthropic sind.
  • Kein Training mit Ihren Daten: Über die API eingesendete Daten werden von Anthropic nicht zum Modelltraining verwendet.

Empfehlung: Nehmen Sie die Rechnungsverarbeitung in Ihr Verarbeitungsverzeichnis auf und lassen Sie Ihren Datenschutzbeauftragten einmal draufschauen. Der Aufwand ist gering, die Absicherung aber wichtig.

Technische Voraussetzungen

  • Odoo 18 mit installiertem Invoicing-Modul (Community oder Enterprise)
  • Anthropic API Key — Zugang über console.anthropic.com, Pay-per-Use, ca. 0,01-0,02 EUR pro Rechnung je nach Modell
  • n8n 2.x — selbst gehostet oder n8n Cloud
  • E-Mail-Konto mit API-Zugang (Outlook/M365, Gmail oder IMAP) für den automatischen Eingang
  • NAS oder Fileserver mit WebDAV-Zugang für die PDF-Archivierung (z.B. Synology, Nextcloud)

Mögliche Erweiterungen

Der Workflow deckt den kompletten Weg ab: E-Mail-Eingang, KI-Extraktion, Odoo-Buchung und Archivierung. Für den erweiterten Produktiveinsatz bieten sich zusätzlich an:

  • Einzelpositionen extrahieren: Aktuell wird eine Rechnungszeile mit dem Gesamtbetrag erstellt. Eine erweiterte Version könnte jede Position einzeln auslesen.
  • PDF als Anhang in Odoo: Die PDF-Datei könnte über die ir.attachment-API direkt an die Rechnung in Odoo gehängt werden.
  • Automatische Bestätigung: Mit einem Approval-Flow könnte die Rechnung ab einem bestimmten Konfidenzwert automatisch gebucht werden.
  • Steuerzuordnung: Die Erkennung und Zuordnung der korrekten Odoo-Steuerkategorie basierend auf dem extrahierten USt-Satz.
  • Benachrichtigung: Slack- oder E-Mail-Benachrichtigung an die Buchhaltung wenn eine neue Rechnung verarbeitet wurde.

Fazit

Drei Minuten pro Rechnung klingt nicht nach viel. Bei 50 Rechnungen im Monat sind es zweieinhalb Stunden. Bei 200 Rechnungen ein ganzer Arbeitstag. Dazu kommen Tippfehler, vergessene Rechnungen und Duplikate.

Ein Workflow der in fünf Sekunden erledigt was ein Mensch in drei Minuten macht, ist keine Spielerei. Es ist ein konkreter Zeitgewinn den man sofort messen kann. Und mit der Entwurf-Logik bleibt die Kontrolle bei der Buchhaltung, genau dort wo sie hingehört.

Dazu kommt: Jede Rechnung wird automatisch im richtigen Ordner archiviert. Kein manuelles Ablegen, keine vergessenen PDFs im Posteingang. Wenn der Steuerberater in drei Jahren nach einer Rechnung fragt, liegt sie genau dort wo man sie erwartet.