Zum Inhalt springen
Shop-Integration & Prozesse

Bestellung nach der ERP-Übergabe geändert: sauber nachziehen

Adresse, Menge oder Storno nach der ERP-Übergabe: wie Shop und ERP Bestelländerungen mit Sperre ab Kommissionierung, Änderungsereignis und Protokoll abgleichen.

20 Min. Lesezeit BestellungenERPSynchronisationShopware

Kurz und einfach erklärt

Manchmal will eine Kundin ihre Bestellung noch ändern. Das Paket soll an eine andere Adresse. Oder sie braucht mehr Ware. Oft ist die Bestellung dann schon im Programm für das Lager.

Der Shop darf das nicht allein ändern. Er fragt zuerst das Lager. Hat das Packen schon begonnen, geht die Änderung nicht mehr.

Die Kundin bekommt in jedem Fall eine Antwort. Im Konto sieht sie, ob die Änderung geklappt hat oder nicht.

Ein Storno wird nicht gelöscht. Es bekommt einen Vermerk. Jede Änderung kommt in eine Liste mit altem und neuem Wert. Wir helfen beim Aufbau.

Die Bestellung ist schon im ERP, da schreibt die Kundin: Bitte an die Büroadresse liefern, und statt zwei Kartons brauche ich drei. Im Shop ist das schnell erledigt, die Verwaltung erlaubt es, die Bestellung zu bearbeiten. Doch das ERP hat den Auftrag längst angelegt, vielleicht schon freigegeben, und im Lager liegt womöglich der Kommissionierschein bereit. Wird die Änderung jetzt nur im Shop gespeichert, laufen zwei Fassungen derselben Bestellung auseinander: Der Shop zeigt drei Kartons an die Büroadresse, das Lager packt zwei an die Privatadresse. Wird die Bestellung noch einmal exportiert, entsteht im ungünstigen Fall ein zweiter Auftrag. Dieser Beitrag zeigt, wie Sie Änderungen nach der Übergabe sauber nachziehen: welche Änderungen bis wann zulässig sind, warum der Beginn der Kommissionierung die Grenze zieht, worauf die Schnittstelle in Shopware hören muss, wie ein Änderungsereignis statt eines erneuten Exports aussieht, wie Positionen abgeglichen und Stornos als eigener Statuswechsel behandelt werden, was die Kundin zurückbekommt und was ins Protokoll gehört.

Das Wichtigste in Kürze

  • Rund um Black Friday und Cyber Week 2025 wollten 52 Prozent der Internetnutzer ab 16 Jahren die Rabatte nutzen (Bitkom); Änderungswünsche zu diesen Bestellungen treffen auf Aufträge, die das ERP schon übernommen hat.
  • Eine Bestelländerung ist eine Vertragsänderung und braucht die Zustimmung beider Seiten (§ 311 Abs. 1 BGB): Der Shop nimmt sie als Anfrage an und bestätigt erst nach der Antwort des ERP.
  • Ab Beginn der Kommissionierung sperrt das ERP Änderungen und antwortet mit Grund, etwa per Statuscode 409 (RFC 9110); der Shopware-Standard kennt keinen eigenen Lieferzustand für die Kommissionierung.
  • Shopware legt beim Bearbeiten in der Verwaltung eine Entwurfsversion an und führt sie beim Speichern mit der Live-Fassung zusammen (Shopware-Dokumentation); Schnittstellen werten deshalb nur die Live-Version aus.
  • Statt die Bestellung erneut zu exportieren, schickt die Schnittstelle ein Änderungsereignis mit eventId, Änderungsnummer, Bezugsstand und Feldliste; Positionen werden über Kennungen abgeglichen, nicht über die Artikelnummer.
  • Ein Storno ist ein Statuswechsel, keine Löschung (§ 146 Abs. 4 AO); jede Änderung landet mit altem und neuem Wert im Protokoll, die Bestätigung als Geschäftsbrief sechs Jahre im Archiv (§ 147 Abs. 3 AO).

Warum Änderungen nach der Übergabe Schnittstellenarbeit sind

Rund um Black Friday und Cyber Week bestellen viele Menschen in kurzer Zeit. Für 2025 wollte rund jede und jeder Zweite, nämlich 52 Prozent (Bitkom) der Internetnutzerinnen und -nutzer ab 16 Jahren, die reduzierten Preise nutzen, die allermeisten davon online. Wer in diesen Tagen schnell bestellt, bemerkt einen Fehler oft erst danach: eine alte Lieferadresse, eine falsche Größe, einen vergessenen Artikel. Die Änderungswünsche betreffen dann Bestellungen, die das ERP längst übernommen hat, und sie kommen in einer Phase, in der Lager und Kundenservice ohnehin ausgelastet sind.

Wie empfindlich das Thema Lieferung ist, zeigt dieselbe Befragung: Bei der Auswahl eines Online-Shops nennen 53 Prozent (Bitkom) der befragten Online-Shopper Versand und Lieferung sehr wichtig, knapp hinter den Zahlungsmöglichkeiten mit 54 Prozent (Bitkom). Eine Adressänderung, die im Shop bestätigt wurde, im Lager aber nicht angekommen ist, trifft genau diesen Punkt. Das Paket geht an die falsche Anschrift, und die Kundin hält eine Bestätigung in der Hand, die etwas anderes sagt.

Rechtlich ist eine Änderung nach Vertragsschluss kein Verwaltungsvorgang, sondern eine Vereinbarung. Zur Änderung des Inhalts eines Schuldverhältnisses ist ein Vertrag zwischen den Beteiligten erforderlich (§ 311 Abs. 1 BGB). Der Shop darf die Bestellung also nicht einseitig umschreiben, und der Wunsch der Kundin wird erst zur Änderung, wenn der Händler ihn annimmt. Ob der Vertrag zu diesem Zeitpunkt schon geschlossen ist, hängt von den eigenen Bedingungen ab: Die Bestätigung über den Zugang der Bestellung, die der Shop unverzüglich auf elektronischem Wege schicken muss (§ 312i Abs. 1 BGB), ist nicht automatisch schon die Annahme. Technisch folgt daraus in beiden Fällen dasselbe: Eine Änderung braucht eine Antwort. Sie kann angenommen oder abgelehnt werden, und beides muss bei der Kundin ankommen.

Hinzu kommt die Datenlage. Nach der Übergabe führen zwei Systeme dieselbe Bestellung. Der Shop kennt Warenkorb, Kundenkonto und Zahlung, das ERP kennt Auftrag, Reservierung, Kommissionierung und später Lieferschein und Rechnung. Welche Seite für welches Feld führend ist, beschreibt der Beitrag zu Datenkonflikten bei bidirektionaler Synchronisation. Hier geht es um den Sonderfall, dass sich der Inhalt einer bereits übergebenen Bestellung ändert, und um den Prozess, der diese Änderung in beide Systeme bringt, ohne dass eines von beiden etwas verliert.

Welche Änderungen nach der Übergabe zulässig sind

Nicht jede Änderung ist gleich riskant. Eine neue Telefonnummer für den Zusteller berührt weder Preis noch Lager, eine zusätzliche Position berührt beides. Bewährt hat sich, die Änderungsarten einzeln festzulegen: bis zu welchem Auftragsstand sie erlaubt sind, was das ERP dafür tun muss und was die Kundin zurückbekommt. Die Tabelle zeigt eine typische Ausgangslage für den Versandhandel an Verbraucher und Geschäftskunden; die genauen Grenzen legen Sie mit Lager, Kundenservice und Buchhaltung fest.

ÄnderungErlaubt bisWas das ERP tun mussRückmeldung an die Kundin
LieferadresseBeginn der KommissionierungLieferanschrift im Auftrag ersetzen, Versandart und Versandkosten neu prüfenneue Bestätigung mit der neuen Anschrift
RechnungsadresseErstellung der RechnungRechnungsanschrift ersetzen; nach Rechnungsstellung per Berichtigung (§ 31 Abs. 5 UStDV)Bestätigung, bei bestehender Rechnung zusätzlich das Berichtigungsdokument
Menge verringernBeginn der KommissionierungPosition reduzieren, Reservierung freigeben, Summe neu rechnenBestätigung mit neuer Summe, bei bezahlter Bestellung Teilerstattung
Menge erhöhen oder Position ergänzenBeginn der Kommissionierung, wenn Bestand frei istVerfügbarkeit prüfen, reservieren, Summe neu rechnenBestätigung oder Ablehnung mit Grund, bei Mehrbetrag Zahlungsaufforderung
ZahlartZahlungseingangZahlungsbedingung im Auftrag ändern, offene Posten anpassenneue Zahlungsinformationen
Storno der ganzen BestellungVersandAuftrag stornieren, Reservierung freigeben, Erstattung anstoßenStornobestätigung mit Erstattungsweg

Zwei Angaben fehlen in der Tabelle mit Absicht: der Preis und das Bestelldatum. Preise einer bestehenden Bestellung neu zu rechnen ist ein eigener Schritt. In Shopware werden Bestellungen nur neu berechnet, wenn das ausdrücklich über die API angestoßen wird (Shopware-Dokumentation). Wer eine Position ergänzt, legt deshalb vorher fest, ob der Preis vom Bestelltag oder der aktuelle Preis gilt. Nach einem Aktionswochenende ist das keine Formalie, denn der Aktionspreis ist dann womöglich nicht mehr aktiv, und die Kundin erwartet ihn trotzdem.

Bei Geschäftskunden kommen Felder hinzu, die im Verbrauchergeschäft selten sind: die Bestellnummer des Kunden, die Kostenstelle, der Wunschtermin. Sie lassen sich meist bis zum Versand ändern, weil sie weder Lager noch Preis berühren, müssen aber in Lieferschein und Rechnung landen. Wie Teilmengen auf mehrere Lieferscheine und Rechnungen verteilt werden, beschreibt der Beitrag zu Teillieferungen und Teilrechnungen.

Die Sperre ab Beginn der Kommissionierung

Die wichtigste Grenze ist der Beginn der Kommissionierung. Bis dahin ist eine Änderung eine Korrektur am Auftrag. Danach ist sie ein Eingriff in einen laufenden Arbeitsgang: Ware liegt im Kommissionierwagen, ein Versandetikett ist vielleicht schon gedruckt, ein Paket steht womöglich an der Rampe. Eine Adressänderung, die jetzt noch durchgeht, erreicht das Paket nur, wenn jemand es im Lager wieder aufhält.

Den Zeitpunkt kennt nur das ERP oder das Lagerverwaltungssystem, der Shop sieht ihn von sich aus nicht. Im Shopware-Quellcode kennt der Lieferzustand die Werte open, shipped_partially, shipped, returned, returned_partially und cancelled, der Bestellzustand die Werte open, in_progress, completed und cancelled (Shopware-Quellcode). Einen eigenen Zustand für die Kommissionierung gibt es in diesem Standard nicht. Die Zustandsautomaten lassen sich zwar über die API anpassen (Shopware-Dokumentation), doch dann muss das ERP den Wechsel auch melden. Ohne Rückmeldung aus dem Lager steht eine Lieferung im Shop bis zum Versand auf open, auch wenn sie längst gepackt wird. Wie Aufträge und Statusmeldungen zwischen den Systemen laufen, beschreibt die Seite zur Warenwirtschaft-Anbindung.

Daraus folgt eine einfache Regel: Die Entscheidung, ob eine Änderung noch möglich ist, trifft das ERP, nicht der Shop. Der Shop fragt vor dem Speichern an, das ERP prüft den Auftragsstand und antwortet. Läuft die Kommissionierung schon, lehnt es ab. Für eine HTTP-Schnittstelle gibt es dafür einen passenden Statuscode: 409 (RFC 9110) bedeutet, dass die Anfrage wegen eines Konflikts mit dem aktuellen Zustand der Zielressource nicht ausgeführt werden konnte. Die Norm sieht dazu vor, dass der Server Angaben mitliefern soll, an denen sich die Ursache des Konflikts erkennen lässt (RFC 9110). Im Fall der Bestellung sind das der Auftragsstand und der Zeitpunkt, ab dem gesperrt ist.

  • Ein eindeutiger Sperrpunkt im ERP: ein Auftragsstand, der den Beginn der Kommissionierung zuverlässig markiert, etwa die Freigabe zur Kommissionierung oder der Druck des Kommissionierscheins.
  • Eine Prüfung vor dem Speichern: Der Shop fragt synchron an, bevor er etwas bestätigt. Eine nachträgliche Ablehnung bedeutet, dass bereits eine falsche Bestätigung unterwegs ist.
  • Eine Antwort mit Grund: gesperrt seit wann, durch welchen Auftragsstand und welchen Weg die Kundin stattdessen hat.
  • Ein Weg für den Ausfall: Antwortet das ERP nicht, nimmt der Shop die Änderung als Anfrage an, bestätigt sie aber erst, wenn das ERP zugestimmt hat.

Der vierte Punkt ist der, an dem Projekte in der Praxis hängen bleiben. Ist das ERP während der Bestellspitze langsam oder kurz nicht erreichbar, darf der Shop die Änderung nicht einfach selbst übernehmen. Er nimmt sie als Anfrage entgegen, zeigt sie im Kundenkonto als „in Prüfung“ an und wartet auf die Entscheidung. Wie sich ein Shop verhält, wenn das ERP ganz ausfällt, beschreibt der Beitrag zum Notbetrieb bei einem ERP-Ausfall.

Entwurf und Live-Fassung: worauf die Schnittstelle hört

In Shopware gibt es eine technische Eigenheit, die bei Bestelländerungen zu verfrühten oder doppelten Meldungen führen kann. Laut Dokumentation wird beim Bearbeiten einer Bestellung in der Verwaltung eine neue Entwurfsversion der Bestellung angelegt, die beim Speichern mit der Live-Fassung zusammengeführt wird (Shopware-Dokumentation). Solange jemand in der Verwaltung arbeitet, existieren also zwei Fassungen derselben Bestellung nebeneinander. Erst mit dem Speichern wird der Entwurf zur gültigen Bestellung.

Für die Schnittstelle heißt das: Sie darf nur auf die Live-Fassung reagieren. Das Codebeispiel der Dokumentation prüft dafür im Ereignis, ob die Versionskennung des Kontexts der Live-Version entspricht, und bricht sonst ab (Shopware-Dokumentation). Die Kennung der Live-Version ist im Quellcode als feste Konstante hinterlegt (Shopware-Quellcode). Wer diesen Vergleich weglässt, schickt dem ERP jeden Zwischenstand aus der Verwaltung, auch einen, der am Ende verworfen wird.

OrderChangeSubscriber.php
public function onOrderWritten(EntityWrittenEvent $event): void
{
    // nur die gespeicherte Live-Fassung an das ERP melden
    if ($event->getContext()->getVersionId() !== Defaults::LIVE_VERSION) {
        return;
    }
    // Changeset lesen, Änderungsereignis bauen, in die Queue stellen
}

Für Apps, die per Webhook angebunden sind, gibt es seit Shopware 6.5.7.0 (Shopware-Dokumentation) die Option onlyLiveVersion. Sie ist standardmäßig ausgeschaltet, und dann wird der Webhook für jede Version der Entität aufgerufen (Shopware-Dokumentation). Wer Bestelländerungen per Webhook abgreift, setzt die Option deshalb ausdrücklich. Die Nutzlast eines entity.written-Webhooks enthält zudem keine vollständige Entität, weil diese bei asynchroner Zustellung veraltet sein könnte, sondern im Kern den Primärschlüssel (Shopware-Dokumentation). Die Schnittstelle lädt den aktuellen Stand der Bestellung also nach, statt sich auf die Nutzlast zu verlassen.

Zwei weitere Details sind für den Abgleich wichtig. Erstens wird ein Changeset, also die Liste der geänderten Felder mit altem und neuem Wert, aus Leistungsgründen nicht automatisch an das Ereignis gehängt; ein Plugin muss es vor dem Schreiben ausdrücklich anfordern (Shopware-Dokumentation). Zweitens werden beim Zusammenführen einer Version alle Versionen davor gelöscht (Shopware-Dokumentation). Die Versionierung ist damit ein Werkzeug für Entwürfe, kein Änderungsverlauf. Wer später nachweisen will, was vorher in der Bestellung stand, braucht ein eigenes Protokoll.

Ein Änderungsereignis statt eines erneuten Exports

Die naheliegende Lösung ist oft die schlechteste: die geänderte Bestellung einfach noch einmal exportieren. Je nach ERP-Anbindung passiert dann eines von drei Dingen. Das ERP legt einen zweiten Auftrag an, weil es die Bestellung als neu erkennt. Oder es lehnt den Import als Dublette ab, und die Änderung verschwindet still. Oder es überschreibt den bestehenden Auftrag vollständig und verliert dabei, was nur im ERP stand: Reservierungen, Lagerplatz, interne Vermerke und den Kommissionierstand.

Besser ist ein eigenes Ereignis, das nur die Änderung transportiert und sich auf den bestehenden Auftrag bezieht. Es enthält die Bestellnummer aus dem Shop und die Auftragsnummer im ERP, eine fortlaufende Änderungsnummer je Bestellung, den Stand, auf den sich die Änderung bezieht, die geänderten Felder mit altem und neuem Wert, die Quelle und den Zeitpunkt. Ein vereinfachtes Beispiel:

order-change-requested.json
{
  "type": "order.change_requested",
  "eventId": "6f1c2e8a-4b7d-4c1e-9a52-0d3b7e5f1a90",
  "orderNumber": "10482",
  "erpOrderNumber": "A-55120",
  "changeNumber": 2,
  "baseRevision": "r1",
  "source": "customer_account",
  "changes": [
    { "field": "shippingAddress.street", "old": "Lindenweg 4", "new": "Am Markt 12" },
    { "lineId": "c41e", "field": "quantity", "old": 2, "new": 3 }
  ],
  "requestedAt": "2026-11-30T09:14:05+01:00"
}

Drei Felder tragen die Sicherheit. Die eventId bleibt bei Wiederholungen gleich; so arbeitet auch Shopware bei Webhooks, deren eventId sich nicht ändert, wenn der Versand erneut versucht wird (Shopware-Dokumentation). Das ERP erkennt damit doppelte Zustellungen und verwirft sie, wie im Beitrag zu Idempotenz und Retry-Strategien beschrieben. Die changeNumber legt die Reihenfolge fest: Kommt Änderung drei vor Änderung zwei an, wartet das ERP oder fordert den fehlenden Stand nach. Und baseRevision nennt den Stand, auf den sich die Änderung bezieht.

Das letzte Feld folgt dem Prinzip bedingter Anfragen in HTTP. Ein Client kann Vorbedingungen an den aktuellen Zustand einer Ressource knüpfen und so verhindern, dass eine Methode auf einen inzwischen veränderten Stand angewendet wird; scheitert die Bedingung, antwortet der Server mit 412 (RFC 9110). Übertragen auf Bestellungen: Hat das ERP den Auftrag inzwischen selbst geändert, etwa weil eine Position nicht lieferbar ist, passt der Bezugsstand nicht mehr. Die Änderung aus dem Shop wird dann nicht blind darübergeschrieben, sondern neu bewertet.

Ob das Ereignis per Webhook, über eine Warteschlange oder über eine Middleware läuft, ist zweitrangig. Wichtig ist, dass es einen eigenen Typ hat und nicht als Bestellexport getarnt ist. Wie Ereignisse zwischen Shop und ERP gepuffert werden, beschreiben die Beiträge zu Webhooks und Polling und zur ereignisgesteuerten Architektur. Die Umsetzung selbst ist typische Arbeit für eine Middleware oder eine eigene API-Entwicklung.

Positionen abgleichen: Menge, neue und entfernte Zeilen

Der heikelste Teil einer Bestelländerung sind die Positionen. Eine Adresse ist ein Feld, eine Positionsliste ist eine Menge von Zeilen, die sich auf drei Arten ändern kann: Eine Zeile bekommt eine andere Menge, eine Zeile kommt hinzu, eine Zeile fällt weg. Der Abgleich muss jede Zeile im Shop genau einer Zeile im ERP zuordnen, sonst rechnet am Ende jedes System mit einer anderen Bestellung.

Stabile Positionskennung

Jede Shop-Position trägt eine eigene Kennung, die bei der Übergabe in der ERP-Position gespeichert wird. Zugeordnet wird über diese Kennung, nicht über die Artikelnummer.

Gleicher Artikel zweimal

Derselbe Artikel kann zweimal in einer Bestellung stehen, etwa als Kaufposition und als Zugabe. Ein Abgleich über die Artikelnummer würde beide Zeilen vermischen.

Menge verringern

Die ERP-Position wird reduziert und die frei werdende Reservierung zurückgegeben. Ist schon teilweise geliefert, darf die Menge nicht unter die gelieferte Menge fallen.

Position ergänzen

Vor dem Anlegen prüft das ERP die Verfügbarkeit und reserviert. Preis und Steuersatz kommen aus der vorher festgelegten Regel, nicht aus dem Zufall des Zeitpunkts.

Position entfernen

Die ERP-Position wird storniert, nicht gelöscht. Sie bleibt mit Menge null und Stornovermerk sichtbar, damit der Ablauf nachvollziehbar bleibt.

Summen gegenrechnen

Nach dem Abgleich vergleicht die Schnittstelle Netto, Steuer und Brutto beider Systeme. Eine Abweichung stoppt die Bestätigung an die Kundin und geht in die Klärung.

Die Summenprüfung am Ende ist kein Misstrauen gegen die eigene Logik, sondern die Stelle, an der Rundung, Rabatte und Versandkosten zusammenkommen. Ändert sich die Menge einer rabattierten Position, kann ein Warenkorbrabatt wegfallen oder sich anders verteilen, und die Versandkosten können eine Stufe wechseln. Wie Abweichungen zwischen Shop, ERP und E-Rechnung entstehen, beschreibt der Beitrag zu Rundungsdifferenzen.

Ändert sich durch die Änderung der Betrag einer bereits bezahlten Bestellung, entsteht eine Zahlungsfolge. Bei weniger Ware wird teilweise erstattet, bei mehr Ware braucht es eine Nachzahlung oder eine neue Autorisierung beim Zahlungsdienst. Beides gehört als eigener Vorgang an die Zahlung und an die Buchhaltung, wie im Beitrag zur Zahlungsabstimmung mit dem ERP beschrieben. Eine Änderung, die den Betrag erhöht, wird erst bestätigt, wenn die Zahlung geklärt ist.

Storno als eigener Statuswechsel

Ein Storno vor dem Versand ist die weitreichendste Änderung und zugleich die einfachste, wenn sie richtig modelliert ist. Der Fehler, der in Schnittstellen regelmäßig auftaucht, ist das Löschen: Die Bestellung verschwindet im Shop oder im ERP, und die andere Seite erfährt davon nichts oder findet später einen Auftrag ohne Gegenstück.

Shopware führt das Storno als Zustand: Bestellung und Lieferung kennen jeweils den Zustand cancelled (Shopware-Quellcode). Bei einer Bestellung starten mindestens drei Zustandsautomaten, für Bestellung, Zahlung und Lieferung (Shopware-Dokumentation). Ein Storno ist deshalb ein Wechsel in diesen Automaten und kein Löschvorgang. Die Schnittstelle überträgt es genau so: als Statuswechsel mit Grund und Zeitpunkt, auf den das ERP mit dem Storno seines Auftrags antwortet.

Auch steuerlich ist Löschen der falsche Weg. Eine Buchung oder Aufzeichnung darf nicht so verändert werden, dass der ursprüngliche Inhalt nicht mehr feststellbar ist (§ 146 Abs. 4 AO). Ein stornierter Auftrag bleibt darum mit Stornovermerk stehen. Ist schon eine Rechnung erzeugt, folgt ein Korrekturbeleg, statt die Rechnung zu löschen; Rechnungen und Korrekturbelege sind als Buchungsbelege acht Jahre aufzubewahren (§ 147 Abs. 3 AO). Welches System die Rechnung erzeugt und damit auch den Korrekturbeleg, klärt der Beitrag Rechnung aus Shop oder ERP.

Ein Storno auf Wunsch der Kundin ist außerdem vom Widerruf zu trennen. Verbraucher haben bei Fernabsatzverträgen in der Regel ein Widerrufsrecht, die Widerrufsfrist beträgt 14 Tage (§ 355 Abs. 2 BGB). Ein Händler, der ein Storno vor dem Versand ablehnt, kann die Ware deshalb ohnehin zurückbekommen, nur später und mit Hin- und Rücksendung. Ob ein Storno als Kulanz angenommen oder als Widerruf behandelt wird, ist eine Geschäftsentscheidung; technisch sollte die Schnittstelle beide Wege kennen. Den Widerruf als eigenen Datensatz beschreibt der Beitrag zum Widerrufsbutton im Shop.

  1. Die Kundin oder der Kundenservice fordert das Storno im Shop an; der Shop fragt beim ERP den Auftragsstand ab.
  2. Ist die Kommissionierung noch nicht begonnen, storniert das ERP den Auftrag und gibt die Reservierungen frei.
  3. Das ERP meldet den Stornostand zurück; erst dann setzt der Shop Bestellung und Lieferung auf storniert.
  4. Die Zahlung wird erstattet oder die Autorisierung freigegeben, als eigener Vorgang mit Bezug auf die Bestellung.
  5. Die Kundin erhält eine Stornobestätigung, und im Kundenkonto steht die Bestellung als storniert mit Datum.
  6. Läuft die Kommissionierung bereits, lehnt das ERP ab, und die Kundin erfährt, wie die Rücksendung nach der Zustellung funktioniert.

Die Rückmeldung an das Kundenkonto

Für die Kundin zählt am Ende, was sie sieht. Eine Änderung hat drei mögliche Zustände: angefragt, übernommen, abgelehnt. Jeder davon gehört ins Kundenkonto und in eine Nachricht. Wer nur den Erfolgsfall bestätigt, lässt die Kundin bei einer Ablehnung im Unklaren, und genau dann greift sie zum Telefon.

Bei angefragten Änderungen hilft eine klare Formulierung: Die Änderung ist eingegangen und wird geprüft, verbindlich ist sie erst mit der Bestätigung. Das entspricht der rechtlichen Lage, denn eine Vertragsänderung braucht die Zustimmung beider Seiten (§ 311 Abs. 1 BGB). Und es schützt vor einem typischen Fehler in diesem Prozess, der verfrühten Bestätigung, die das Lager nicht erreicht hat.

Die Bestätigung selbst ist mehr als eine Benachrichtigung. Eine geänderte Auftragsbestätigung ist im kaufmännischen Verkehr in der Regel ein Handels- oder Geschäftsbrief. Wiedergaben abgesandter Handels- oder Geschäftsbriefe sind steuerlich sechs Jahre aufzubewahren (§ 147 Abs. 3 AO), handelsrechtlich gilt für Handelsbriefe ebenfalls eine Frist von sechs Jahren (§ 257 Abs. 4 HGB). Die Nachricht an die Kundin gehört deshalb mit Inhalt und Versandzeitpunkt ins Archiv, nicht nur in das Versandprotokoll des Mailservers.

Im Konto von Geschäftskunden lohnt sich eine Änderungshistorie je Bestellung: welche Änderung wann angefragt wurde, ob sie übernommen wurde und mit welcher Begründung sie abgelehnt wurde. Wie der Auftragsstatus aus dem ERP aktuell ins Kundenkonto kommt, beschreibt der Beitrag Auftragsstatus live aus dem ERP. Ändert sich die Rechnungsanschrift erst nach der Rechnungsstellung, genügt es nicht, die Adresse im Konto zu tauschen: Eine Rechnung mit unzutreffenden Angaben wird über ein Dokument berichtigt, das spezifisch und eindeutig auf die Rechnung bezogen ist (§ 31 Abs. 5 UStDV).

Das Änderungsprotokoll

Weil Shopware beim Zusammenführen ältere Versionen löscht, taugt die Versionierung nicht als Verlauf inhaltlicher Änderungen. Zustandswechsel hält Shopware zwar in einer eigenen Historie mit altem und neuem Zustand fest (Shopware-Quellcode), eine geänderte Adresse oder Menge steht dort aber nicht. Und weil das ERP meist nur den aktuellen Auftrag zeigt, bleibt dort oft nur ein Änderungsdatum stehen. Das Protokoll gehört deshalb in die Schnittstelle oder die Middleware, als Liste unveränderlicher Einträge je Bestellung. Ein Eintrag enthält:

  • Bestellnummer aus dem Shop, Auftragsnummer im ERP und Änderungsnummer
  • Quelle der Änderung: Kundenkonto, Kundenservice, Verwaltung oder ERP
  • geänderte Felder mit altem und neuem Wert, bei Positionen mit Positionskennung
  • Antwort des ERP: übernommen oder abgelehnt, mit Grund und Auftragsstand
  • Zeitpunkte von Anfrage, Entscheidung und Bestätigung an die Kundin
  • Verweis auf die versandte Bestätigung und gegebenenfalls auf Korrekturbelege

Ein solches Protokoll erfüllt zwei Zwecke. Es macht Rückfragen beantwortbar, wenn eine Kundin wissen will, warum ihre Änderung nicht angekommen ist. Und es erfüllt die Anforderung, dass der ursprüngliche Inhalt einer Aufzeichnung feststellbar bleiben muss (§ 146 Abs. 4 AO). Wo die Schnittstelle in der Verfahrensdokumentation auftaucht, beschreibt der Beitrag zur GoBD-Verfahrensdokumentation für Schnittstellen.

Das Protokoll enthält Adressen und damit personenbezogene Daten. Es braucht darum eine festgelegte Speicherdauer, die sich an den Aufbewahrungspflichten orientiert, einen eingeschränkten Kreis von Lesenden und nicht mehr Felder als nötig. Für die Fehlersuche genügt meist die Kennung der Änderung; die vollständige Adresse muss nicht in jedem technischen Log stehen, wenn sie im Protokoll steht.

Die Einführung in sechs Schritten

Lieferadresse, Rechnungsadresse, Menge, zusätzliche Position, Zahlart und Storno: je Art die Grenze im Auftragsstand und die Rückmeldung an die Kundin, abgestimmt mit Lager, Kundenservice und Buchhaltung.

Wer die Schnittstelle vor der nächsten Aktionswoche anpassen will, sollte den neuen Änderungsprozess nicht in die Woche selbst legen. Ein Änderungsstopp an Schnittstellen während der Aktionstage ist ein bewährtes Mittel, wie der Beitrag zur Bestellspitze zur Black Week beschreibt. Die Regeln aus diesem Beitrag lassen sich aber auch danach einführen, denn Änderungswünsche zu Aktionsbestellungen entstehen erst, nachdem bestellt wurde. Bei Anbindungen an SAP oder JTL-Wawi unterscheiden sich vor allem die Stellen, an denen der Auftragsstand abgefragt wird; das Prinzip bleibt gleich.

Erst fragen, dann bestätigen

Eine Bestelländerung nach der ERP-Übergabe ist eine kleine Vertragsänderung mit Folgen im Lager. Sie gelingt, wenn das ERP über den Sperrpunkt entscheidet, die Schnittstelle nur auf die gespeicherte Live-Fassung hört, ein eigenes Änderungsereignis statt eines Exports schickt und jede Änderung mit altem und neuem Wert protokolliert. Dann sieht die Kundin dasselbe wie das Lager.
Dieser Artikel basiert auf Daten aus: Bitkom, Presseinformation „Black Friday: Die Hälfte geht auf Schnäppchenjagd“ vom 24. November 2025 (Bitkom Research, 1.120 Internetnutzende ab 16 Jahren, darunter 1.072 Online-Shopper, Befragung in den Kalenderwochen 40 und 41 des Jahres 2025); Shopware-Dokumentation, Seiten „Listen to Order Changes“, „Orders“, „Versioning Entities“ und „Webhook“; Shopware-Quellcode, Klassen OrderStates, OrderDeliveryStates, Defaults und StateMachineHistoryDefinition; RFC 9110 der IETF (HTTP Semantics); Bürgerliches Gesetzbuch, § 311 Abs. 1, § 312i Abs. 1 und § 355 Abs. 2; Abgabenordnung, § 146 Abs. 4 und § 147 Abs. 3; Handelsgesetzbuch, § 257 Abs. 4; Umsatzsteuer-Durchführungsverordnung, § 31 Abs. 5. Die Hinweise zu Recht und Steuer ersetzen keine Beratung.

Verwandte Artikel

Recht & Compliance

Rundungsdifferenzen zwischen Shop, ERP und E-Rechnung lösen

Cent-Differenzen zwischen Shop, ERP und E-Rechnung vermeiden: was die EN-16931-Regel BR-CO-17 verlangt, Steuer je Position oder Summe, Rabatte und Testfälle.

22 Min. Lesezeit
APIs, Middleware & Architektur

Massenimport aus dem ERP: die Sync-API von Shopware nutzen

Massenimport aus dem ERP in Shopware: Sync-API mit Upsert und Delete, Paketgrößen nach Server-Grenzen, Indexierung über die Message Queue und Delta-Abgleich.

19 Min. Lesezeit
ERP- & Warenwirtschaft

Bestellspitze zur Black Week: ERP-Schnittstelle vorbereiten

Black Week 2026: Auftragsfluss zwischen Shop und ERP vorbereiten – Rückstau messen, Nachtjobs verschieben, Warteschlange mit Alarm, Änderungsstopp, Notweg.

18 Min. Lesezeit