Jeder Lieferant hat sein eigenes Preislistenformat, seinen eigenen Aktualisierungsrhythmus und seine eigene Art zu informieren — Mail mit Anhang, FTP-Link, manchmal ein Anruf. Irgendjemand in deiner Firma muss das alles einsammeln, öffnen, prüfen, was sich geändert hat, und die neuen Einkaufspreise ins ERP eintragen. Es ist eine dieser Tätigkeiten, die niemand misst, bis man anfängt zu suchen, wo die Marge versickert.
Bei Großhändlern und produzierenden KMU kommt uns dieses Thema immer wieder unter. Ein Unternehmen hat 20–60 Lieferanten, jeder schickt seine Preisliste monatlich oder quartalsweise, teils in Excel, teils als PDF, teils direkt im Mail-Text. Jemand im Einkauf oder in der Buchhaltung macht das von Hand: kopieren, einfügen, Formatierung reparieren, den passenden SKU im ERP suchen, den neuen Preis eintippen. Unterwegs entstehen Tippfehler, übersehene Zeilen und Situationen, in denen der neue Preis erst zwei Wochen nach der Erhöhung beim Lieferanten wirksam wird — weil die Datei zwar da war, aber niemand sie „bearbeitet" hatte.
Bei einem unserer Kunden — einem 22-köpfigen Elektro-Großhändler mit 40 aktiven Lieferanten — schätzte der Einkaufsleiter, dass die manuelle Preislistenpflege 2,5 Arbeitstage pro Monat kostet. Nach dem Rollout einer einfachen Excel- und PDF-Parsing-Pipeline mit Validierung vor dem Import in Comarch Optima: 4 Stunden pro Monat für Prüfung und Freigabe. Zurückgewonnene Marge durch früheres Erkennen von Preiserhöhungen — mehrere tausend PLN monatlich, vor allem weil sie ihre eigenen Verkaufspreise in derselben Woche anhoben, in der die Einkaufskosten stiegen.
Warum das so teuer ist, obwohl es banal aussieht
Manuelle Preislistenverarbeitung hat drei Kosten, von denen nur die erste offensichtlich ist.
Arbeitszeit. Ein Einkaufsleiter mit 40 Lieferanten und durchschnittlich 200 Positionen pro Preisliste bearbeitet monatlich mehrere tausend Zeilen. Eine Preisliste dauert zwischen 30 Minuten (klein, in Excel, sauber) und 4 Stunden (300 Positionen, gescanntes PDF, Format hat sich geändert). Summa: 15–25 Stunden monatlich bei typischen Kunden.
Verzögerte Preiserhöhungen. Hat der Lieferant am 1. März erhöht und trägst du den neuen Preis erst am 20. März ins ERP ein, verkaufst du 20 Tage lang mit der alten Marge, gerechnet auf den alten Einkaufspreis. Bei 50.000 PLN monatlichem Einkauf und einer 3%-Erhöhung sind das 500 PLN „aufgegessen" bei einem Lieferanten in einem Monat. Multipliziere das über alle Lieferanten und über ein Jahr.
Fehler, die still bleiben. Ein Tippfehler beim Einkaufspreis (12,50 statt 125,00 PLN) schreit nicht sofort. Er schreit ein halbes Jahr später, wenn die Buchhaltung eine Margenanalyse macht und sieht, dass Artikel X seit Mai negative Rentabilität hat. Das aufzudröseln — Tage Arbeit plus ein Gespräch mit einem Kunden, dem du ein halbes Jahr lang unter Kosten verkauft hast.
Vier Formate, in denen Preislisten meistens ankommen
Bevor du irgendetwas automatisierst, schreib dir auf, was du auf der Eingangsseite tatsächlich hast. Unsere Kunden haben in der Regel eine Mischung aus vier Szenarien:
- Excel mit stabilem Format. Derselbe Lieferant, dieselbe Datei, dieselben Spalten Monat für Monat. Das Einfachste — einmal parsen und es funktioniert jahrelang. Etwa 30–50% der Preislisten bei einem typischen Großhändler.
- Excel „fast dasselbe". Spalten in anderer Reihenfolge, zusätzliche Kopfzeilen, manchmal heißt das Blatt anders. Erfordert einen flexibleren Parser und Alerts, wenn „etwas nicht passt". Weitere 30–40%.
- Text-PDF. Der Lieferant generiert ein PDF aus seinem System und schickt es per Mail. Lässt sich parsen (
pdfplumberin Python,iTextin .NET), vorausgesetzt es ist ein echtes PDF und kein Scan. 10–20% der Preislisten. - Gescanntes PDF / Bild. Der schlimmste Fall — erfordert OCR (Tesseract, Azure AI Vision, AWS Textract), und das Ergebnis muss trotzdem manuell validiert werden. Meistens 5–15% der Preislisten; es lohnt sich, mit dem Lieferanten über Excel zu verhandeln.
Seltener sieht man CSV, eine Lieferanten-API (einer von 40 Kunden) oder Download aus einem B2B-Portal des Lieferanten — wenn du sowas hast, behandle es als Gold und integriere nativ.
Drei Schichten eines guten Importprozesses
Es geht nicht darum, „ein Skript zu schreiben, das die Preisliste importiert". Es geht darum, einen Prozess zu bauen, der dich in einem halben Jahr nicht überrascht, wenn ein Lieferant das Format ändert. Drei Schichten, die man von Anfang an trennen sollte:
Schicht 1 — Quelle. Ein eigenes Postfach (z.B. preislisten@deinefirma.de), in das alle Preislisten reinkommen. Lieferanten bekommen eine Adresse zum Senden. Ein SharePoint- oder FTP-Ordner für größere Dateien. Vermeide die Situation, in der die Preisliste in einem „RE: RE: RE: neue Preise ab März"-Thread lebt.
Schicht 2 — Parsen und Validieren. Ein Skript (Python oder .NET, egal) erkennt den Absender, wählt den passenden Parser und extrahiert eine Positionsliste: Lieferantencode → Bezeichnung → neuer Nettopreis → Währung → gültig ab. Die Validierung ist entscheidend: hat jede Position ein Mapping zu einem ERP-SKU, liegt die Preisänderung in einem vernünftigen Bereich (z.B. +/- 30%), stimmt die Währung mit dem historischen Wert überein.
Schicht 3 — Freigabe und Import. Die Parsing-Ergebnisse landen in einer Ansicht, in der ein Mensch in einer Tabelle sieht: „25 Positionen unverändert, 12 mit 2–5% Erhöhung, 3 mit einer Erhöhung über 20%, 2 neue Codes ohne Mapping". Der Einkaufsleiter prüft die Anomalien, klickt „freigeben" und erst dann fließen die Daten per API oder CSV-Import ins ERP.
Diese dritte Schicht ist kritisch. Eine Automatisierung ohne Menschen am Ende wird früher oder später Unsinn durchdrücken. Ein Mensch ohne Automatisierung davor wird in Tabellen ertrinken. Zusammen — wird das Ganze zu einem 4-Stunden-Job im Monat statt 25.
Mapping der Lieferanten-SKUs auf deine SKUs — der stille Killer
Der größte Schmerz auf so einem Projekt ist meistens nicht das Parsen, sondern das Mapping. Der Lieferant hat seinen Code (z.B. EL-KP-2400), du hast deinen (z.B. KAB-CU-2.5) und niemand hält das systematisch fest. Vertriebler „wissen, dass es dasselbe ist". In der Praxis lebt das Mapping in den Köpfen von zwei Personen — wenn eine krank wird, steht die Integration.
Die Lösung ist langweilig, aber wirksam: eine Mapping-Tabelle in einer Datenbank (oder als Anfang in einem SharePoint-Excel), mit den Spalten Lieferant | Lieferantencode | ERP-SKU | Einheit | Umrechnungsfaktor | letztes Verifikationsdatum. Wird bei jeder neuen Position einmal ausgefüllt — und gepflegt. Trifft der Parser auf einen Code ohne Mapping, geht die Position in eine „Inbox neuer Codes", nicht still ins Nichts.
Gute Praxis: einmal pro Quartal einen Report „Mappings ungenutzt seit 12 Monaten" und „Mappings mit Einheitenabweichungen" laufen lassen. Der Lieferantenkatalog lebt, Codes veralten, Multiplikatoren ändern sich (der Lieferant hat aufgehört, 100-m-Rollen zu verkaufen, jetzt sind es 50 m).
Bauen oder kaufen
Es gibt Fertigprodukte (Comarch OCR für Rechnungen hat partielle Preislisten-Unterstützung, es gibt dedizierte Produkte wie Vendorlink, es gibt Symfonia-Module). Unsere übliche Empfehlung:
- Weniger als 10 Lieferanten und nur Excel — ein Fertigwerkzeug ist Overhead. Ein einfaches Python-Skript, wöchentlich ausgeführt, reicht völlig.
- 10–50 Lieferanten mit gemischten Formaten — das beste Kosten-Nutzen-Verhältnis liefert eine eigene, schlanke Pipeline (Python + Mapping-Tabelle + einfaches Freigabe-UI). 2–4 Entwicklerwochen, danach Wartung in der Größenordnung von wenigen Stunden pro Monat.
- 50+ Lieferanten inklusive PDFs und OCR — es lohnt sich, einen Eigenbau mit einem Fertigprodukt zu vergleichen (Vendorlink, Prisync, dedizierte ERP-Module). Der Break-even liegt meistens auf der kommerziellen Seite.
Selten ist die Antwort „selbst bauen oder kaufen" so eindeutig, wie Vertriebler behaupten. Die Jahreskosten landen meistens in derselben Kategorie — Details entscheiden (Integration mit deinem konkreten ERP, Unterstützung deiner Währungen, Mapping-Flexibilität).
Ein Rollout-Plan in 6 Wochen
Bei einem 20–40-Personen-Kunden sieht ein typisches Projekt so aus:
- Woche 1: Lieferantenaudit. Bestandsaufnahme aller Preislisten, Formate, Frequenzen, Größen. Auswahl von 3–5 „Starter"-Lieferanten (höchstes Volumen, stabilstes Format).
- Woche 2: dediziertes Postfach und Mapping-Tabelle.
preislisten@aufsetzen, Mapping-Tabelle anlegen und für die Pilot-Lieferanten befüllen. - Wochen 3–4: Parser und Freigabeansicht. Skripte für die Pilotformate, ein einfaches UI (kann Streamlit oder ein Power-Apps-Formular sein) für die Freigabe von Änderungen, Integration mit der ERP-API.
- Woche 5: Parallelbetrieb. Der neue Prozess läuft neben dem manuellen, die Ergebnisse werden verglichen. Alle Grenzfälle kommen ans Licht — eine andere Währung auf einer Preisliste, ein zusätzlicher Spaltenrabatt, der nicht in der Spezifikation stand.
- Woche 6: Ausrollen. Weitere Lieferanten einbinden, Parser ergänzen. Diese Phase endet nie zu 100% — es gibt immer einen Lieferanten, dessen Preisliste einmal im halben Jahr ankommt und „wir kümmern uns dann darum".
Drei Fehler, die man vermeiden sollte
- Automatische Freigabe von Erhöhungen über 10%. Lass immer einen Menschen prüfen. Ein Sprung um 40% ist meistens ein PDF-Parse-Fehler, keine echte Preiserhöhung.
- Keine Preishistorie. Speichere Versionen der Preislisten und Gültigkeitsdaten in einer Datenbank. In einem halben Jahr wird jemand fragen „wie viel hat das im März gekostet" — und du solltest eine Antwort haben.
- Kein Alarm, wenn ein Lieferant keine Liste geschickt hat. Wenn Lieferant A monatlich sendet und seit zwei Monaten kommt nichts — da ist was los. Vielleicht haben sie die Mailadresse geändert, vielleicht sind sie insolvent. Ein einfacher Kalenderalarm oder ein Eintrag im Monitoring reicht.
Wie geht es weiter
Der Import von Lieferantenpreislisten ist einer dieser Bereiche, in denen Automatisierung im ersten Monat sichtbare Ergebnisse liefert. Du brauchst dafür keine Plattform für 100 tausend — du brauchst ein paar Entwicklerwochen, Disziplin bei der Mapping-Pflege und einen Prozess, in dem ein Mensch Anomalien freigibt.
Wenn du sehen willst, wie das für deinen konkreten Lieferantenmix und dein ERP aussehen könnte — eine halbe Stunde Gespräch reicht in der Regel, um das Projekt in Phasen zu zerlegen und die Kosten zu schätzen.
Eine Preisliste, die zwei Wochen im Postfach liegt, kostet dich mehr als die Automatisierung, die sie importiert.