Forderungen, DSO und Liquidität aus Odoo lesen
Ein Unternehmen geht nicht an fehlendem Gewinn zugrunde, sondern an fehlender Liquidität. Odoo hat alle Daten dafür — sie stehen nur nicht dort, wo man sie vermutet.
Der offene Betrag steht nicht in amount_total
Der häufigste Fehler in selbst gebauten Forderungsübersichten: Es wird amount_total summiert. Damit zählt eine Rechnung über 12.000 €, auf die bereits 11.000 € angezahlt wurden, mit 12.000 € statt mit 1.000 €. Bei Anzahlungsgeschäft ist die Übersicht dann um ein Vielfaches zu hoch.
Der offene Rest steht im Residual-Feld (amount_residual, in Unternehmenswährung amount_residual_signed). Zusätzlich filtert man auf payment_state ungleich paid und auf gebuchte Belege — Entwürfe sind keine Forderung.
Die Fälligkeitsstaffel
Eine brauchbare Staffel arbeitet mit invoice_date_due, nicht mit invoice_date. Der Unterschied ist das vereinbarte Zahlungsziel — und genau das will man ja messen.
| Bucket | Bedeutung | Übliche Reaktion |
|---|---|---|
| Nicht fällig | Läuft nach Plan | Keine |
| 1–30 Tage | Normale Zahlungsträgheit | Automatische Erinnerung |
| 31–60 Tage | Prozessproblem beim Kunden oder Reklamation | Persönlicher Anruf |
| 61–90 Tage | Wird ohne Eingriff nicht besser | Mahnstufe, Lieferstopp erwägen |
| > 90 Tage | Meist ein ungelöster Konflikt | Entscheidung: eintreiben oder abschreiben |
Wichtiger als die Summe je Bucket ist die Bewegung zwischen den Buckets. Wandert Monat für Monat derselbe Betrag eine Stufe weiter nach rechts, funktioniert das Mahnwesen nicht — auch wenn die Gesamtsumme konstant aussieht.
DSO: nützlich, wenn man weiß, welche Variante man rechnet
Days Sales Outstanding beantwortet: Wie lange dauert es im Schnitt, bis eine Rechnung bezahlt wird? Die einfache Formel lautet: offene Forderungen geteilt durch Umsatz im Zeitraum, mal Anzahl Tage.
DSO = (offene Forderungen / Nettoumsatz im Zeitraum) × Tage im ZeitraumDrei Dinge machen diese Zahl regelmäßig unbrauchbar:
- Zu kurzer Zeitraum. Bei einem Monat kippt der DSO mit jeder Großrechnung. Ein Quartal oder zwölf Monate sind stabiler.
- Abgeschriebene Forderungen bleiben drin. Eine seit zwei Jahren offene, faktisch verlorene Rechnung treibt den DSO dauerhaft nach oben und lässt gute Monate schlecht aussehen.
- Umsatz brutto gegen Forderungen brutto. Wer den Umsatz netto und die Forderungen inklusive Steuer rechnet, bekommt einen um rund 20 % zu hohen Wert. Beide Seiten müssen dieselbe Basis haben.
Die Gegenseite nicht vergessen
Eine Forderungsübersicht ohne Verbindlichkeiten ist nur eine halbe Antwort. Dieselbe Abfrage mit in_invoice liefert die offenen Lieferantenrechnungen. Erst die Differenz — und ihre zeitliche Verteilung — ergibt eine Aussage über die kommenden Wochen.
Eine praktikable Vorschau: fällige Eingänge je Woche aus den Forderungen, fällige Ausgänge je Woche aus den Verbindlichkeiten, dazu der Bankbestand als Startwert. Das ist keine Finanzplanung, aber es beantwortet die Frage „reicht es bis Ende September“ mit Daten statt mit Bauchgefühl.
Was Odoo nicht weiß
Odoo kennt das vereinbarte Zahlungsziel, nicht das tatsächliche Zahlungsverhalten des Kunden. Ein Kunde mit 30 Tagen Ziel, der immer nach 55 Tagen zahlt, taucht in jeder Prognose 25 Tage zu früh auf. Wer das ausgleichen will, rechnet je Kunde die durchschnittliche Differenz zwischen Fälligkeit und Zahlungseingang aus der Historie und verschiebt die Prognose entsprechend.
Die wertvollste Zahl im Forderungsmanagement ist nicht die Summe, sondern der Name des Kunden mit dem ältesten offenen Posten.
Im Executive Board sind Liquidität, überfällige Forderungen und offene Verbindlichkeiten drei der vierzehn wählbaren Kennzahlen — jeweils mit Kennzeichnung, ob sie dem gewählten Zeitraum folgen oder den Stand von jetzt zeigen.
Weiterlesen
- Warum Ihr Odoo-Umsatz nicht zur GuV passt
Fast jede selbst gebaute Umsatzauswertung in Odoo liegt unter der GuV. Der Grund sind Buchungen ohne Rechnung — und der Filter, der sie unsichtbar macht.
- Fünf Kennzahlen, die eine Geschäftsführung wöchentlich braucht
Nicht vierzig Kennzahlen, sondern fünf — und für jede die Frage, die sie beantwortet, die Grenze, ab der sie unangenehm wird, und wo sie in Odoo steht.