DE · AT · CHRatgeber

Lagerbuchungen in Odoo: Welche Konten Bewegungen bewegen

Aktualisiert:

Gilt für: Odoo 20.0; App Lager in Community und Enterprise, App Buchhaltung laut Editionsseite nur Enterprise; Online/Sh/On-Premise; Community-Lokalisierung DE, AT, CH

Kurz gesagt

Wareneingang und Kundenlieferung erzeugen in Odoo 20 keine eigene Buchung: Die App Lager bewertet den Bestand sofort, die App Buchhaltung zieht mit der Lieferanten- oder Kundenrechnung (Fortlaufend, Perpetual) oder erst in der Schlussbuchung (Periodisch, Periodic) nach. Sofort bucht Odoo Ausschuss, Bestandsaufnahme und Fertigung nur, wenn angelsächsische Rechnungslegung, die Methode Fortlaufend und ein Konto am Ausschuss- oder Produktionslagerort zusammenkommen; die Vorgabekonten für Deutschland, Österreich und die Schweiz stehen im öffentlichen Quellcode der Community-Lokalisierungen (Zweig 20.0), und die Dokumentation nennt das Variationskonto ein lokalisierungsspezifisches Konto der kontinentalen periodischen Einrichtung. Die Schlussbuchung gleicht das Bestandskonto an den Lagerwert an und gliedert in der kontinentalen fortlaufenden Einrichtung den Bestandszuwachs der Periode zwischen Aufwandskonto und Variationskonto um.

Das Wichtigste

  • Die App Lager bewertet jede erledigte Bewegung sofort, unabhängig davon, ob dazu eine Buchung existiert.
  • In der kontinentalen Rechnungslegung erzeugen Wareneingang und Lieferung in Odoo 20 selbst keine Buchung; der Lagerwert ändert sich trotzdem.
  • Periodisch bucht die Lieferantenrechnung als Aufwand, Fortlaufend als Bestand.
  • Seit Odoo 19 bucht Fortlaufend auf der Ebene der Rechnung; bis Odoo 18 entstand je Bewegung eine Buchung.
  • Die Schlussbuchung aus Prüfung ‣ Bestandsbewertung gleicht das Bestandskonto an den Lagerwert an; in der kontinentalen fortlaufenden Einrichtung gliedert sie zusätzlich den Bestandszuwachs der Periode zwischen Aufwandskonto und Variationskonto um.
  • Die App Lager steht laut Editionsseite in Community und Enterprise, die App Buchhaltung nur in der Spalte Enterprise; die Vorgabekonten der Lokalisierungen für Deutschland, Österreich und die Schweiz stehen im öffentlichen Quellcode der Community-Lokalisierungen (Zweig 20.0).

Wareneingang und Kundenlieferung ändern in Odoo 20 sofort Menge und Wert im Lager, aber kein Konto. Die Buchhaltung folgt später: mit der Lieferanten- oder Kundenrechnung oder erst in der Schlussbuchung. Welche Konten dabei bewegt werden, hängt an den Einstellungen für Rechnungslegung und Bewertungszeitpunkt; für Ausschuss und Fertigung kommt ein Konto am Lagerort hinzu.

Wann eine Buchung entsteht

Der Bewertungszeitpunkt steht in der App Buchhaltung unter Buchhaltung ‣ Konfiguration ‣ Einstellungen im Abschnitt Bestandsbewertung (Inventory Valuation). Periodisch (Periodic (at closing)) bucht erst im Abschluss, Fortlaufend (Perpetual (at invoicing)) mit der Rechnung. Die App Lager bewertet dagegen laufend und unabhängig davon, ob zu einer Bewegung schon eine Buchung existiert; die Differenz zwischen Lagerwert und Buchwert zeigt die App Buchhaltung als Bestandsabweichung (Stock Variation).

Davon getrennt steht die Rechnungslegung. Odoo beschreibt zwei Praktiken: In der kontinentalen Rechnungslegung wird der Wareneinsatz mit der Lieferantenrechnung Aufwand, in der angelsächsischen Buchhaltung erst mit der Kundenrechnung als Wareneinsatz erfasst. Für die kontinentale Rechnungslegung ist keine Umstellung nötig: Die Community-Lokalisierungen für Deutschland, Österreich und die Schweiz legen ein Bestandskonto an (Vorgabe aus dem öffentlichen Quellcode, Zweig 20.0), und das Feld für angelsächsische Buchhaltung ist im Modul account ohne Vorgabewert angelegt.

Bis Odoo 18 buchte die fortlaufende Methode jede Lagerbewegung. Seit Odoo 19 wirkt sie laut Dokumentation auf der Ebene der Rechnung, und die Schlussbuchung gleicht den Rest aus; die früheren Zwischenkonten für Wareneingang und Warenausgang verwendet Odoo seitdem nicht mehr. In der kontinentalen fortlaufenden Einrichtung tut diese Schlussbuchung mehr als ausgleichen: Sie gliedert den Bestandszuwachs der Periode zwischen dem Aufwandskonto und dem Variationskonto um.

Welche Buchung welche Bewegung auslöst

Die folgende Tabelle zeigt für die kontinentale Rechnungslegung, welche Buchung ein Vorgang auslöst. Konten sind als Rolle genannt, weil der Kontenrahmen die Nummern bestimmt. Die Steuerzeilen von Rechnungen und Gutschriften bleiben außen vor; sie richten sich nach den am Produkt hinterlegten Steuern und haben mit der Bewegung nichts zu tun.

Bewegung Periodisch (bei Abschluss) Fortlaufend (bei Rechnungsstellung)
Wareneingang aus einer Bestellung keine Buchung keine Buchung
Lieferantenrechnung Soll Aufwandskonto Wareneingang, Haben Verbindlichkeiten Soll Bestandskonto, Haben Verbindlichkeiten
Umlagerung zwischen zwei internen Lagerorten keine Buchung, keine Wertänderung keine Buchung, keine Wertänderung
Lieferung an den Kunden keine Buchung keine Buchung
Kundenrechnung Soll Forderungen, Haben Erlöse Soll Forderungen, Haben Erlöse; zusätzlich Soll Aufwandskonto Wareneinsatz, Haben Bestandskonto
Fertigungsauftrag keine Buchung; mit Konto am Produktionslagerort eigene Zeile in der Schlussbuchung in der kontinentalen Einrichtung keine Buchung; sofort bucht nur die angelsächsische, fortlaufende Einrichtung mit Konto am Lagerort
Ausschuss und Bestandsaufnahme keine Buchung; mit Konto am Lagerort Bestandsschwund eigene Zeile in der Schlussbuchung in der kontinentalen Einrichtung keine Buchung; sofort bucht nur die angelsächsische, fortlaufende Einrichtung mit Konto am Lagerort
Schlussbuchung Bestandsbewertung Soll oder Haben Bestandskonto gegen Variationskonto Soll oder Haben Bestandskonto gegen Aufwandskonto, wenn Buchwert und Lagerwert auseinanderliegen; zusätzlich Soll oder Haben Aufwandskonto gegen Variationskonto für den Bestandszuwachs der Periode

Der Blickfang der Tabelle sind die leeren Zellen: Weder der Wareneingang aus einer Bestellung noch die Lieferung an den Kunden berühren ein Konto. Die Zeilen zu Fertigung, Ausschuss und Bestandsaufnahme bleiben in der kontinentalen Rechnungslegung leer, solange kein Konto am betreffenden Lagerort hängt; mit Konto erscheinen sie getrennt in der Schlussbuchung. Sofort, also bei der Bewegung selbst, bucht Odoo nur in der angelsächsischen, fortlaufenden Einrichtung mit einem Konto am Lagerort (nächster Abschnitt).

Wann Odoo doch je Bewegung bucht

Eine Buchung unmittelbar bei der Bewegung entsteht nur, wenn drei Bedingungen zusammenkommen: angelsächsische Rechnungslegung, die Methode Fortlaufend (Perpetual) und ein Konto am betreffenden Lagerort. Für Ausschuss und Bestandsaufnahme ist das der Lagerort Bestandsschwund (Inventory Loss): Ist dort ein Konto gesetzt, bucht Odoo den Wert laut Dokumentation sofort in Echtzeit, sobald die Bewegung abgeschlossen ist. Beim Fertigungsauftrag ist es der Lagerort Produktion mit dem Konto Produktionskosten (Cost of Production): Dann sind Bestandskonto und Produktionskostenkonto die Gegenkonten, sobald der Auftrag validiert wird. Der Wert des Fertigprodukts besteht aus den bewerteten Komponenten plus den Kosten der Arbeitsgänge.

In der kontinentalen Rechnungslegung bleiben Ausschuss, Fertigung und Bestandsaufnahme in der Schlussbuchung; der Bericht weist den Schwund dort getrennt aus, wenn am Lagerort ein Konto hinterlegt ist.

Beispielrechnung: Wareneingang, Lieferung, Abschluss

Beispielrechnung mit erfundenen Beträgen, netto und ohne Steuern, aus einem Geschäftsjahr ohne Anfangsbestand. Ein Händler kauft 100 Stück zu 5,00 € ein und verkauft 60 Stück zum Nettoverkaufspreis von 900,00 €.

Schritt Periodisch (bei Abschluss) Fortlaufend (bei Rechnungsstellung)
Wareneingang 100 Stück keine Buchung keine Buchung
Lieferantenrechnung 500,00 € Soll Wareneingang 500,00 €, Haben Verbindlichkeiten 500,00 € Soll Bestand 500,00 €, Haben Verbindlichkeiten 500,00 €
Lieferung 60 Stück keine Buchung keine Buchung
Kundenrechnung 900,00 € Soll Forderungen 900,00 €, Haben Erlöse 900,00 € zusätzlich Soll Wareneinsatz 300,00 €, Haben Bestand 300,00 €
Schlussbuchung bei 40 Stück Bestand Soll Bestand 200,00 €, Haben Bestandsveränderung 200,00 € Soll Wareneinsatz 200,00 €, Haben Bestandsveränderung 200,00 € (Umgliederung; das Bestandskonto bleibt bei 200,00 €)

Bei Periodisch stehen die 500,00 € als Aufwand, und dem Aufwand steht kein Bestand gegenüber; die Schlussbuchung holt den Endbestand von 200,00 € (40 × 5,00 €) als Aktivum herein und stellt ihm 200,00 € Bestandsveränderung gegenüber. Als Wareneinsatz bleiben 500,00 € − 200,00 € = 300,00 €, der Wert der verkauften 60 Stück.

Bei Fortlaufend hat die Lieferantenrechnung den Bestand auf 500,00 € gestellt, und die Kundenrechnung hat 300,00 € Wareneinsatz gegen den Bestand gebucht. Das Bestandskonto steht damit wie der Lagerwert bei 200,00 €, und die Schlussbuchung ändert es nicht. Sie gliedert aber die 200,00 € Bestandszuwachs um: Soll Wareneinsatz 200,00 €, Haben Bestandsveränderung 200,00 €. Danach stehen dem Aufwand von 500,00 € für den Einkauf 200,00 € Bestandsveränderung gegenüber, sodass als Wareneinsatz der Periode 300,00 € bleiben, der Wert der verkauften 60 Stück — dieselbe Zahl wie bei Periodisch. Erfassen Sie zusätzlich Ausschuss oder eine Inventurdifferenz, weicht der Lagerwert vom Bestandskonto ab, und die Schlussbuchung gleicht den Unterschied über das Aufwandskonto aus.

Vorgabekonten der Community-Lokalisierungen

Das Variationskonto hängt am Bestandskonto; in der fortlaufenden kontinentalen Einrichtung hängt dort zusätzlich das Aufwandskonto für den Wareneinsatz. Beide sind die Gegenkonten der Schlussbuchung. Die Dokumentation 20.0 beschreibt diese Rolle, nennt aber keine Kontonummern; die folgende Tabelle gibt deshalb die Vorgabekonten aus dem öffentlichen Quellcode der Community-Lokalisierungen im Zweig 20.0 wieder. Prüfen Sie die Werte in Ihrer Datenbank.

Lokalisierung Bestandskonto Aufwandskonto (Wareneinsatz) Variationskonto
Deutschland SKR03 7200 Waren (Inventar) 3000 Roh-, Hilfs- und Betriebsstoffe 3955 Bestandsveränderungen Roh-, Hilfs- und Betriebsstoffe
Deutschland SKR04 1000 Roh-, Hilfs- und Betriebsstoffe 5000 Aufwendungen für Roh-, Hilfs- und Betriebsstoffe und für bezogene Waren 5880 Bestandsveränderungen Roh-, Hilfs- und Betriebsstoffe sowie bezogene Waren
Österreich 1600 Handelswaren 5010 Wareneinkauf 20 % (Bezeichnung des Kontenrahmens, keine Aussage zum Umsatzsteuersatz) 5880 Bestandsveränderung - Rohstoffe
Schweiz 1210 Rohstoffe 4000 Materialaufwand Produktion 4801 Änderung der Rohstoffvorräte

Läuft die Datenbank mit einem anderen Kontenplan, sind die Nummern andere, die Rollen bleiben gleich.

Typische Fehler

  • Buchung je Wareneingang erwarten: Bis Odoo 18 war das so; seit Odoo 19 kommt der Zugang mit der Lieferantenrechnung oder im Abschluss.
  • Sofortbuchung beim Ausschuss erwarten, obwohl ein Konto am Lagerort, die Methode Fortlaufend oder die angelsächsische Rechnungslegung fehlt: Der Schwund bleibt dann in der Schlussbuchung.
  • Steuerzeilen in der Bewegungstabelle suchen: Steuerzeilen stammen aus der Rechnung oder Gutschrift und folgen der am Produkt hinterlegten Steuer; mit der Lagerbewegung haben sie nichts zu tun.
  • Die Schlussbuchung für optional halten: In der periodischen Einrichtung entsteht der Buchwert des Bestands erst mit ihr, und in der fortlaufenden kontinentalen Einrichtung gliedert sie den Bestandszuwachs zwischen Aufwandskonto und Variationskonto um.

So gehen Sie vor

  1. Prüfen Sie unter Buchhaltung ‣ Konfiguration ‣ Einstellungen im Abschnitt Bestandsbewertung, ob Periodisch oder Fortlaufend eingestellt ist.
  2. Prüfen Sie am Bestandskonto das Aufwandskonto und das Variationskonto; die Community-Lokalisierungen für DE, AT und CH füllen beide vor (Vorgaben aus dem öffentlichen Quellcode, Zweig 20.0).
  3. Legen Sie fest, ob Ausschuss und Fertigung sofort gebucht werden sollen; dafür braucht es angelsächsische Rechnungslegung, die Methode Fortlaufend und ein Konto am betreffenden Lagerort.
  4. Buchen Sie Wareneingang, Lieferantenrechnung und Lieferung in einer Testdatenbank und vergleichen Sie unter Buchhaltung ‣ Prüfung ‣ Bestandsbewertung Anfangswert, Bestandsabweichung und Endbestand.
  5. Gleichen Sie zum Periodenende Prüfung ‣ Bestandsbewertung und den Bericht Lager ‣ Berichtswesen ‣ Bestand ab und erzeugen Sie die Schlussbuchung; in der fortlaufenden kontinentalen Einrichtung gehört die Umgliederung zwischen Aufwandskonto und Variationskonto dazu. Wie Odoo den Bestand bewertet, steht unter Lagerbewertung in Odoo; die Wahl zwischen den Rechnungslegungen behandelt Kontinental oder angelsächsisch buchen, die Zählung Inventur in Odoo.

Häufige Fragen

Warum steht zu meinem Wareneingang keine Buchung im Journal?

Weil Odoo 20 den Wareneingang nur im Lager bewertet. Der Wert kommt in die Bücher, sobald die Lieferantenrechnung gebucht wird (Fortlaufend) oder mit der Schlussbuchung (Periodisch). In Odoo 18 und früher entstand je Bewegung eine Buchung über Zwischenkonten; diese Konten verwendet Odoo seit 19 nicht mehr.

Bucht Odoo den Wareneinsatz bei jeder Lieferung?

Nein. Die validierte Lieferung mindert den Lagerwert, aber kein Konto. In der kontinentalen Rechnungslegung bucht bei Fortlaufend die Kundenrechnung den Wareneinsatz gegen das Bestandskonto, bei Periodisch erst die Schlussbuchung; bei Fortlaufend gliedert die Schlussbuchung zusätzlich den Bestandszuwachs der Periode zwischen Aufwandskonto und Variationskonto um. Eine Lieferung ohne Rechnung ändert am Bestandskonto nichts.

Wie bekomme ich den Ausschuss sofort gebucht?

Dazu müssen drei Bedingungen zusammenkommen: angelsächsische Rechnungslegung, die Methode Fortlaufend (Perpetual) und ein Konto am Lagerort Bestandsschwund (Inventory Loss). Dann schreibt Odoo den Wert laut Dokumentation in Echtzeit fort, sobald die Bewegung abgeschlossen ist. In der kontinentalen Rechnungslegung erscheint der Schwund stattdessen in der Schlussbuchung, getrennt von der übrigen Bestandsveränderung.

Wozu dient das Variationskonto?

Es ist das Gegenkonto für die Bestandsänderung einer Periode und hängt am Bestandskonto; die Dokumentation nennt es ein lokalisierungsspezifisches Konto der kontinentalen periodischen Einrichtung. Die Community-Lokalisierungen für Deutschland, Österreich und die Schweiz legen es mit an, zum Beispiel SKR03 mit Konto 3955 (Vorgabe aus dem öffentlichen Quellcode, Zweig 20.0). Fehlt es, bucht der Ausgleich des Bestandskontos gegen das Aufwandskonto des Unternehmens, und in der fortlaufenden kontinentalen Einrichtung entfällt die Umgliederung zwischen Aufwandskonto und Variationskonto.

Gilt das auch in Odoo Online und Odoo.sh?

Die Bewertung selbst ist nicht hosting-abhängig; in den am 14. Oktober 2026 geöffneten Dokumentationsseiten haben wir dazu keine Einschränkung gefunden. Unterschiede betreffen die Edition: Die App Lager steht laut Editionsseite in Community und Enterprise, die App Buchhaltung (Accounting) nur in der Spalte Enterprise; der Menüpfad Prüfung gehört zur App Buchhaltung.

Quellen

  1. Valuation cheat sheet (Odoo 20.0): Costing Methods, Inventory vs Accounting, Accounting Methods, Accounting Entries, Journal Entries Configuration, Changes in Odoo 19Odoo S.A., Dokumentation · abgerufen am
  2. Berechnungsmodell der Dokumentation 20.0 zum Valuation cheat sheet (VALUATION_ENTRIES, VALUATION_REVIEWS, VALUATION_JOURNALS): Buchungen je Vorgang und Abschlusszeilen der kontinentalen periodischen und fortlaufenden EinrichtungOdoo S.A., Dokumentation · abgerufen am
  3. Valuation of stock movements and inventory operations (Odoo 20.0): Wertwirkung von Zu- und Abgängen, internen Transfers, Bestandskorrekturen und KostensatzänderungenOdoo S.A., Dokumentation · abgerufen am
  4. Inventory valuation (Odoo 20.0): Accounting standards, Einstellungen unter Accounting ‣ Configuration ‣ Settings, Valuation methods, Valuation account, Variation account, Inventory Loss, Cost of Production, Inventory Valuation report, Stock closing entry, Accrual entriesOdoo S.A., Dokumentation · abgerufen am
  5. Compare Editions: Community und Enterprise, Zeilen Accounting, Invoicing und InventoryOdoo S.A. · abgerufen am
  6. Release Notes: Version 20, veröffentlicht September 2026Odoo S.A. · abgerufen am
  7. Vorgabekonten der deutschen Lokalisierung SKR03: account_stock_valuation_id, account_stock_expense_id, account_stock_variation_id, Zweig 20.0Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  8. Kontenbezeichnungen des deutschen Kontenrahmens SKR03, Zweig 20.0Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  9. Vorgabekonten der deutschen Lokalisierung SKR04: account_stock_valuation_id, account_stock_expense_id, account_stock_variation_id, Zweig 20.0Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  10. Kontenbezeichnungen des deutschen Kontenrahmens SKR04, Zweig 20.0Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  11. Vorgabekonten der österreichischen Lokalisierung: account_stock_valuation_id, account_stock_expense_id, account_stock_variation_id, Zweig 20.0Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  12. Kontenbezeichnungen des österreichischen Kontenrahmens, Zweig 20.0Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  13. Vorgabekonten der schweizerischen Lokalisierung: account_stock_valuation_id, account_stock_expense_id, account_stock_variation_id, Zweig 20.0Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  14. Kontenbezeichnungen des schweizerischen Kontenrahmens, Zweig 20.0Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  15. Feld anglo_saxon_accounting im Modul account, ohne Vorgabewert angelegt, Zweig 20.0Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  16. Abschlussbuchung der Lagerbewertung im Modul account, Zweig 20.0 (_get_stock_valuation_account_vals, _get_continental_realtime_variation_vals: Umgliederung Aufwandskonto gegen Variationskonto)Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  17. Deutsche Übersetzung des Moduls account, Zweig 20.0 (Oberflächennamen: Buchhaltung, Einstellungen, Prüfung, Bestandsbewertung; Fortlaufend und Periodisch aus dem Hilfetext zur Bewertungsmethode)Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  18. Deutsche Übersetzung des Moduls stock, Zweig 20.0 (Lager, Bestand, Berichtswesen, Bestandsschwund)Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  19. Deutsche Übersetzung des Moduls stock_account, Zweig 20.0 (Bestandsbewertungskonto, Kalkulationsverfahren, Produktionskosten)Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am