Use Case · Finanzen

Rechnungs- und Belegverarbeitung mit Audit-Trail

Belegverarbeitung ist der Idealfall für Agenten: Das Ergebnis ist maschinell prüfbar. Entweder die Rechnung passt zu Bestellung und Wareneingang, oder sie tut es nicht. Genau deshalb trägt der Use Case — und genau deshalb sind die Klarfälle der interessante Teil.

Agentenbasierte Belegverarbeitung extrahiert Rechnungsdaten, gleicht sie gegen Bestellung und Wareneingang im ERP ab, erzeugt bei Übereinstimmung einen Buchungsvorschlag und routet Abweichungen als Klarfall an die zuständige Person. Jeder Schritt bleibt über Beleg-Referenz und Audit-Log nachvollziehbar — gebucht wird erst nach Freigabe.

1. Ausgangslage

Ein Produktionsbetrieb mit rund 200 Mitarbeitern. Eingangsrechnungen kommen per Mail, Post und Portal. Die Buchhaltung erfasst manuell, gleicht gegen die Bestellung ab und holt bei Abweichungen Rücksprache in der Fachabteilung.

Ausgangslage vor dem Agenten-Einsatz
KennzahlWertAnmerkung
Eingangsrechnungen je Monat1 850alle Kanäle
Positionen je Rechnung4,2Durchschnitt
Bearbeitungszeit je Beleg7 minohne Klarfälle
Klarfallquote18 %Durchlaufzeit dann 3 bis 9 Tage
Skonto verfallen6 %der skontofähigen Rechnungen

2. Agent-Design

  • extract-agent — liest den Beleg, gibt ein streng validiertes Schema zurück: Lieferant, Rechnungsnummer, Datum, Positionen, Steuersätze, Zahlungsziel. Kein Freitext, keine Interpretation.
  • match-agent — gleicht gegen Bestellung und Wareneingang ab. Arbeitet nicht mit Ähnlichkeitssuche, sondern mit Datenbankabfragen und Toleranzregeln.
  • route-agent — entscheidet: Buchungsvorschlag oder Klarfall. Bei Klarfällen bestimmt er Zuständigkeit und formuliert die konkrete Rückfrage.

Guardrails: Der Agent bucht nichts. Er erzeugt einen Vorschlag im ERP, der von der Buchhaltung freigegeben wird — im Standard sogar bei perfekter Übereinstimmung. Betragsgrenzen, Lieferanten-Allowlist und Doublettenprüfung über Lieferant und Rechnungsnummer laufen im Gateway, nicht im Modell.

Warum die Extraktion streng schematisch ist

Ein Modell, das „ungefähr richtige“ Beträge liefert, ist in der Buchhaltung wertlos. Deshalb wird jede Extraktion gegen ein Schema mit Typen, Wertebereichen und Summenprüfung validiert. Was nicht validiert, wird nicht geschätzt, sondern Klarfall.

3. Architektur

beleg mail · portal · scan extract schema-validiert match erp · bestellung · we route toleranz geprüft buchungs- vorschlag klarfall mit rückfrage audit-trail: beleg-hash · extrahierte felder · abgleichregel · entscheidung · freigebende person
Zwei Ausgänge, ein Protokoll. Auch der Klarfall ist ein dokumentiertes Ergebnis, kein Abbruch.

4. Code

invoice_matching.py
from hostspezial.agents import step, schema
from decimal import Decimal

# Das Schema ist die Sicherung: Was nicht validiert, wird nicht
# geschaetzt, sondern Klarfall. Decimal statt float — bei Geld
# ist Rundung kein Detail.
Invoice = schema.model(
    supplier_id=str, invoice_no=str, invoice_date="date",
    net=Decimal, tax=Decimal, gross=Decimal,
    positions=schema.list_of(article=str, qty=Decimal, unit_price=Decimal),
)

def run(ctx, document):
    inv = step(ctx, "extract", returns=Invoice,
               fn=lambda: ctx.extract(document, Invoice))

    # Doublette vor allem anderen — der teuerste Fehler waere
    # eine zweite Zahlung derselben Rechnung.
    if ctx.tools.erp.invoice_exists(inv.supplier_id, inv.invoice_no):
        return ctx.clarify("doublette", queue="buchhaltung")

    po = step(ctx, "match", fn=lambda: ctx.tools.erp.match_order(
        supplier=inv.supplier_id, positions=inv.positions,
        tolerance={"price_pct": 2.0, "qty_abs": 0}))

    if not po.matched:
        # Konkrete Rueckfrage schlaegt allgemeine Eskalation.
        return ctx.clarify(po.reason, queue=po.responsible_team,
                           question=po.as_question())

    # Vorschlag, keine Buchung. Die Freigabe bleibt beim Menschen.
    return step(ctx, "propose", idempotency_key=f"{ctx.run_id}:propose",
                fn=lambda: ctx.tools.erp.create_booking_proposal(inv, po))

5. Ergebnis

Bearbeitungszeit je Beleg
7 min50 s
Klarfallquote
18 %11 %
Verfallenes Skonto
6 %1 %

Die 50 Sekunden sind die Zeit der freigebenden Person, nicht die Laufzeit des Agenten. Der wirtschaftlich größte Effekt steckt in der dritten Zahl: Skonto verfällt fast ausschließlich, weil Belege in Klarfallschleifen liegen bleiben. Wer die Durchlaufzeit senkt, verdient dort direkt Geld.

Funktioniert nicht bei …

… Rechnungen ohne Bestellbezug — ohne Referenz gibt es nichts abzugleichen, das bleibt Handarbeit. … Bauleistungen, Abschlagsrechnungen und Teillieferungen mit komplexer Vertragslogik; hier ist die Toleranzregel keine Zahl, sondern eine juristische Bewertung. … schlechten Scans unter etwa 200 dpi, bei denen bereits die Extraktion unsicher wird. Und: Der Agent bucht nicht. Wer die Freigabe als überflüssig empfindet, hat den Nutzen des Audit-Trails nicht gebraucht — bis zur ersten Prüfung.

Verwandte Seiten

Testlauf mit 100 echten Belegen

Wir lassen den Agenten über einen anonymisierten Stapel Ihrer Eingangsrechnungen laufen und zeigen Ihnen Extraktionsqualität, Trefferquote im Abgleich und die Fälle, die er zu Recht nicht entscheidet.

Oder direkt: 09571 873149