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.
| Kennzahl | Wert | Anmerkung |
|---|---|---|
| Eingangsrechnungen je Monat | 1 850 | alle Kanäle |
| Positionen je Rechnung | 4,2 | Durchschnitt |
| Bearbeitungszeit je Beleg | 7 min | ohne Klarfälle |
| Klarfallquote | 18 % | Durchlaufzeit dann 3 bis 9 Tage |
| Skonto verfallen | 6 % | 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.
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
4. Code
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
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.
… 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.