Offene Posten aus der Bank statt aus dem Häkchen: 1 725 auf 802

Wie ein Abgleich gegen die Kontoauszüge die Liste offener Lieferantenrechnungen wieder brauchbar macht – für Geschäftsführung und kaufmännische Leitung

· 4 Min. · Buchhaltung, Automatisierung, PostgreSQL, Praxisbericht

Offene Posten sind nur so richtig wie der Vermerk, der sie schließt. In einem Kundenprojekt galt eine Lieferantenrechnung als offen, solange in der Buchhaltungssoftware niemand die Zahlung abgehakt hatte. Wir haben die Liste gegen die Kontoauszüge abgeglichen statt gegen das Häkchen: Aus 1 725 offenen Positionen wurden 802, jede Änderung mit Beleg.

Offene Posten, die längst bezahlt waren

Die Ausgangslage kennt fast jede kaufmännische Leitung. Die Liste der offenen Lieferantenrechnungen ist lang, ein großer Teil steht als überfällig da, und die Buchhaltung sagt: Das meiste ist bezahlt, es ist nur nicht markiert. Beide Aussagen können gleichzeitig stimmen. Die Überweisung ist raus, der Vermerk im System fehlt.

Das Problem ist nicht der fehlende Vermerk, sondern was aus ihm folgt. Einer Liste, der niemand glaubt, folgt auch niemand. Wer wissen will, was das Unternehmen tatsächlich schuldet, fragt dann nicht das System, sondern eine Person – und die rechnet in einer eigenen Tabelle nach. Die Mahnung eines Lieferanten lässt sich nicht mehr von einer Altlast unterscheiden, und jede Liquiditätsplanung beginnt mit einer Schätzung.

Den Vermerk einfach nachzutragen, klingt nach der naheliegenden Lösung. Bei vielen hundert Positionen heißt das: jede Rechnung einzeln im Kontoauszug suchen, Sammelüberweisungen auseinandernehmen, Teilzahlungen erkennen. Diese Arbeit ist nie dringend genug, um sie heute zu erledigen, und deshalb bleibt sie liegen.

Der Abgleich: Rechnungsnummer zuerst, dann Betrag und Gegenpartei

Ob eine Rechnung bezahlt ist, weiß am Ende nicht die Buchhaltungssoftware, sondern die Bank. Deshalb haben wir die importierten Kontoauszüge neben die Liste der offenen Rechnungen gelegt und zwei Wege der Zuordnung gebaut.

  1. Über die Rechnungsnummer. Viele Überweisungen zitieren im Verwendungszweck die Nummer der Rechnung, die sie bezahlen, oft mehrere in einer Sammelüberweisung. Die Nummer ist das stärkste Merkmal, das eine Zahlung tragen kann. Und gerade Sammelüberweisungen sind der Fall, an dem ein reiner Betragsvergleich scheitert: Ihr Betrag passt zu keiner einzelnen Rechnung.
  2. Über Betrag, Währung, Datum und Gegenpartei. Fehlt die Nummer, bleibt die Kombination der übrigen Merkmale. Sie ist schwächer, weil derselbe Betrag beim selben Lieferanten mehrfach vorkommen kann.

Eine Regel stand vor der ersten Zeile Code fest: Ein Treffer schließt keine Rechnung automatisch. Er landet in einem eigenen Bereich mit dem Hinweis, dass die Position nach einer Bankzahlung aussieht, und entschieden wird von Hand. Doppelt erfasste Rechnungen werden sichtbar markiert, nicht stillschweigend ausgeblendet. Wie ein Zahlungsabgleich grundsätzlich aufgebaut ist, erklärt das Lexikon.

Von 1 725 auf 802 offene Posten

Nach dem Abgleich waren 1 268 Zahlungen ihren Rechnungen zugeordnet, 1 051 davon über die Rechnungsnummer im Verwendungszweck. Die Liste ging von 1 725 auf 802 Positionen zurück. Keine Position ist dabei verschwunden, ohne dass eine Zahlung dahintersteht, die man aufrufen kann.

Wichtiger als die kleinere Zahl ist, was die verbleibenden Positionen jetzt bedeuten. Ein offener Posten ist wieder eine Frage an die Buchhaltung und keine Vermutung. Die Ansicht trennt außerdem überfällige Rechnungen von denen, die in dieser Woche fällig werden. Positionen, die jünger sind als der letzte importierte Kontoauszug, stehen als „nicht prüfbar“ da, statt als Schuld geführt zu werden. Für die Buchhaltung lässt sich die Liste als Excel-Datei ausgeben.

Warum 0,4 Sekunden mehr sind als Komfort

Der Abgleich brauchte anfangs 12,3 Sekunden, nach der Überarbeitung 0,4 Sekunden. Für einen einzelnen Lauf ist beides erträglich. Der Unterschied liegt darin, wie ein Abgleich benutzt wird.

Ein Abgleich, auf den man warten muss, wird zum Termin: Man startet ihn bewusst und selten, und dazwischen veraltet sein Ergebnis. Ein Abgleich unter einer Sekunde kann nach jedem Import eines Kontoauszugs laufen und beim Öffnen der Liste gleich mit. Dann zeigt die Liste nicht den Stand vom letzten Termin, sondern den Stand des letzten Auszugs.

Erreicht haben wir das nicht mit mehr Rechenleistung, sondern mit einem Textindex in PostgreSQL. Statt jede Zahlung mit jeder Rechnung zu vergleichen, findet die Datenbank die Kandidaten direkt über Bruchstücke der Rechnungsnummer im Verwendungszweck – auch dann, wenn die Nummer dort mit anderen Zeichen oder in anderer Schreibweise steht.

Was von Hand bleibt: Zahlungen ohne Rechnungsnummer

Die Grenze des Verfahrens liegt in den Zahlungen selbst. Überweisungen ohne Rechnungsnummer im Verwendungszweck lassen sich nur über Betrag, Datum und Gegenpartei zuordnen, und diese Kombination ist mehrdeutig: Zwei gleich hohe Rechnungen desselben Lieferanten im selben Monat sehen für den Abgleich identisch aus. Hier schlägt das System vor, entscheiden muss ein Mensch. Das ist Absicht und kein Rückstand, denn eine fälschlich geschlossene Rechnung richtet mehr Schaden an als eine, die noch offen steht.

Dasselbe gilt für Gutschriften, die mit Rechnungen verrechnet werden, und für Zahlungen über ein Konto, dessen Auszüge nicht importiert sind. Beides sieht der Abgleich nicht, und er behauptet es auch nicht.

Die wirksamste Maßnahme gegen diesen Rest liegt deshalb außerhalb der Software: in der eigenen Zahlungsfreigabe darauf achten, dass die Rechnungsnummer im Verwendungszweck steht. Jede Zahlung mit Nummer ist eine, die später niemand suchen muss.

So bauen wir solche Abgleiche in der Prozessautomatisierung: Die Bank ist die Quelle für „bezahlt“, ein Treffer ist ein Vorschlag mit Beleg, bis ein Mensch ihn bestätigt, und was als zugeordnet, offen oder nicht prüfbar gilt, legen wir vor dem Start gemeinsam mit der Buchhaltung fest.

Weitere Beiträge

Welcher Ablauf soll künftig ohne Nacharbeit laufen?

Beschreiben Sie Ihr Vorhaben in drei bis fünf Sätzen. Wir melden uns mit einem Terminvorschlag und sagen im Gespräch, was möglich ist.

Termin vereinbaren