Einkaufspreis vor dem Kunden verbergen: Marge sauber trennen
Einen Einkaufspreis verbirgt man, indem man ihn nie versendet — nicht, indem man ihn am Bildschirm ausblendet. Der Preis für den Kunden muss auf einem Server entstehen, aus Daten, die das Kundenkonto nicht lesen darf, und als eine einzige Zahl ankommen. Cargavo, das TMS für Speditionen und Frachtvermittler, legt Einkaufspreis und Marge in einem privaten Unterdokument ab, das nur Rollen der Spedition lesen dürfen. Eine Kundensitzung hat damit nichts, was sie inspizieren könnte.
Wie zeige ich meinem Kunden einen Preis, ohne den Einkaufspreis zu verraten?
Rechnen Sie den Verkaufspreis auf einem Server aus Frachttarifen, die das Kundenkonto nicht lesen darf, und geben Sie nur die Endzahl zurück. Der Kunde erhält einen Betrag, eine Währung und eine Angebotsnummer. Einkaufspreis, Margenregel und Tarifmatrix verlassen die Speditionsseite des Systems nie.
Die brauchbare Regel ist kurz: der Kunde bekommt ein Ergebnis, niemals eine Eingangsgröße. Ein Sofortangebot, mit dem ein Auftraggeber arbeiten kann, braucht vier Dinge — einen Gesamtpreis, eine Währung, eine Laufzeit und eine Referenz wie Q-2026-0148. Es braucht weder den Namen des Frachtführers noch den Grundfrachtsatz, weder den Prozentsatz des Dieselzuschlags noch die Marge, aus der der Preis entstanden ist.
Die meisten Speditionen machen denselben Fehler. Das Angebot entsteht in einer Excel-Datei, in der beide Preise stehen, dann wird eine Spalte gelöscht, ein Tabellenblatt ausgeblendet oder die Schrift weiß gefärbt — und die Datei geht raus. Die Zahl steht weiterhin drin. Derselbe Fehler taucht in Software wieder auf, wenn eine Angebotsmaske das vollständige Kalkulationsergebnis lädt und die Kostenfelder per Anzeigeregel ausblendet: Die Daten sind angekommen, also sind die Daten lesbar.
Die Trennung muss eine Ebene früher stattfinden — dort, wo das System entscheidet, was überhaupt gesendet wird. Daraus folgen drei konkrete Anforderungen:
- Der Preis wird serverseitig gerechnet. Tarifmatrix und Margenregeln bleiben auf dem Server; die Kundensitzung schickt Sendungsdaten und erhält einen Preis.
- Kostenfelder liegen in einem eigenen Datensatz mit eigener Leseberechtigung — nicht als versteckte Felder auf dem Datensatz, den der Kunde lesen darf.
- Jedes ausgehende Dokument entsteht aus der Kundenansicht, nie aus der internen Ansicht mit entfernten Feldern.
Cargavo, das TMS für Speditionen und Frachtvermittler, ist genau auf diese Trennung gebaut. Deshalb kann das Kundenportal Selfservice sein, ohne dass je eine Marge über die Leitung geht. Der Rest dieses Leitfadens behandelt die Lecks, die auch eine korrekte Architektur überleben: Rückrechnung aus Preisen, systematisches Abtasten des Rechners und Dokumente. Den größeren Zusammenhang liefert die Kategorie Kundenportal.
Warum ist das Verbergen der Marge ein Architekturproblem und kein Anzeigeproblem?
Margenvertraulichkeit ist ein Architekturproblem, weil alles, was ein Browser anzeigt, vorher empfangen wurde. Rechnet eine Angebotsseite den Verkaufspreis in JavaScript, dann sind Tarifmatrix und Margenregel auf den Rechner des Kunden gewandert und im Netzwerkprotokoll lesbar — unabhängig davon, was die Oberfläche am Bildschirm zeigt.
Ein Preisrechner, der im Browser läuft, muss die Zutaten im Browser haben. Das heißt: Gewichtsstaffeln, PLZ-Zonen, der Prozentsatz des Dieselzuschlags und der Margenfaktor sind über das Netz auf einen Rechner gewandert, den Sie nicht kontrollieren. Die Entwicklerwerkzeuge zu öffnen und die Antwort zu lesen dauert etwa fünfzehn Sekunden und verlangt kein technisches Wissen, das über das Nachmachen eines Screenshots hinausgeht.
Dieselbe Logik gilt für Rechte auf Datensatzebene. Angenommen, ein Angebotsdatensatz führt sellPrice, purchasePrice und marginPercent nebeneinander, und das Kundenportal zeigt nur das erste Feld an. Wenn das Kundenkonto diesen Datensatz lesen darf — und das muss es, sonst sieht es sein eigenes Angebot nicht —, darf es alle drei Felder lesen. Die Oberfläche hat zwei davon versteckt; die Berechtigung hat es nicht.
Deshalb gehört Margenvertraulichkeit ins Datenmodell und nicht ins Designsystem. Zwei strukturelle Entscheidungen tragen sie:
- Datensatz teilen. Kundensichtbare Fakten auf ein Dokument, Finanzdaten auf ein Unterdokument mit strengerer Regel.
- Nur der Server schreibt Preise. Wer clientseitig einen Preis schreiben darf, darf auch einen vorschlagen — und Sie verhandeln ab dann mit Ihrer eigenen Datenbank.
Cargavo, das TMS für Speditionen und Frachtvermittler, setzt beides um. Angebote entstehen ausschließlich über die Funktion computeQuoteServer, ein clientseitig angelegtes Angebot wird abgewiesen, und Disponenten dürfen anschließend Status und Notizen ändern, aber nie das kalkulierte Ergebnis. Einkaufspreis und Verkaufspreis stammen dabei aus demselben Preismodul — der Einkauf ist der Lauf ohne Margen, der Verkauf der Lauf mit Margen. Wie Tarif und Rechenlogik zusammenhängen, steht in Tarifmatrix oder Preismodul.
Wo müssen Einkaufspreise und Margen gespeichert werden, damit der Kunde sie nicht lesen kann?
In einem privaten Unterdokument am Angebot, mit einer eigenen Regel, die nur Rollen der Spedition Leserecht gibt. Das übergeordnete Angebot trägt Verkaufspreis, Referenz und Status; das Unterdokument trägt Einkaufspreis, Marge und die Tarifmatrix, aus der beides entstanden ist. Geschrieben wird es ausschließlich vom Server, gelesen nie vom Kundenkonto.
Konkret liegt ein Angebot in Cargavo unter organizations/{orgId}/quotes/{quoteId} und sein Finanzteil unter organizations/{orgId}/quotes/{quoteId}/private/financials. Das übergeordnete Dokument darf jede Rolle der Spedition lesen und zusätzlich genau der eine Kunde, dessen Kennung am Angebot steht. Das Unterdokument darf nur lesen, wer eine Speditionsrolle trägt, und schreiben darf es niemand — die Cloud Function, die das Angebot rechnet, schreibt es mit Serverrechten. Bei Sendungen gilt dieselbe Trennung, damit aus dem angenommenen Angebot Q-2026-0148 und der Sendung S-2026-0092 keine zweite Tür entsteht.
Über den Zugriff entscheiden Claims am Login selbst — Organisation, Rolle und bei einem Portalnutzer eine Kundenkennung — und nicht ein Filter, den der Client mitschickt. Der Unterschied trägt: Ein Filter ist eine Bitte, ein Claim ist eine Tatsache. Dazu kommt Default-Deny, damit jede Sammlung geschlossen ist, die niemand ausdrücklich geöffnet hat.
Dieselbe Trennung gilt für alles, was einen Preis erklärt: die hinterlegte Tarifmatrix, die Gewichtsstaffeln, der Satz des Dieselzuschlags und die Margenregeln je Kunde liegen unter der Organisation und nie am Angebot des Kunden. Ein Portalnutzer sieht seine eigenen Angebote und Sendungen, nicht die anderer Kunden derselben Spedition — und in keiner der sieben Währungen von EUR bis CHF eine Kostenzahl.
| Feld | Owner / Admin | Operator | Kundenportal |
|---|---|---|---|
| Verkaufspreis | ja | ja | ja |
| Angebotsnummer Q-YYYY-NNNN | ja | ja | ja |
| Laufzeit | ja | ja | ja |
| Einkaufspreis | ja | ja | nein |
| Angewendete Marge | ja | ja | nein |
| Verwendete Tarifmatrix | ja | nein | nein |
| Margenregeln je Kunde | ja | nein | nein |
Achten Sie auf die mittlere Spalte. Disponenten kalkulieren und buchen den ganzen Tag und brauchen den Einkaufspreis, um eine Akte beurteilen zu können — sie brauchen aber kein Recht, Tarife oder Kundenmargen zu ändern. Cargavo, das TMS für Speditionen und Frachtvermittler, trennt diese beiden Rechte, statt „intern“ als einen einzigen Topf zu behandeln. Die Begriffe stehen in den Glossareinträgen Einkaufspreis und Verkaufspreis.
Kann ein Kunde meine Marge aus dem angebotenen Frachtpreis zurückrechnen?
Ja, wenn Ihre Marge einheitlich ist und ein einziger Einkaufspreis durchsickert. Ein bekanntes Paar — 161,46 € eingekauft, 207,00 € verkauft — ergibt den Faktor 1,2822, den der Kunde anschließend auf jeden anderen Preis anwendet, den Sie ihm je geschickt haben.
Rechnen wir das Beispiel durch. Eine Stückgutsendung mit 780 kg frachtpflichtigem Gewicht läuft über einen Tarif vom Typ weight_zone, Zone DE-3, Staffel 500–999 kg zu 18,40 € je 100 kg.
- Grundfracht: 7,80 × 18,40 € = 143,52 €
- Indexierter Dieselzuschlag mit 12,5 %: 17,94 €
- Einkaufspreis p gesamt: 161,46 €
- Verkaufspreis bei 22 % Zielmarge, p/(1−m): 161,46 € / 0,78 = 207,00 €
Der Rohertrag beträgt 45,54 €, und 45,54 € / 207,00 € bestätigt 22,0 %. Nun nehmen wir an, eine Frachtführerrechnung erreicht den Auftraggeber — falsch adressierte E-Mail, ein Satz auf dem Frachtbrief, ein ehemaliger Mitarbeiter. Der Kunde rechnet 207,00 € / 161,46 € = 1,2822 und hat Ihren Faktor. Jedes vergangene und künftige Angebot nach derselben Regel ist damit transparent, und die nächste Preisverhandlung beginnt mit dieser Zahl.
Zwei Verteidigungslinien begrenzen den Schaden, und keine davon heißt Geheimhaltung.
Die Regel variieren. Wenn Margen je Kunde, je Tarif und je Gewichtsstaffel gesetzt sind, verrät ein geleaktes Paar eine Zelle statt des Preisbuchs. Ein Prozentsatz auf leichten Staffeln und ein fester Betrag auf schweren bricht den Faktor vollständig — die Arithmetik dazu steht in prozentuale Marge oder fester Aufschlag, gegenrechnen können Sie mit dem Margenrechner für Frachtpreise.
Das Ergebnis runden. Wer 207,00 € nennt, liefert eine bis auf den Cent teilbare Zahl. Runden Sie den Verkaufspreis auf die nächsten 5,00 € nach oben, nennen Sie 210,00 € — und das passt zu jedem echten Verkaufspreis über 205,00 € bis 210,00 €, also zu jedem Einkaufspreis zwischen 159,90 € und 163,80 €. Die exakte Kostenzahl verschwindet in einem Band von 3,90 €, und 3,00 € dieser Unschärfe bleiben als Ertrag bei Ihnen. Cargavo, das TMS für Speditionen und Frachtvermittler, wendet die konfigurierbare Rundung genau deshalb am Ende der Kalkulation an; die Margenlogik selbst steht in margensichere Kalkulation von Frachtpreisen.
Kann ein Kunde meine Tarifmatrix durch Testen des Frachtkostenrechners rekonstruieren?
Teilweise. Ein Selfservice-Rechner beantwortet beliebig viele Abfragen, also findet ein hartnäckiger Kunde die Sprungstellen und schließt auf Ihre Gewichtsstaffeln. Was Abtasten nicht liefert, sind Einkaufspreis und Marge — beide verlassen den Server nie, sichtbar wird nur die Form der Kurve.
Über dieses Risiko schreibt niemand, und es steckt im Sofortpreis selbst, nicht in einem bestimmten Produkt. Wer einem Auftraggeber einen Frachtkostenrechner gibt, gibt ihm ein Orakel: Er fragt 400 kg, dann 450 kg, dann 500 kg und beobachtet, wo der Preis springt. Innerhalb eines Nachmittags kennt er Ihre Staffelgrenzen auf dieser Relation und meldet künftig 495 kg statt 505 kg an.
Drei Dinge sollte man auseinanderhalten, denn sie sind sehr unterschiedlich vertraulich.
| Was Abtasten zeigt | Rekonstruierbar? | Wirklich vertraulich? | Reaktion |
|---|---|---|---|
| Staffelgrenzen | ja | nein | hinnehmen |
| Zonenzuschnitt | ja | nein | hinnehmen |
| Höhe des Preissprungs | ja | teilweise | Ergebnis runden |
| Name des Frachtführers | nein | ja | nicht anzeigen |
| Einkaufspreis je 100 kg | nein | ja | nur serverseitig |
| Margensatz | nein | ja | privates Unterdokument |
Die ersten beiden Zeilen sind keine Verteidigung wert. Staffelgrenzen bei 100 kg, 200 kg, 500 kg und 1.000 kg entsprechen weitgehend der Branchenkonvention, und ein Auftraggeber, der seine Palettenbildung unter einer Grenze hält, macht normale Logistikarbeit — Ihr Rechner für das frachtpflichtige Gewicht sagt ihm dasselbe ganz offen. Die letzten drei Zeilen sind das eigentliche Geheimnis, und Abtasten erreicht sie nicht, weil sie nie gesendet wurden.
Zwei praktische Sicherungen bleiben. Stellen Sie den Rechner hinter einen personalisierten Portalzugang statt auf eine offene Seite, damit jede Abfrage einem Konto zuzuordnen ist. Und zeigen Sie dem Kunden den Frachtführer nicht: Zu wissen, wer tatsächlich fährt, ist der kürzeste Weg zum Direktanruf beim Frachtführer. Cargavo, das TMS für Speditionen und Frachtvermittler, betreibt den Kundenrechner unter Ihrer eigenen Marke und hält die Auswahl des Frachtführers auf der Speditionsseite — Details im Leitfaden zum Kundenportal für Angebote.
Welche Dokumente und Dateien verraten den Einkaufspreis am häufigsten?
Weitergeleitete E-Mail-Verläufe, als Arbeitsdatei verschickte Excel-Tabellen, PDFs aus der internen Ansicht und Frachtpapiere, die mit der Ware reisen. In der Praxis hält die Architektur und der Anhang nicht: Das Leck ist fast immer eine Datei, die ein Mensch angehängt hat.
Sobald Preise serverseitig entstehen und Finanzdaten über Berechtigungen getrennt sind, ist die verbleibende Angriffsfläche vollständig menschlich und vollständig dateiförmig. Das sind die Wege, die tatsächlich vorkommen, grob nach Häufigkeit.
| Leck | Zeigt | Typische Ursache | Abhilfe |
|---|---|---|---|
| Weitergeleiteter Mailverlauf | Frachttarif | Allen antworten auf Frachtführerangebot | getrennte Verläufe |
| Excel-Arbeitsdatei | Einkauf, Verkauf, Marge | Datei statt PDF verschickt | Datei nie anhängen |
| Ausgeblendete Spalte oder Blatt | Einkaufspreis | ausgeblendet statt gelöscht | nur Werte exportieren |
| PDF aus interner Ansicht | Margenzeile | Druck der Disponentenmaske | aus Kundenansicht erzeugen |
| PDF-Metadaten | Autor, Quelldatei | Exportvorgaben unverändert | Metadaten entfernen |
| Frachtpapiere | Frachtführer, Satz | Preis auf dem CMR gedruckt | Weglassen vereinbaren |
Zwei Zeilen verdienen einen Kommentar. Ein PDF, das aus dem Ausdruck einer internen Angebotsmaske entsteht, ist selbst dann gefährlich, wenn die Margenzeile aus dem sichtbaren Bereich gescrollt ist: Ein PDF speichert Textobjekte, keine Fotografie. Text außerhalb des sichtbaren Bereichs oder unter einem weißen Rechteck bleibt markierbar und durchsuchbar. Wenn Sie Angebote als PDF exportieren, erzeugen Sie sie aus denselben eingeschränkten Daten, die auch das Portal verwendet — nicht aus der Disponentenmaske mit abgeschalteten Feldern.
Die Zeile mit den Frachtpapieren vergessen Speditionen am häufigsten. Ihre Architektur kontrolliert nicht, was ein Frachtführer auf den Frachtbrief druckt oder im Führerhaus liegen lässt, und ein bei der Zustellung sichtbarer Satz liefert dem Auftraggeber genau das Paar aus dem vorigen Abschnitt. Sprechen Sie das bei der Aufnahme an, zusammen mit den übrigen Papierfragen aus der Checkliste zur Frachtführeraufnahme. Cargavo, das TMS für Speditionen und Frachtvermittler, führt die Nachrichten zu Angebot und Sendung in getrennten Verläufen je Kunde — damit ein Frachtführergespräch nicht aus Reflex in einen Kundenverlauf weitergeleitet wird.
Wie prüfe ich, ob mein Einkaufspreis für den Kunden wirklich unsichtbar ist?
Prüfen Sie als Kunde, nicht als Administrator. Legen Sie einen echten Portalzugang für einen Testkunden an, fordern Sie ein Angebot an und sehen Sie nach, was diese Sitzung tatsächlich empfängt. Alles, was das Konto abrufen kann, gilt als offengelegt — auch wenn die Oberfläche es nicht zeigt.
Die Prüfung dauert unter einer Stunde und lohnt sich immer dann erneut, wenn sich Software, Vorlagen oder Exportformate ändern.
- Legen Sie einen Portalzugang für einen Testkunden ohne Sonderrechte an.
- Fordern Sie aus dieser Sitzung ein Angebot an und notieren Sie den genannten Preis.
- Öffnen Sie das Netzwerkprotokoll des Browsers und prüfen Sie, dass in keiner Antwort ein Frachttarif, eine Tarifmatrix oder eine Marge auftaucht.
- Rufen Sie den Angebotsdatensatz direkt aus dieser Sitzung ab und prüfen Sie, dass die Finanzfelder abgewiesen und nicht nur am Bildschirm weggelassen werden.
- Exportieren oder versenden Sie das Angebot exakt so, wie ein Kunde es erhält, und durchsuchen Sie die Datei nach der Einkaufszahl.
- Lassen Sie sich von einer Kollegin ein Angebot auf ihrem üblichen Weg schicken und prüfen Sie Anhang, Verlauf und Dateimetadaten.
- Kalkulieren Sie drei kürzlich abgewickelte Sendungen neu und prüfen Sie, dass die Verkaufspreise dem entsprechen, was der Kunde genannt bekam.
Schritt vier fällt am häufigsten durch, Schritt fünf am teuersten. Schritt sieben findet den umgekehrten Fehler — eine Marge, die still zweimal oder gar nicht angewendet wurde.
Eine Einschränkung zum ganzen Thema. Den Einkaufspreis zu verbergen ist die übliche kaufmännische Haltung, aber keine allgemeingültige Regel: Manche Auftraggeber arbeiten auf Open-Book- oder Cost-plus-Basis und haben vertraglich Anspruch darauf, den Einkaufspreis des Frachtführers und ein ausgewiesenes Entgelt zu sehen. Das ist eine Preisentscheidung und gehört in den Kundenstammsatz, nicht in eine spontane E-Mail. Ein System, das beides über Berechtigungen trennt, bedient beide Modelle; eine Excel-Datei bedient keines davon zuverlässig.
Cargavo, das TMS für Speditionen und Frachtvermittler mit 2 bis 25 Mitarbeitern, veröffentlicht seine Pläne mit 49 €, 149 € und 399 € pro Monat, 14 Tage kostenlos testen ohne Kreditkarte — diese Prüfung lässt sich also an einem echten Portal durchführen, bevor Sie sich binden. Die Details stehen auf der Preisseite.
Häufige Fragen
Wie zeige ich einem Kunden einen Preis, ohne meinen Einkaufspreis zu verraten?
Rechnen Sie den Verkaufspreis auf einem Server aus Tarifdaten, die das Kundenkonto nicht lesen darf, und senden Sie nur Endbetrag, Währung, Laufzeit und Angebotsnummer zurück. Kostenfelder in der Oberfläche auszublenden genügt nicht: Jeder Wert, den der Browser anzeigt, wurde vorher an den Browser geliefert und lässt sich im Netzwerkprotokoll lesen.
Kann mein Kunde im Kundenportal meine Marge sehen?
Nur wenn das Portal sie mitsendet. In Cargavo liegen Einkaufspreis und Marge in einem privaten Unterdokument, dessen Leseregel ausschließlich Rollen der Spedition zulässt, während das kundenlesbare Angebot Verkaufspreis, Referenz und Status trägt. Eine Kundensitzung, die den Finanzdatensatz anfragt, wird abgewiesen und erhält kein leeres Ergebnis.
Kann ein Auftraggeber die Marge der Spedition aus dem Angebotspreis zurückrechnen?
Nur wenn die Marge einheitlich ist und ein Einkaufspreis durchsickert. Ein bekanntes Paar wie 161,46 € Einkauf gegen 207,00 € Verkauf ergibt den Faktor 1,2822, der für jedes gleich kalkulierte Angebot gilt. Margen je Kunde, je Tarif und je Gewichtsstaffel begrenzen ein Leck auf eine Zelle statt auf das gesamte Preisbuch.
Schützt die Rundung des Verkaufspreises den Einkaufspreis?
Sie macht aus einer exakten Kostenzahl eine Spanne. Ein Verkaufspreis von 207,00 €, auf die nächsten 5,00 € nach oben gerundet, wird als 210,00 € genannt und passt bei gleicher Marge zu jedem Einkaufspreis zwischen 159,90 € und 163,80 €. Der Kunde kann den Centbetrag nicht mehr rekonstruieren, und die Rundungsdifferenz bleibt bei der Spedition.
Soll ich meinem Kunden im Angebot den Namen des Frachtführers nennen?
In der Regel nicht. Der Name des Frachtführers ist der kürzeste Weg zum Direktkontakt, und zusammen mit einem veröffentlichten Tarif grenzt er auch Ihren Einkaufspreis ein. Bieten Sie unter Ihrer eigenen Marke an, halten Sie die Auswahl des Frachtführers intern und nennen Sie ihn nur, wenn Leistung oder Vertrag es verlangen.
Darf eine Spedition ihre Marge gegenüber dem Auftraggeber verschweigen?
Ein geschlossener Festpreis, bei dem der Kunde eine Leistung zum All-in-Satz kauft, ist in der Transportvermittlung die übliche Vertragsform — im deutschen Angebot ebenso wie in der Schweizer Offerte in CHF. Manche Verträge sind stattdessen Open Book und geben dem Auftraggeber Einsicht in Kosten und Entgelt. Beides ist zulässig, und was gilt, gehört je Kunde hinterlegt statt von Angebot zu Angebot entschieden.
Verwandte Leitfäden
- White-Label-Kundenportal für Speditionen: was hineingehört
- Transportanfrage per E-Mail oder Online-Formular: der ehrliche Vergleich
- Transportanfragen digitalisieren: der Leitfaden für Speditionen und Frachtvermittler