Zum Hauptinhalt springen

Transaktions-Cockpit (TransactionCockpit)

Zweck

Das Cockpit ist die tägliche Buchungs-Review-Queue der Buchhaltung — seit Juni 2026 im DATEV-artigen 3-Spalten-Layout und für zwei Beleg-Arten zuständig:

  • Transaktionen (Bank/Pleo): Welche Transaktion braucht eine Entscheidung — welches SKR-Konto + Steuersatz passt? → Bestätigen & Buchen.
  • Eingangsrechnungen (incomingInvoice): Welche Rechnung ist zu verbuchen? → Aufwandskonto setzen, Freigeben → es entsteht ein offener Posten in den Verbindlichkeiten.

Pro Posten sieht der Sachbearbeiter links die Warteschlange, in der Mitte die Beleg-Vorschau (PDF), rechts die Buchungs-/Freigabe-Form mit KI-Bewertung (Ampel) — und oben eine 6-stufige Statuszeile, die den Fortschritt vom Beleg bis zur Zahlung anzeigt.

Voraussetzungen

- Berechtigung `view:FE_Transaction`, `view:Transaction` (Route-Gate), zusätzlich `view:TransactionAllocation` und `view:TransactionAiAssessment` für Vorschläge/KI. - Für **Transaktionen buchen:** `create:TransactionAllocation` und `update:Transaction`. - Für **Eingangsrechnungen freigeben:** `do:LockPurchaseDocument` und `update:PurchaseDocument` (Aufwandskonto setzen). - Mindestens ein eigenes [Buchhaltungskonto](/transaction-accounts) (`isExternal = false`, `status = active`). - Synchronisierte Transaktionen (`status = booked`) bzw. erfasste Eingangsrechnungen — Drafts erscheinen nicht.

Berechtigungen (CASL)

ActionSubjectWirkung
viewFE_Transaction, TransactionCockpit aufrufbar (Route-Gate)
viewTransactionAccountKonto-Filter
viewTransactionAllocation, TransactionAiAssessmentVorschläge + KI-Bewertung sehen
viewTransactionMatchProposalOP-Matching-Vorschläge
createTransactionAllocation„Bestätigen & Buchen", manuelle Zuordnung
updateTransactionÜberspringen / matchingStatus-Flip
view/updatePurchaseDocumentEingangsrechnung anzeigen / Aufwandskonto setzen
doLockPurchaseDocumentEingangsrechnung freigeben (verbuchen)
doAiSuggestionKI-Klassifizierung erneut anstoßen

Layout — drei Spalten

Seit dem Umbau (Juni 2026) ist das Cockpit eine DATEV-artige 3-Spalten-Oberfläche. Die linke und rechte Spalte sind per Maus an der Trennlinie breit-ziehbar (Breite wird lokal gemerkt):

SpalteStandardbreiteInhalt
Links — Warteschlange320 px (220–560)Liste der zu bearbeitenden Posten im aktiven Tab.
Mitte — Beleg-VorschauflexibelPDF-Vorschau des Belegs (mehrseitig nebeneinander, zoombar) + Statuszeile.
Rechts — Buchung/Freigabe440 px (300–640)Buchungsform (Transaktion) oder Freigabe-Panel (Eingangsrechnung) + KI-Bewertung.

Oben läuft eine Kopfzeile mit Posten-Zähler („Posten 3 von 24"), den Tabs, dem Konto-Filter und den Tastatur-Hinweisen.

Tabs der Warteschlange

Tab (UI)CockpitTabZeigt
OffenopenTransaktionen ohne Zuordnung (matchingStatus = unmatched).
VorschlägeproposalsTransaktionen mit KI-Vorschlag (proposal_created).
ErledigtcompletedGebuchte Transaktionen (auto_matched / manually_matched).
AlleallOffen + Vorschläge zusammen.
EingangsrechnungenincomingInvoicesErfasste, noch nicht freigegebene Eingangsrechnungen (kein offener Posten).

Eine Transaktions-Zeile zeigt: farbiger Statuspunkt · Gegenpartei · Datum · vorzeichenbehafteter Betrag (rot = Ausgabe, grün = Eingang). Eine Eingangsrechnungs-Zeile zeigt: Punkt · Lieferant · Belegnummer · Datum.

Statuszeile — sechs Stufen

Über der Beleg-Vorschau zeigt eine farbige Statuszeile den Fortschritt. Grün = erledigt, gelb = Vorschlag/geplant, grau = offen, rot = Achtung.

StufeEingangsrechnungTransaktion
Belegdatengrün, wenn Lieferant + Datum daimmer grün
Belegimmer grün (bei Erfassung geprüft)grün = Beleg da · rot = gebucht ohne Beleg (GoBD-Warnung) · grau = noch keiner
Kontogrün, wenn Aufwandskonto gesetztgrün = gebucht · gelb = KI-Vorschlag · grau = leer
Steuergrün, wenn Aufwandskonto gesetzt (Steuer folgt dem Konto)grün = gebucht · gelb = Vorschlag · grau = leer
Verbuchunggrün, sobald offener Posten existiertgrün = gebucht · grau = offen
Zahlunggelb „Geplant zum Zahlungsziel"grün = gebucht · gelb = Vorschlag · grau = offen

Rechte Spalte bei Transaktionen — Buchungsform + KI

Die Buchungsform (TransactionBookingForm) hat:

  • SKR-Konto (Auswahl, vorbefüllt aus KI-Vorschlag),
  • Steuersatz (Auswahl, vorbefüllt),
  • Beleg-/Auftrags-Zuordnung (Auftrag / Einkaufsbeleg / Verkaufsbeleg — je nach Richtung).

Buttons: Bestätigen & Buchen (grün; löst POST /transactions/:id/allocation-proposal/apply aus), Ignorieren/Überspringen (setzt matchingStatus = skipped) und Aufteilen (noch in Arbeit — „Aufteilen folgt").

Darüber die KI-Bewertung (TransactionAiAssessmentPanel) als Ampel: ein konsolidierter KI-Pass (POST /transactions/:id/ai-analyze) bewertet Beleg-Qualität, Betrags-/Datums-Match und Plausibilität (rot/gelb/grün) und schlägt Konto, Steuersatz und Auftrag/Auslage vor. Details zur Score-Logik: KI-Allocation-Engine.

Manuelle Zuordnung

Schneller Pfad, wenn die KI nicht greift:

ZielWann?SKR-Konto Pflicht?
Auftrag (Workorder)Ausgang / Aufwand, Cost-Trackingnein (nur Cost-Tracking ohne GL-Eintrag)
Einkaufsbeleg (PurchaseDocument)Ausgang, Rechnung vorhandenja
Verkaufsbeleg (SalesDocument)Eingang, Kundenzahlungja

Speichern → POST /api/transaction-allocations; gebucht wird über Bestätigen & Buchen.

Rechte Spalte bei Eingangsrechnungen — Freigeben

Im Tab Eingangsrechnungen erscheint rechts statt der Buchungsform das Freigabe-Panel (IncomingInvoiceApprovalPanel):

  1. Aufwandskonto wählen (Pflicht — der Steuersatz wird aus dem Konto übernommen).
  2. Optional Arbeitsaufträge zuordnen (reine Kostenreferenz, siehe Einkaufsbelege).
  3. Freigeben → ruft POST /api/purchase-documents/:id/lock. Damit wird die Rechnung verbucht (Soll-Versteuerung) und es entsteht ein offener Posten in den Verbindlichkeiten mit Fälligkeit aus dem Zahlungsziel. Die spätere Bank-Zahlung gleicht ihn automatisch aus.

Nach dem Freigeben verschwindet die Rechnung aus dem Eingangsrechnungen-Tab (sie hat nun einen offenen Posten).

Tastatur-Navigation

TasteAktion
/ jnächster Posten
/ kvorheriger Posten
(Enter)„Bestätigen & Buchen" (Hinweis in der Kopfzeile)

Nach dem Buchen springt der Fokus automatisch zum nächsten Posten — so lässt sich die Warteschlange zügig abarbeiten.

Neu in Cockpit 2.0 (Juni 2026)

Mit dem rechnungsfluss-v2-Umbau wurde das Cockpit neu aufgebaut und um mehrere Funktionen erweitert:

Pipeline-Übersicht und Kontenblätter

Neben der Warteschlange gibt es eine Pipeline-/Status-Übersicht sowie Kontenblätter (PartyLedger) pro Kunde/Lieferant in DATEV-artigen Spalten — so sehen Sie den Verarbeitungsstand und die Konten-Historie einer Gegenpartei gebündelt.

„Ausgleichen" — gegenseitige Verrechnung von Transaktionen

Mehrere Transaktionen, deren Summe ≈ 0 ist (z. B. Zahlung + Rückerstattung), lassen sich über Ausgleichen (POST /transactions/offset, Toleranz 0,01 €) als manuell zugeordnet markieren und gegeneinander verknüpfen — ohne separate Buchung. Status danach: manually_matched.

Interne Transfers ausblenden

Der Filter „Interne Transfers einblenden" blendet standardmäßig GL-neutrale Geldbewegungen (z. B. PayPal-/Pleo-Verrechnung, Lohn) aus, damit die Queue nur echte Belegfälle zeigt. Bei Bedarf einblendbar.

PayPal-Posten nach Settlement-Periode gruppieren

PayPal-Abbuchungen aufs Bankkonto dienen als Perioden-Grenzen: Alle PayPal-Einzelbewegungen werden der jeweils nächsten Abbuchung zugeordnet und als Gruppe angezeigt — mit Abgleich Netto-Summe ≈ Abbuchungsbetrag (Saldo-Check). Das macht die Sammel-Abbuchungen der Zahlungsdienstleister nachvollziehbar.

KI-Fallback für Referenz-Vorschläge

Findet die Muster-/Regex-Suche (Auftrags-/Belegnummer, tolerante Kennzeichen-Suche) keine Zuordnung, liefert ein KI-Fallback-Button Referenz-Vorschläge — inklusive Vision-Analyse des Belegbilds. Bestätigte Zuordnungen werden als generischer EntityLink gespeichert.

Steuersatz-Override

Der Steuersatz kann am Beleg direkt überschrieben werden (PurchaseDocument.taxRateId) und geht dann dem Steuersatz des Aufwandskontos vor — siehe Bestellbelege.

Die fachliche **Prüfung/Freigabe** eingehender Rechnungen läuft seit Juni 2026 über das eigene **Belegfreigabe-Cockpit** (Freigabe ≠ Verbuchung). Im Transaktions-Cockpit erfolgt die **Verbuchung**. Die frühere eigenständige Seite **Buchungsmuster** (`/booking-patterns`) ist entfallen; die Muster-Lernlogik wirkt weiterhin automatisch hier im Cockpit.

Filter & Anzeige — kleinere Verbesserungen

  • Zahlungskonto-Filter: Ein zusätzliches Dropdown „Zahlungskonto" (paymentAccountId) filtert die Queue auf Transaktionen eines bestimmten Kontos (Quelle oder Ziel). Die Auswahl wird aus den geladenen Transaktionen abgeleitet; Default ist „Alle Zahlungskonten". Das Filter zählt zur Anzahl aktiver Filter.
  • Positions-Zähler im Matching-Panel: Neben dem Label „Matching-Vorschlag" zeigt ein dezenter Zähler die Position in der gefilterten Liste (z. B. 7/15).
  • EUR-Gegenwert bei Fremdwährung: Ist eine Transaktion nicht in EUR und liegt ein amountEur vor, wird der EUR-Gegenwert in Klammern hinter dem Originalbetrag angezeigt (in Liste und Buchungsbereich).

Workflows und Zustände

Schritt-für-Schritt — typischer Arbeitstag

  1. Cockpit öffnen (/transaction-cockpit), KPI-Tab Vorschläge wählen.
  2. Erste Transaktion anklicken — Action-Panel füllt sich mit Score, Konto-Vorschlag und KI-Begründung.
  3. Plausibilität prüfen — passt das SKR-Konto, ist der Steuersatz richtig, gibt es einen Beleg?
    • Beleg-Icon leer → noch hochladen (entweder vorher im Pleo-Workflow oder im Transaktions-Detail unter Dokumente).
    • Auftrag fehlt → in der Manual-Section nachtragen oder neu klassifizieren.
  4. Bestätigen & Buchen → Allocation wird gebucht (AccountEntries erzeugt), Status wechselt auf „Gebucht ✓".
  5. Nächste Transaktion. Wer schnell ist, schafft 30–50 Tx in einer Sitzung.

Schwierige Fälle → Überspringen und später mit Buchhaltungs-Leitung klären.

Weg 2 — Massen-Bestätigung per KI-Chat

Die KI kann Fehler machen — falsches SKR-Konto vorschlagen, einen Beleg übersehen, einen Auftrag verwechseln. Sie ist nur eine **erleichternde Hilfestellung**; die **buchhalterische Verantwortung** für jede Zuordnung liegt beim Sachbearbeiter. Vor Massen-Aktionen die Liste der zu bestätigenden Tx **immer einzeln durchgehen**, dann freigeben.

Beispiel-Prompt:

Zeige alle Pleo-Transaktionen der letzten 30 Tage mit Score ≥ 80, die noch
nicht bestätigt sind. Pro Tx: Datum, Betrag, vorgeschlagenes Konto, Score,
KI-Begründung. Ich bestätige die plausiblen, du buchst sie dann gemeinsam.

Die KI liefert die Tabelle, der User markiert die OK-Fälle, KI führt applyTransactionAllocationProposal() pro Eintrag aus. Risiko-Tx bleiben offen für die manuelle Sichtung.

Verknüpfungen zu anderen Modulen

  • Transaktionen — Datenbasis (matchingStatus, hasReceipt).
  • Transaktions-Zuordnungen — Allocation-Modell + API-Details.
  • KI-Allocation-Engine — wie der Score zustande kommt.
  • Belegfreigabe-Cockpit — fachliche Prüfung/Freigabe eingehender Rechnungen (eigener Schritt vor der Verbuchung).
  • Buchungsmuster — pro Gegenpartei gelernte Konto-/Steuer-Zuordnungen, die den KI-Vorschlag boosten (Lernlogik aktiv; eigene Seite seit Cockpit 2.0 entfallen).
  • Buchhaltungskonten — Pflicht-Filter (Sidebar).
  • Match-Vorschläge — paralleler Workflow für Offene-Posten-Ausgleich (Debitor/Kreditor), nicht für SKR-Kontierung.
  • Konten-Buchungen — werden von der Buchungs-Logik erzeugt.

Listenansicht — transaction-cockpit

Eingangsrechnungen vs. Transaktionen — der Unterschied

AspektTransaktionEingangsrechnung
Abschluss-AktionBestätigen & BuchenFreigeben
Backendallocation-proposal/apply (TransactionAllocation)purchase-documents/:id/lock (verbucht + OpenItem)
PflichtfeldSKR-Konto oder Beleg-ZuordnungAufwandskonto
Steuersatzwählbarfolgt automatisch dem Aufwandskonto
ErgebnisKonto-Buchung der Transaktionoffener Posten in den Verbindlichkeiten

Häufige Fehler und Lösungen

FehlerLösung
Liste ist leerTx-Status booked prüfen; Konto-Filter zurücksetzen; Tab auf „Alle".
Kein KI-Vorschlag im PanelKI-Bewertung über POST /transactions/:id/ai-analyze anstoßen, dann neu laden.
„Bestätigen & Buchen" nicht klickbarBerechtigung create:TransactionAllocation fehlt, oder weder Konto noch Beleg-Zuordnung gewählt.
„Freigeben" (Eingangsrechnung) nicht möglichAufwandskonto fehlt am Beleg — erst setzen; ggf. fehlt do:LockPurchaseDocument.
Statuszeile „Beleg" rotTransaktion gebucht, aber ohne Beleg (GoBD-Warnung) — Beleg im Transaktions-Detail nachreichen.
Tx zeigt sich auch nach Bestätigung als VorschlagQuery-Cache stale — Cockpit-Reload (Toolbar-Refresh).

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/transactionsKPI- und Listen-Quelleview Transaction
GET/api/transaction-accounts?filter[isExternal]=false&filter[status]=activeSidebar-Kontenview TransactionAccount
GET/api/transactions/:id/allocation-proposalVorschlag (Score, Signals, Reasoning)view TransactionAiAssessment
POST/api/transactions/:id/allocation-proposal/apply„Bestätigen & Buchen" (forceBookAndMatch=true)create TransactionAllocation, update Transaction
POST/api/transactions/:id/ai-analyzeKonsolidierter KI-Pass (Bewerten + Klassifikation in einem Request)do AiSuggestion
POST/api/transactions/:id/ai-classifyKI nur neu klassifizierendo AiSuggestion
POST/api/transaction-allocationsManuelle Allocation anlegencreate TransactionAllocation
PATCH/api/transactions/:idÜberspringen / matchingStatus-Overrideupdate Transaction
POST/api/purchase-documents/:id/lockEingangsrechnung freigeben (verbuchen, OpenItem)do LockPurchaseDocument
GET/api/transaction-match-proposals?filter[transactionId]OP-Matching (separater Workflow)view TransactionMatchProposal
POST/api/transactions/offsetmehrere Transaktionen gegenseitig ausgleichen (Σ ≈ 0)update Transaction
GET/POST/DELETE/api/entity-linksVerknüpfungen (EntityLink) lesen/anlegen/löschen

Versionshinweise

  • 2026-06-22: Kleinere Cockpit-Verbesserungen — Zahlungskonto-Filter (paymentAccountId, Quelle oder Ziel), Positions-Zähler (index/total) im Matching-Panel und EUR-Gegenwert bei Fremdwährung (amountEur). Verifiziert an TransactionCockpitPage.tsx, TransactionConsolidatedPanel.tsx.
  • 2026-06-12 (Cockpit 2.0): rechnungsfluss-v2-Umbau dokumentiert — Pipeline-Übersicht + Kontenblätter (PartyLedger), „Ausgleichen" (POST /transactions/offset), Filter „Interne Transfers", PayPal-Settlement-Gruppierung mit Saldo-Check, KI-Referenz-Fallback (Kennzeichen-/Vision), Steuersatz-Override. Belegfreigabe ausgelagert nach /document-approval; /booking-patterns als eigene Seite entfallen. Verifiziert an TransactionCockpitPage.tsx, transaction.controller.ts (offset), entityLink.model.ts.
  • 2026-06-03 (Nacht-Drop): Cockpit auf DATEV-artiges 3-Spalten-Layout umgebaut (Warteschlange / Beleg-Vorschau / Buchungs- bzw. Freigabe-Form). Neuer Tab Eingangsrechnungen mit Freigeben/Verbuchen (IncomingInvoiceApprovalPanellockPurchaseDocument, erzeugt offenen Posten in den Verbindlichkeiten). 6-stufige Statuszeile (Belegdaten/Beleg/Konto/Steuer/Verbuchung/Zahlung, GoBD-Rot bei „gebucht ohne Beleg"). Konsolidierter KI-Pass ai-analyze (Bewerten+Klassifikation). Tastatur-Navigation (j/k/Pfeile, Auto-Advance nach Buchen). Frontmatter-Drift behoben: Route-Gate ist FE_Transaction (nicht FE_TransactionCockpit). Verifiziert an TransactionCockpitPage.tsx, CockpitStatusRow.tsx, purchaseDocument.controller.ts.
  • 2026-04-30: Initiale Veröffentlichung.
  • 2026-05-16 (Welle 129): Komplett umgebaut auf das neue Allocation-Modell. KPI-Tabs zeigen matchingStatus (unmatched/proposal_created/auto_matched/manually_matched/skipped); Action-Panel nutzt AiClassificationCard mit Score-Engine, Signal-Breakdown, KI-Reasoning + Confidence; „Bestätigen & Buchen" löst forceBookAndMatch=true aus; Beleg-Icon-Spalte mit hasReceipt-Virtual-Field; ManualAllocationSection für Workorder/Purchase/Sales-Document-Zuordnung mit unterschiedlicher Konto-Pflicht; RefLink-Icons öffnen Ziel-Modul im neuen Tab.