DEV Community

zrapp.de
zrapp.de

Posted on Originally published at zrapp.de

Shopify-Rechnungen automatisiert an sevdesk & Lexware Office übergeben – der Webhook-Ansatz

Jeder Shopify-Shop erzeugt denselben wiederkehrenden Task: bezahlte Bestellung → Rechnung in der Buchhaltung. Solange man das manuell macht, ist es der langsamste und fehleranfälligste Schritt im ganzen Fulfillment. Dabei ist es der am besten automatisierbare – weil Shopify für jedes relevante Ereignis einen Webhook liefert.

Die Ereignisse, die zählen

Für saubere Buchhaltung reichen ein paar Shopify-Webhooks:

  • orders/paid → Rechnung erstellen
  • refunds/create → Gutschrift erzeugen
  • orders/cancelled → Storno
  • orders/fulfilled → Lieferdatum aktualisieren

Wichtig ist eine Idempotenz-/Doppelerkennung: Shopify kann Webhooks mehrfach zustellen, und ohne Deduplizierung landen Rechnungen doppelt in der Buchhaltung.

Der schwierige Teil ist die Steuer

Das eigentliche Problem ist nicht der HTTP-Call, sondern die Steuerlogik. Ein deutscher Shop mit EU-Verkäufen muss unterscheiden:

  • Inland: 19 % / 7 %
  • EU B2B: Reverse-Charge (0 %, mit gültiger USt-ID)
  • EU B2C: One-Stop-Shop (OSS), 7–27 % je nach Zielland
  • Drittland: 0 %
  • Kleinunternehmer: §19 UStG (0 %)

Die Zielland-Erkennung und das Mapping auf den richtigen Steuersatz in sevdesk bzw. Lexware Office ist der Teil, der die meiste Arbeit macht – und wo manuelle Prozesse regelmäßig Fehler produzieren.

Build vs. Buy

Man kann das selbst bauen (Shopify-App mit Webhook-Endpoints, Token-Handling, Retry-Logik, Steuer-Mapping, E-Rechnung XRechnung/ZUGFeRD). Realistisch ist das mehr Aufwand als gedacht, vor allem wegen der Randfälle: Teil-Rückerstattungen, gemischte Steuersätze pro Bestellung, gültige vs. ungültige USt-IDs.

Wer es nicht selbst pflegen will, nimmt eine fertige Lösung wie zrapp, die genau diesen Flow abbildet – Webhooks, Steuer-Mapping, Doppelerkennung, E-Rechnung – und an sevdesk oder Lexware Office übergibt.

Falls du es selbst baust: Achte früh auf Idempotenz und ein sauberes Log jeder Übertragung. Das spart dir später viel Debugging.

Ursprünglich veröffentlicht auf zrapp.de.

Top comments (0)