B2B-Shop mit Odoo: Preislisten, Kundenfreigabe
Kurz gesagt
In Odoo 20.0 entscheiden Preisliste am Kontakt, Preissichtbarkeit im Shop und Kundenkonto-Zugang, welche Preise ein Geschäftskunde sieht. Für einen reinen B2B-Shop setzen Sie Produktpreise auf Exklusive Steuern, geben dem Kontakt Public User eine Null-Preisliste, schalten In den Warenkorb ausblenden in der Variante Produkte mit Preis von 0 ein und stellen das Kundenkonto auf Auf Einladung. Die Null-Preisliste allein genügt nicht: erst der Schalter verhindert, dass die Produktseite den Preis 0 anzeigt. Ohne Zuordnung greift die Standardliste der Website; die Preisangabepflichten in Deutschland, Österreich und der Schweiz gelten gegenüber Verbrauchern.
Das Wichtigste
- Preisdarstellung, Shopzugriff und Kundenkonto sind Einstellungen je Website; die Preisliste hängt am Kontakt.
- Nicht angemeldete Besucher erhalten den Preis der Liste am Kontakt Public User, sonst den der Standardliste der Website.
- Eine Preisliste lässt sich nur einer Website zuordnen; die erste Liste ohne Ländergruppe ist die Standardliste.
- Verborgene Preise brauchen zwei Bausteine: die Null-Preisliste am Kontakt Public User und In den Warenkorb ausblenden in der Variante Produkte mit Preis von 0.
- Portalzugriff vergeben Sie am Kontakt über Aktionen und Portalzugriff gewähren.
- Preisangaben gegenüber Verbrauchern: § 1 und § 6 PAngV (DE), § 1 und § 4 FAGG (AT), Art. 2 und Art. 3 PBV (CH).
Ein B2B-Shop in Odoo trennt zwei Fragen: Wer darf Preise sehen, und rechnet die Anzeige netto oder brutto. Beides hängt an Einstellungen je Website und an der Preisliste, die am Kundenkontakt steht.
Was Sie vorab brauchen
- die Apps Website und E-Commerce in Odoo 20.0 (September 2026); Enterprise auf Odoo Online, Odoo.sh oder eigener Installation, Community auf eigener Installation
- Zugriff auf Website ▸ Konfiguration ▸ Einstellungen und auf Website ▸ E-Commerce ▸ Kunden
- die Funktion Preislisten im Abschnitt E-Commerce der Website-Einstellungen
- eine Preisliste mit den Konditionen Ihrer Geschäftskunden; für verborgene Preise zusätzlich eine Liste mit Produktpreisen von 0 und die Einstellung In den Warenkorb ausblenden in der Variante Produkte mit Preis von 0
- die Entscheidung, ob der Shop nur Geschäftskunden oder auch Verbrauchern offensteht
- optional ein Formular auf der Website für Zugangsanfragen
Wer welche Preise sieht
Im Shop erscheint der Preis der jeweils greifenden Preisliste. Welche Odoo heranzieht, hängt vom Zustand des Besuchers ab.
| Besucher | Greifende Preisliste | Was erscheint |
|---|---|---|
| nicht angemeldet, keine Preisliste am Kontakt Public User | erste Liste der Website ohne Ländergruppe (Standard) | deren Preise |
| nicht angemeldet, GeoIP mit Ländergruppen in Gebrauch | Liste der Ländergruppe des Besuchers | Landespreise; dann braucht jede im Shop genutzte Liste eine Ländergruppe |
| nicht angemeldet, Null-Preisliste am Kontakt Public User | diese Null-Preisliste | Preis 0; die Produktseite zeigt ihn erst dann nicht mehr, wenn In den Warenkorb ausblenden für Produkte mit Preis von 0 eingeschaltet ist |
| angemeldet, Liste am Kontakt und der Website zugeordnet | diese Liste | Geschäftskundenpreise |
| angemeldet, ohne passende Zuordnung | Standardliste der Website | Standardpreise |
Für verborgene Preise nennt die Dokumentation zwei Bausteine, die zusammenwirken: eine Null-Preisliste, die alle Länder abdeckt, am Kontakt Public User (er steht für alle nicht angemeldeten Besucher und bleibt archiviert) und den Schalter In den Warenkorb ausblenden in der Variante Produkte mit Preis von 0. Die Null-Preisliste liefert den Preis 0; die Produktseite verschweigt ihn erst mit diesem Schalter, denn im Community-Quellcode des Moduls website_sale wird hide_price nur gesetzt, wenn der Schalter aktiv ist (prevent_sale) und der Preis 0 beträgt. Eine Preisliste lässt sich nur einer Website zuordnen; duplizieren Sie sie für getrennte Websites, und innerhalb einer Website entscheidet die Reihenfolge der Listen. Zugeordnete Listen haben Vorrang vor länderbasierten, außer die zugeordnete Liste gehört zu einer anderen Ländergruppe.
Nettopreise anzeigen, Bruttopreise für einzelne Kunden
Produktpreise anzeigen (Display Product Prices) entscheidet je Website zwischen Exklusive Steuern und Inklusive Steuern: Bei Exklusive Steuern zeigen Katalog und Produktseite den Nettopreis, die Umsatzsteuer rechnet Odoo in der Bestellübersicht. Der Hinweis auf der Produktseite heißt im Website-Editor Steuerangabe (Tax Indication).
Kunden mit Bruttopreisen bildet die Dokumentation so ab: Preise netto am Produkt speichern, eine zweite Preisliste in Bruttopreisen anlegen und eine Steuerposition (Fiscal Position), die die Nettosteuer auf eine im Preis enthaltene Steuer umstellt; Preisliste und Steuerposition stehen am Kontakt. Ihre Beispielrechnung (21 Prozent): 10,00 brutto sind 8,26 netto und 1,74 Steuer, während 8,26 netto umgerechnet 9,99 brutto ergeben.
Schritt für Schritt: B2B-Zugang und Preissichtbarkeit einrichten
Schritt 1: Preisdarstellung festlegen
Öffnen Sie Website ▸ Konfiguration ▸ Einstellungen, wählen Sie die Website und stellen Sie im Abschnitt E-Commerce unter Produktpreise anzeigen den Wert Exklusive Steuern (Tax Excluded) ein; speichern Sie.
Ergebnis: Katalog und Produktseiten zeigen Nettopreise; die Einstellung gilt je Website.
Schritt 2: Preisliste für Geschäftskunden vorbereiten
Öffnen Sie Website ▸ E-Commerce ▸ Preislisten (Pricelists) und öffnen Sie Ihre B2B-Liste oder legen Sie mit Neu eine an. Im Reiter E-Commerce wählen Sie im Feld Website die B2B-Website und schalten Auswählbar (Selectable) aus, damit Kunden im Katalog nicht auf andere Preise umschalten.
Ergebnis: Die Liste gilt für diese Website und erscheint nicht im Preislisten-Auswähler.
Schritt 3: Preisliste am Kundenkontakt hinterlegen
Öffnen Sie Website ▸ E-Commerce ▸ Kunden, wählen Sie den Kontakt und tragen Sie im Reiter Verkauf & Einkauf im Feld Preisliste (Pricelist) die B2B-Liste ein.
Ergebnis: Angebote und Aufträge dieses Kunden rechnen mit dieser Liste, und nach der Anmeldung sieht er ihre Preise. Regeln, Staffeln und Währungen beschreibt Preislisten in Odoo.
Schritt 4: Preise für Besucher verbergen
Öffnen Sie die Kundenliste, klappen Sie über das Symbol in der Suchleiste den Filter Archiviert (Archived) auf und öffnen Sie Public User. Tragen Sie im Reiter Verkauf & Einkauf eine Null-Preisliste ein, die alle Länder abdeckt, und lassen Sie den Kontakt archiviert.
Ergebnis: Nicht angemeldete Besucher erhalten den Preis 0 dieser Liste; angezeigt wird er auf der Produktseite erst dann nicht mehr, wenn Sie zusätzlich den Schalter aus Schritt 5 einschalten.
Schritt 5: Warenkorb und Kauf abschalten
Schalten Sie im Abschnitt E-Commerce „In den Warenkorb“ ausblenden (Hide Add To Cart) ein und wählen Sie im Feld Für (For) die Variante Produkte mit Preis von 0. Im Feld Link-URL steht das Ziel der Ersatzschaltfläche; Vorgabewert im Community-Quellcode des Moduls website_sale ist /contactus.
Ergebnis: Bei Produkten mit Preis 0 wird der Preis nicht angezeigt, und statt des Warenkorbs steht die Schaltfläche Kontaktieren Sie uns. Ohne diesen Schalter bleibt der Preis 0 der Null-Preisliste im Preisblock der Produktseite stehen. Keine im Shop genutzte Preisliste darf auf Auswählbar stehen, sonst lässt sich die Null-Preisliste umgehen; die Variante Spezifische Kategorien zeigt Preise gewählter Kategorien nur, wenn sie nicht 0 sind.
Schritt 6: Kundenkonto und Kassiervorgang begrenzen
Im Abschnitt Allgemein (General) stellen Sie das Kundenkonto (Customer Account) auf Auf Einladung (On invitation) und im Abschnitt E-Commerce das Anmelden/Registrieren bei Kassiervorgang (Sign in/up at checkout) auf Verpflichtend (Mandatory).
Ergebnis: Es entsteht kein Konto ohne Einladung, der Registrierungslink unter dem Anmeldeformular fehlt, und bestellt wird nur mit Konto.
Optional, als zweite Stufe: Soll nicht einmal der Katalog ohne Anmeldung sichtbar sein, stellen Sie im selben Abschnitt den E-Commerce-Zugriff (Ecommerce Access) auf Angemeldete Benutzer (Logged in users). Die Dokumentation führt diese Sperre als eigene Einstellung zur Shop-Nutzung; Vorgabe ist Alle Besucher (All users), also der offene Katalog.
Schritt 7: Zugangsanfragen einsammeln
Fügen Sie im Website-Editor ein Formular ein und wählen Sie im Feld Aktion (Action) den Wert Kunden erstellen (Create a Customer).
Ergebnis: Jede Absendung legt einen Kontakt unter Website ▸ E-Commerce ▸ Kunden an, der laut Dokumentation zuerst die erste verfügbare Preisliste erhält; prüfen Sie sie vor der Freigabe. Ein Feld vom Typ Tags mit verborgener Sichtbarkeitsregel markiert Anfragen automatisch; zur Datenlage siehe CRM-Daten in Odoo und die DSGVO.
Schritt 8: Portalzugriff vergeben
Öffnen Sie den Kontakt, klicken Sie oben links auf Aktionen (Actions) und wählen Sie Portalzugriff gewähren (Grant portal access); im Fenster Portal-Zugriffsverwaltung bestätigen Sie mit Zugriff gewähren.
Ergebnis: Der Kunde erhält eine E-Mail zum Setzen des Passworts und sieht nach der Anmeldung die Preise seiner Liste sowie seine Angebote, Aufträge und Rechnungen. Mit Zugriff widerrufen beenden Sie den Zugang wieder.
Preisangaben: für wen die Regeln gelten
Die hier geprüften Preisangaberegeln knüpfen an private Abnehmer an, nicht an Geschäftskunden. Ein Shop, in dem nur Unternehmer kaufen, fällt damit nicht in den Anwendungsbereich dieser drei Vorschriften.
| Land | Vorschrift | Anwendungsbereich |
|---|---|---|
| Deutschland | § 1 Abs. 1 und § 6 Abs. 1 PAngV | Preise von Unternehmern gegenüber Verbrauchern; im Fernabsatz zusätzlich der Hinweis, dass die Preise die Umsatzsteuer und sonstige Preisbestandteile enthalten, und die Angabe, ob Versandkosten anfallen |
| Österreich | § 1 Abs. 1 und § 4 Abs. 1 Z 4 FAGG | Fernabsatz- und Auswärtsgeschäfte zwischen Unternehmern und Verbrauchern; die vorvertragliche Information umfasst den Gesamtpreis einschließlich aller Steuern und Abgaben |
| Schweiz | Art. 2 Abs. 1 lit. a und Art. 3 Abs. 1 PBV | Angebot von Waren zum Kauf an Konsumentinnen und Konsumenten, also an Personen, die nicht für ihre gewerbliche oder berufliche Tätigkeit kaufen |
Bedient Ihr Shop auch Verbraucher, richten Sie die Preisdarstellung nach der Regel Ihres Landes ein; Einzelheiten für Deutschland stehen unter Pflichtangaben im Odoo-Shop.
So prüfen Sie das Ergebnis
- Öffnen Sie die Produktseite in einem privaten Fenster ohne Anmeldung. Steht der E-Commerce-Zugriff auf Angemeldete Benutzer, muss der Shop den Zugriff verweigern. Steht er auf Alle Besucher, darf mit Null-Preisliste am Kontakt Public User und dem Schalter In den Warenkorb ausblenden für Produkte mit Preis von 0 kein Preis erscheinen, und statt des Warenkorbs steht die Ersatzschaltfläche.
- Melden Sie sich mit einem Testkonto an, dem Sie die B2B-Liste zugewiesen haben; im Katalog muss der Preis dieser Liste stehen.
- Melden Sie sich mit einem zweiten Testkonto ohne Preisliste an: Erscheint dort der Standardpreis, greift die Standardliste der Website wie in der Tabelle beschrieben.
- Prüfen Sie am erzeugten Testauftrag das Feld Preisliste und die Bestellübersicht: Bei Exklusive Steuern bleibt der Einzelpreis netto, und die Umsatzsteuer steht als eigene Zeile.
Wenn etwas nicht klappt
| Symptom | Ursache | Abhilfe |
|---|---|---|
| Besucher sehen Preise, obwohl Sie sie verbergen wollen | Am Kontakt Public User steht keine Null-Preisliste, ihre Ländergruppe erfasst das Land des Besuchers nicht, oder In den Warenkorb ausblenden ist aus | Null-Preisliste am Kontakt Public User prüfen und bei GeoIP eine Ländergruppe mit allen Ländern hinterlegen; In den Warenkorb ausblenden mit der Variante Produkte mit Preis von 0 einschalten |
| Preise lassen sich im Katalog umschalten | Eine im Shop genutzte Preisliste ist auf Auswählbar gesetzt | Auswählbar bei allen im Shop genutzten Listen ausschalten |
| Angemeldeter Kunde sieht den Standardpreis | Seiner Preisliste fehlt die Zuordnung zur besuchten Website, oder am Kontakt steht eine andere Liste | Feld Website im Reiter E-Commerce der Liste und das Feld Preisliste am Kontakt prüfen |
| Ein Kunde kann kein Konto anlegen | Kundenkonto steht auf Auf Einladung, und es wurde kein Portalzugriff vergeben | Kontakt öffnen und über Aktionen den Portalzugriff gewähren |
| Im Shop erscheinen Bruttopreise | Produktpreise anzeigen steht auf Inklusive Steuern, oder der Kunde hat eine Bruttopreisliste samt passender Steuerposition | Einstellung der Website prüfen; bei Bruttokunden Preisliste und Steuerposition gemeinsam kontrollieren |
Wann Sie Hilfe holen sollten
Mehrere Websites, mehrere Währungen und Kunden, die teils brutto, teils netto verhandeln, verlagern die Preisfindung in die Konfiguration. Halten Sie schriftlich fest, welche Preisliste für welchen Kunden und welche Website gilt, und lassen Sie die Steuerpositionen von Ihrer Buchhaltung prüfen. Für Rabatte mit Freigabe lesen Sie Rabatte und Freigaben im Verkauf, den Erstaufbau beschreibt Odoo-Onlineshop einrichten.