Die technische Verschmelzung von B2B-E-Commerce und kaufmännischer Warenwirtschaft erfordert weit mehr als einen simplen Datenaustausch per Flatfile. Wenn Sie die B2B-Funktionen von Shopify nutzen, bewegen Sie sich in einem Ökosystem, das auf GraphQL-basierten Primitiven wie Company Profiles, Catalogs und B2B-Checkouts aufbaut. Dem gegenüber steht die relationale, über Jahrzehnte gewachsene Architektur Ihrer Sage 100 Warenwirtschaft. Das Ziel einer performanten Schnittstelle ist es, diese beiden Welten ohne Informationsverlust oder Latenzen miteinander zu verzahnen. Es geht um die millimetergenaue Synchronisation von Unternehmensprofilen, komplexen Preislogiken und Zahlungszielen, bei der die Sage 100 stets das führende System – die „Single Source of Truth“ – bleibt.
Das architektonische Fundament: Shopify B2B-Primitive vs. Sage 100 Datenstrukturen
Um eine saubere Integration zu gewährleisten, müssen wir zunächst die Datenmodelle abstrahieren und mappen. In der Sage 100 verwalten Sie Ihre Geschäftskunden im Stammdatenbereich (Debitor). Hier definieren Sie Rechnungs- und abweichende Lieferadressen, ordnen Preisgruppen zu, hinterlegen individuelle Rabattstaffeln und definieren das Kreditlimit. Shopify B2B bildet diese Struktur durch sogenannte „Companies“ und „Locations“ (Unternehmensprofile und Standorte) ab.
Als Entwickler stehen wir vor der Herausforderung, die flache, kundenbezogene Struktur klassischer B2C-Shops aufzugeben und stattdessen hierarchische B2B-Graphen zu bedienen. Die Schnittstelle muss in der Lage sein, einen Hauptkunden aus der Sage 100 (inklusive seiner KHK-Stammdaten) zu lesen, daraus einen Payload für die Shopify API zu generieren und das Unternehmensprofil samt aller untergeordneten Standorte und zugewiesenen B2B-Käufer (die eigentlichen Shop-Accounts der Einkäufer) anzulegen oder zu aktualisieren.
Unternehmensprofile und Standorte (Company Profiles & Locations) synchronisieren
Der B2B-Einkauf zeichnet sich oft durch dezentrale Strukturen aus. Ein klassischer Anwendungsfall: Ihr Kunde ist ein Filialist. In der Sage 100 führen Sie eine zentrale Hauptadresse für die Rechnungsstellung und 15 abweichende Lieferadressen für die einzelnen Filialen.
Die Synchronisationslogik überführt dieses Konstrukt wie folgt:
- Der Hauptdebitor: Der Debitor aus der Sage 100 wird als
Companyin Shopify angelegt. Hierbei werden essenzielle Metadaten wie die Umsatzsteuer-Identifikationsnummer (USt-IdNr.) und die primäre Währung fixiert. - Die Lieferadressen: Jede abweichende Lieferadresse in der Sage 100 wird zu einer
Location(einem Standort) innerhalb dieser Company in Shopify. - Die Ansprechpartner: Die in der Sage 100 hinterlegten Einkäufer werden als
B2B Customersin Shopify angelegt und den jeweiligen Locations zugewiesen. Ein Einkäufer kann die Berechtigung erhalten, für einen bestimmten Standort oder für das gesamte Unternehmensprofil zu bestellen.
Jede Änderung in der Warenwirtschaft – sei es eine neue Filialadresse oder ein ausgeschiedener Einkäufer – triggert über die Schnittstelle ein sofortiges Update in Shopify. So verhindern Sie, dass Bestellungen an veraltete Adressen gesendet werden oder unbefugte Personen im Namen des Unternehmens einkaufen.
Komplexe Preislogiken und individuelle Konditionen abbilden
Das Herzstück jeder B2B-Beziehung ist die Preisgestaltung. Die Sage 100 bietet hier ein extrem tiefes und flexibles Regelwerk: von einfachen Preisgruppen über kundenindividuelle Artikelpreise, Mengenstaffeln und Aktionspreise bis hin zu komplexen Matrixrabatten. Shopify löst dieses Problem konzeptionell durch Catalogs (Kataloge).
Die Kunst der Schnittstellenentwicklung besteht nun darin, die dynamische Preisberechnung der Sage 100 so zu extrahieren und zu transformieren, dass sie performant in die Shopify-Kataloge geschrieben werden kann. Hierfür nutzen wir spezialisierte Preis- und Rabattabgleiche, die folgende Szenarien abdecken:
- Preislisten-Mapping: Wenn Sie in der Sage 100 mit festen B2B-Preislisten arbeiten (z. B. „Händler Gold“, „Händler Silber“), generiert die Schnittstelle entsprechende Catalogs in Shopify und ordnet diese den jeweiligen Companies zu.
- Kundenindividuelle Netto-Preise: Hat ein spezifischer Kunde in der Sage 100 hart hinterlegte Sonderpreise für ein bestimmtes Sortiment, wird für diese Company ein exklusiver Catalog in Shopify erzeugt, der exakt diese Festpreise enthält.
- Prozentuale Abschläge: Globale Rabatte (z. B. pauschal 15 % auf die Kategorie „Zubehör“) werden aus den Rabattgruppen der Sage 100 ausgelesen und als prozentualer Preisabschlag im Shopify Catalog abgebildet.
Die Synchronisation muss hochfrequent und delta-basiert erfolgen. Wenn sich der Basispreis eines Artikels in der Sage 100 ändert, berechnet die Middleware im Hintergrund automatisch alle betroffenen Kundenkataloge neu und pusht die angepassten Payloads via GraphQL an Shopify, ohne die API-Ratelimits des Shopsystems zu verletzen.
Zahlungsziele und Kreditlimits (Payment Terms)
Ein B2B-Checkout unterscheidet sich fundamental von einer B2C-Bestellung. Während Endkunden per Kreditkarte oder PayPal sofort bezahlen, erwartet der B2B-Einkäufer den Kauf auf Rechnung mit spezifischen Zahlungszielen – beispielsweise „14 Tage 2% Skonto, 30 Tage netto“. Diese Konditionen sind vertraglich vereinbart und ausschließlich in der Sage 100 gepflegt.
Damit der Shopify-Checkout diese Konditionen respektiert, liest die Schnittstelle die Zahlungskonditionen des jeweiligen Debitors aus der Sage 100 aus und mappt sie auf die Payment Terms in Shopify. Sobald sich der B2B-Käufer im Shop einloggt, erkennt das System sein Unternehmensprofil und schaltet den Rechnungskauf mit exakt den Fristen frei, die im ERP-System hinterlegt sind.
Zudem können Bestellsperren automatisiert übertragen werden. Hat ein Kunde in der Sage 100 sein Kreditlimit überschritten oder befindet sich im Mahnlauf, kann die Schnittstelle das B2B-Profil in Shopify temporär auf „Nur Vorkasse“ umstellen oder den Checkout für diesen Account vollständig blockieren, bis die offenen Posten geklärt sind.
Architekturwechsel: Die offizielle OEM-Anbindung für Shopware
An dieser Stelle ist eine scharfe technologische Trennung erforderlich: Die zuvor beschriebenen Mechanismen beziehen sich explizit auf die Architektur von Shopify in Verbindung mit der Sage 100. Sollten Sie als Shop-System hingegen auf Shopware setzen und als ERP SelectLine nutzen, ändert sich die Systemlandschaft fundamental. Für dieses spezifische Setup kommt die offizielle OEM-Anbindung zwischen SelectLine und Shopware zum Einsatz. Diese tiefe und vom Hersteller autorisierte Integration nutzt völlig andere Endpunkte und Abgleichsroutinen, um die SelectLine-Stammdaten nahtlos im Shopware-Ökosystem bereitzustellen. Es ist essenziell, diese beiden Welten strikt voneinander zu trennen, da die Datenmodelle und Schnittstellenprotokolle der offiziellen SelectLine OEM-Anbindung exklusiv auf Shopware zugeschnitten sind.
Bestellverarbeitung und Fulfillment-Logik (Sage 100 exklusiv)
Zurück in der Welt von Shopify und der Sage 100: Sobald der B2B-Kunde den Checkout in Shopify abschließt, beginnt die kritische Phase der Bestellübernahme. Da B2B-Warenkörbe oft hunderte von Positionen umfassen, muss der Import in die Sage 100 absolut fehlerfrei und transaktionssicher (ACID-konform) ablaufen.
Die Schnittstelle ruft die Bestellung (inklusive der Referenzen auf Company und Location) via Webhook oder Polling ab und erzeugt in der Sage 100 einen entsprechenden Beleg – in der Regel einen Auftrag. Dabei werden nicht nur die Artikelpositionen übergeben, sondern auch die exakten Steuer-Codes, gebuchten Frachtkosten und die im Shop ausgewählten B2B-Zahlungsziele.
Ist der Auftrag in der Warenwirtschaft angelegt, übernimmt die Sage 100 die vollständige Kontrolle über die nachgelagerten Prozesse. Besonders hervorzuheben ist hierbei die Versandanbindung für die Sage 100. Da B2B-Aufträge häufig Teillieferungen erfordern, steuert die Sage 100 das Splitting der Lieferungen, die Kommunikation mit den Logistikdienstleistern und den Druck der Versandetiketten. Sobald ein Paket das Lager verlässt, meldet die Sage 100 über die Schnittstelle das Fulfillment (inklusive Tracking-Nummer und der exakten Menge an versendeten Artikeln) zurück an Shopify. Der Shopify-Status wechselt auf „Teilweise versendet“ oder „Versendet“, und der Einkäufer erhält seine Tracking-Benachrichtigung.
Fehlerhandling, Idempotenz und Logging im Datenaustausch
Im professionellen B2B-Umfeld ist Datenverlust inakzeptabel. Eine robuste Middleware implementiert daher strikte Idempotenz-Schlüssel (Idempotency Keys). Das bedeutet: Selbst wenn Shopify aufgrund eines Netzwerk-Timeouts denselben Bestell-Webhook dreimal sendet, garantiert die Schnittstelle, dass der Auftrag in der Sage 100 exakt nur ein einziges Mal angelegt wird.
Zudem überwachen umfassende Logging-Mechanismen jeden API-Call. Sollte ein Shopify-Katalog-Update fehlschlagen – etwa weil in der Sage 100 temporär ein ungültiges Zeichen in der Artikelbezeichnung gepflegt wurde –, isoliert das System diesen spezifischen Payload. Die restliche Synchronisation läuft ungebremst weiter, während Administratoren über ein Dashboard konkrete Hinweise zur Fehlerbehebung der betroffenen Datensätze erhalten.
Fazit
Die Synchronisation von Shopify B2B und der Sage 100 ist ein hochkomplexer, aber bei korrekter Implementierung äußerst lohnender Architektur-Baustein. Indem Sie Unternehmensprofile, Standorte, tiefe Preislogiken und Zahlungsziele direkt aus den Stammdaten der Sage 100 in die GraphQL-Strukturen von Shopify überführen, schaffen Sie ein B2B-Einkaufserlebnis, das die Bequemlichkeit von B2C mit der kaufmännischen Präzision des B2B-Sektors vereint. Die Sage 100 bleibt dabei das unangefochtene Backend für Ihre Finanzen, Bestände und die gesamte Versandanbindung, während Shopify das hochperformante Frontend für Ihre Geschäftskunden bildet. Wer diese Integration auf technologisch höchstem Niveau betreibt, eliminiert manuelle Fehlerquellen, beschleunigt den Order-to-Cash-Prozess und skaliert sein B2B-Geschäft ohne administrativen Overhead.