{"id":29738,"date":"2026-01-02T11:12:00","date_gmt":"2026-01-02T10:12:00","guid":{"rendered":"https:\/\/www.web-systems.pl\/ksef-im-online-shop-plugin-reicht-nicht-aus\/"},"modified":"2026-01-02T11:12:00","modified_gmt":"2026-01-02T10:12:00","slug":"ksef-im-online-shop-plugin-reicht-nicht-aus","status":"publish","type":"post","link":"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/","title":{"rendered":"KSeF im Online-Shop: was ein Plugin allein nicht l\u00f6st"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ein Gespr\u00e4ch \u00fcber KSeF, das polnische E-Rechnungssystem, im Online-Shop beginnt fast immer mit der Frage \u201ewelches Plugin sollen wir installieren&#8221;. Eine Frage nach dem Werkzeug, gestellt in einem Moment, in dem noch niemand die Fragen zum Prozess beantwortet hat. Aus meiner Sicht, als jemand, der seit Jahren Shops mit Finanzsystemen verbindet, ist das Plugin das letzte Teil in diesem Puzzle. Nicht das erste. Und die Dinge, die sp\u00e4ter am meisten kosten, entstehen aus Entscheidungen, die lange getroffen wurden, bevor \u00fcberhaupt jemand den Integrationscode angefasst hat.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Inhaltsverzeichnis<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/#Ein_Plugin_ist_eine_Schnittstelle_kein_Rechnungsprozess\" >Ein Plugin ist eine Schnittstelle, kein Rechnungsprozess<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/#Kundendaten_woher_soll_der_Shop_wissen_an_wen_er_fakturiert\" >Kundendaten: woher soll der Shop wissen, an wen er fakturiert<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/#KSeF_im_E-Commerce_und_die_Systeme_die_Sie_bereits_haben\" >KSeF im E-Commerce und die Systeme, die Sie bereits haben<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/#Stoerungen_Limits_und_Sicherheit_auf_der_Serverseite\" >St\u00f6rungen, Limits und Sicherheit auf der Serverseite<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/#Was_tatsaechlich_ueberwacht_werden_muss\" >Was tats\u00e4chlich \u00fcberwacht werden muss<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/#Zugangsdaten_in_einer_oeffentlich_erreichbaren_Anwendung\" >Zugangsdaten in einer \u00f6ffentlich erreichbaren Anwendung<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/#Korrekturen_Retouren_und_Reklamationen_also_der_Shop-Alltag\" >Korrekturen, Retouren und Reklamationen, also der Shop-Alltag<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/#Kostenstruktur_von_Umsetzung_und_Betrieb\" >Kostenstruktur von Umsetzung und Betrieb<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.web-systems.pl\/de\/ksef-im-online-shop-plugin-reicht-nicht-aus\/#Fazit_das_Plugin_am_Ende_nicht_am_Anfang\" >Fazit: das Plugin am Ende, nicht am Anfang<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ein_Plugin_ist_eine_Schnittstelle_kein_Rechnungsprozess\"><\/span>Ein Plugin ist eine Schnittstelle, kein Rechnungsprozess<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Shop-Erweiterung baut das Dokument und schickt es an das Gateway. Sch\u00f6n und gut. Sie entscheidet nur nicht, wann dieses Dokument \u00fcberhaupt entstehen soll, und genau darum geht es bei der Umsetzung. Im E-Commerce sind die Bestellung, die Verbuchung der Zahlung und die Warenausgabe drei getrennte Ereignisse, zeitlich auseinandergezogen und mit v\u00f6llig unterschiedlichen Risiken behaftet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der h\u00e4ufigste Fehler? Der Shop stellt die Rechnung im Moment der Bestellung aus, die \u00dcberweisung kommt nie an, und im Register liegt bereits ein Dokument, das korrigiert werden muss. Das andere Extrem, also erst nach dem Versand zu fakturieren, kann bei Bestellungen um den Monatswechsel herum die Abrechnungsperioden durcheinanderbringen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die sinnvolle Entscheidung besteht darin, den Ausl\u00f6ser f\u00fcr die Rechnungsstellung in der Gesch\u00e4ftslogik zu definieren, serverseitig, mit ausdr\u00fccklich aufgeschriebenen Ausnahmen: Vorkasse, Nachnahme, Zahlungsziel, teilweise ausgef\u00fchrte Bestellung. Die Einstellungen des Plugins bilden diese Entscheidung dann ab, statt sie f\u00fcr uns zu treffen. Erst an diesem Punkt ist <a href=\"https:\/\/www.web-systems.pl\/de\/ksef-anbindung-onlineshop\/\">die Anbindung des Shops an KSeF<\/a> keine Frage der Konfiguration mehr, sondern eine Frage des Entwurfs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Kundendaten_woher_soll_der_Shop_wissen_an_wen_er_fakturiert\"><\/span>Kundendaten: woher soll der Shop wissen, an wen er fakturiert<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das System bedient den Handel zwischen Unternehmen, und der Verkauf an Verbraucher folgt einer anderen Logik. Der Shop muss diese Wege bereits auf Ebene des Warenkorbs trennen, bevor der Kunde auf \u201ebestellen&#8221; klickt. Eine Steuernummer nachtr\u00e4glich an eine abgeschlossene Bestellung zu heften, ist der direkte Weg zu Fehlern und Korrekturen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein NIP-Feld im Formular allein? Zu wenig. N\u00f6tig sind eine Pr\u00fcfung von Format und Pr\u00fcfsumme, eine L\u00e4nderpr\u00fcfung und die Stimmigkeit mit den \u00fcbrigen Adressdaten, denn ein Kunde, der eine Firmennummer zu einer privaten Lieferadresse eintr\u00e4gt, ist Alltag. Dazu kommen ausl\u00e4ndische Kunden, EU-Umsatzsteuer-Identifikationsnummern, das OSS-Verfahren und der Verkauf \u00fcber Marktpl\u00e4tze. Jede dieser Zuordnungen legt noch etwas obendrauf.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein eigenes Thema, meist deutlich untersch\u00e4tzt: Konten, die vor Jahren angelegt wurden, mit unvollst\u00e4ndigen oder veralteten Daten. Bei der Migration m\u00fcssen sie erg\u00e4nzt, markiert oder bewusst von der automatischen Rechnungsstellung ausgenommen werden. Sonst erzeugt die Automatik einen Stapel Dokumente, die sp\u00e4ter niemand verteidigen kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"KSeF_im_E-Commerce_und_die_Systeme_die_Sie_bereits_haben\"><\/span>KSeF im E-Commerce und die Systeme, die Sie bereits haben<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Shop ist selten der einzige Ort, an dem eine Rechnung entsteht. Daneben laufen das Lager, ein ERP, ein Rechnungsprogramm und das Steuerb\u00fcro, und jedes dieser Systeme durfte historisch ein Dokument ausstellen. Nach dem Anschluss an das zentrale Register h\u00f6rt diese Mehrgleisigkeit auf, eine kleine Unbequemlichkeit zu sein, und wird zu einem echten Risiko.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die klassische St\u00f6rung bei der Umsetzung ist der doppelte Versand. Dasselbe Dokument geht aus dem Shop und aus dem Lagersystem an das Gateway, weil niemand festgelegt hat, wer die Quelle der Wahrheit ist. Das kommt meist im Nachhinein heraus, beim Abgleich der Ums\u00e4tze f\u00fcr den Zeitraum. Derselben Frage entkommt man auch bei Projekten wie der <a href=\"https:\/\/www.web-systems.pl\/de\/woocommerce-erp-anbindung-subiekt-optima\/\">Anbindung an Subiekt und Optima<\/a> nicht, bei der die Dokumentennummerierung einen einzigen Eigent\u00fcmer haben muss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die architektonische Entscheidung klingt banal und tut organisatorisch weh: ein einziger Punkt, an dem Dokumente ausgegeben werden, alle \u00fcbrigen Systeme \u00fcbernehmen ausschlie\u00dflich Nummer und Status. Die Integration st\u00fctzt sich besser auf eine Ereigniswarteschlange als auf einen synchronen Aufruf, denn der Abschluss einer Bestellung darf nicht auf die Antwort eines externen Gateways warten. Der Kunde soll die Kaufbest\u00e4tigung sehen, unabh\u00e4ngig davon, was im Hintergrund weiter passiert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Stoerungen_Limits_und_Sicherheit_auf_der_Serverseite\"><\/span>St\u00f6rungen, Limits und Sicherheit auf der Serverseite<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das Gateway ist manchmal nicht erreichbar, und der Shop darf deswegen den Verkauf nicht anhalten. N\u00f6tig sind eine dauerhafte Dokumentenwarteschlange, Wiederholungen mit wachsendem Abstand und ein deutlicher Status \u201ewartet auf Versand&#8221;, sichtbar f\u00fcr das Team und nicht nur in einem technischen Log irgendwo auf dem Server.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Was_tatsaechlich_ueberwacht_werden_muss\"><\/span>Was tats\u00e4chlich \u00fcberwacht werden muss<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dokumente, die l\u00e4nger als eine festgelegte Schwelle in der Warteschlange liegen,<\/li>\n<li>Dokumente, die bei der Strukturpr\u00fcfung abgelehnt wurden, samt gespeichertem Fehlertext,<\/li>\n<li>bevorstehender Ablauf von Tokens, Zertifikaten und Sitzungen,<\/li>\n<li>die Verz\u00f6gerung zwischen dem Erstellen einer Rechnung und der Vergabe ihrer Nummer im System,<\/li>\n<li>Abweichungen in der Anzahl der Dokumente zwischen Shop und Finanzsystem f\u00fcr denselben Zeitraum.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ohne Benachrichtigungen f\u00e4llt jedes dieser Probleme erst beim Monatsabschluss auf. Also genau dann, wenn Korrekturen am teuersten sind und unter Zeitdruck gemacht werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Zugangsdaten_in_einer_oeffentlich_erreichbaren_Anwendung\"><\/span>Zugangsdaten in einer \u00f6ffentlich erreichbaren Anwendung<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der Zugang zum System bedeutet echte Berechtigungen f\u00fcr die Dokumente des Unternehmens. Ihn in der Optionstabelle im Klartext aufzubewahren, ist eine Zeitbombe. Ein Shop ist eine Anwendung, die der Welt ausgesetzt ist und t\u00e4glich gescannt wird, ein v\u00f6llig anderes Risikoprofil als ein internes ERP hinter einer Firewall.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein vern\u00fcnftiges Muster verlagert den Umgang mit Zugangsdaten in eine Zwischenschicht in einer vertrauensw\u00fcrdigen Umgebung. Der Shop ver\u00f6ffentlicht dann nur das Gesch\u00e4ftsereignis und kennt keinerlei Geheimnisse. Bei h\u00f6herem Verkehr und umfangreicher Logik endet das mitunter in der Entscheidung f\u00fcr <a href=\"https:\/\/www.web-systems.pl\/de\/migration-von-woocommerce-auf-dediziertes-backend\/\">den Umstieg auf ein eigenes Backend<\/a>. Aufbewahrung der Logs und Archivierung der Dokumente werden getrennt entworfen, denn das sind Anforderungen, die kein Plugin f\u00fcr jemanden erledigt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Korrekturen_Retouren_und_Reklamationen_also_der_Shop-Alltag\"><\/span>Korrekturen, Retouren und Reklamationen, also der Shop-Alltag<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Warenr\u00fccksendung im Onlinehandel ist die Regel, kein Zwischenfall. Wenn das so ist, muss das Korrigieren genau im selben Ma\u00df automatisiert sein wie das Ausstellen. Sonst landet die gesamte Ersparnis aus der Automatisierung auf dem Schreibtisch der Buchhaltung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Korrektur verweist auf die Nummer des urspr\u00fcnglichen Dokuments, also muss diese Nummer dauerhaft mit der Bestellung in der Datenbank des Shops verkn\u00fcpft sein. Nicht im Integrationslog, das nach einem Monat rotiert wird. Ich habe das ein paar Mal gesehen &#8211; die L\u00fccke zeigt sich erst bei der ersten ernsthaften Retoure, und dann ist es bereits unangenehm.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Teilretouren, Warentausch und nach dem Verkauf gew\u00e4hrte Rabatte erfordern die Abbildung der Bestellpositionen, nicht nur des Gesamtbetrags. Eine misslungene Umsetzung erkenne ich an einem Symptom: Korrekturen werden von Hand in einem anderen Programm erstellt und kehren nie in den Shop zur\u00fcck. Die Daten an beiden Orten beginnen dann, ein Eigenleben zu f\u00fchren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Kostenstruktur_von_Umsetzung_und_Betrieb\"><\/span>Kostenstruktur von Umsetzung und Betrieb<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Plugin-Lizenz ist hier der kleinste Posten und zugleich der am lautesten diskutierte. Das Budget treiben drei andere Dinge: die Zahl der anzubindenden Systeme, die Qualit\u00e4t der historischen Daten und die Zahl der Ausnahmen im Verkaufsprozess, also alles, was von einer gew\u00f6hnlichen, im Voraus bezahlten Bestellung abweicht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Betrieb kostet im Rhythmus der \u00c4nderungen, nicht gleichm\u00e4\u00dfig. Aktualisierungen des Dokumentenschemas, \u00c4nderungen an der Schnittstelle des Gateways, Shop-Migrationen, der Wechsel von Zahlungsanbietern, Aktualisierungen der Plugins selbst &#8211; jede dieser Sachen kann die Integration genau dann st\u00f6ren, wenn niemand damit rechnet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb sind eine Testumgebung und ein wiederholbares, reproduzierbares Deployment kein Luxus, sondern der Weg dahin, dass eine einzelne \u00c4nderung den Verkauf nicht f\u00fcr mehrere Stunden stoppt. Und der gr\u00f6\u00dfte versteckte Kostenblock bleibt ohnehin die Handarbeit der Buchhaltung in einer Situation, in der die Automatik ausschlie\u00dflich den gl\u00fccklichen Pfad bedient und alle Abweichungen bei Menschen landen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fazit_das_Plugin_am_Ende_nicht_am_Anfang\"><\/span>Fazit: das Plugin am Ende, nicht am Anfang<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Reihenfolge, die sich bew\u00e4hrt, ist der intuitiven entgegengesetzt. Zuerst die Karte des Verkaufsprozesses und die Festlegung der Quelle der Wahrheit f\u00fcr Dokumente, dann der Entwurf von Integration und Fehlerbehandlung, und das konkrete Werkzeug w\u00e4hlen wir am Ende, wenn bereits klar ist, was es tun soll.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Anzeichen, dass ein Projekt in die falsche Richtung l\u00e4uft, sieht man fr\u00fch: niemand ist auf der Gesch\u00e4ftsseite Eigent\u00fcmer des Prozesses, es gibt weder Monitoring noch Benachrichtigungen, Korrekturen entstehen au\u00dferhalb des Systems. Jedes dieser Symptome l\u00e4sst sich beheben. Nur ist es billiger, das vor dem Start zu tun als nach dem ersten Monatsabschluss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei Web Systems entwerfen wir seit 2006 Integrationen, Automatisierungen und B2B-Systeme rund um Online-Shops. Wenn Sie <a href=\"https:\/\/www.web-systems.pl\/de\/erstellung-von-online-shops\/\">die Umsetzung eines Online-Shops<\/a> planen, Ihren Dokumentenfluss ordnen oder \u00fcber die Modernisierung Ihres Shops und der Systeme darum herum nachdenken, schreiben Sie uns und lassen Sie uns \u00fcber den Umfang sprechen.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Ein Gespr\u00e4ch \u00fcber KSeF, das polnische E-Rechnungssystem, im Online-Shop beginnt fast immer mit der Frage \u201ewelches Plugin sollen wir installieren&#8221;. Eine Frage nach dem Werkzeug, gestellt in einem Moment, in dem noch niemand die Fragen zum Prozess beantwortet hat. Aus meiner Sicht, als jemand, der seit Jahren Shops mit Finanzsystemen verbindet, ist das Plugin das [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":29682,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[813],"tags":[949,2100,987,2106,1127,2027,1191],"class_list":["post-29738","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-e-commerce-de","tag-e-commerce-de","tag-e-rechnung","tag-integrationen","tag-ksef-de","tag-online-shop","tag-rechnungen","tag-woocommerce-de"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/posts\/29738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/comments?post=29738"}],"version-history":[{"count":0,"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/posts\/29738\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/media\/29682"}],"wp:attachment":[{"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/media?parent=29738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/categories?post=29738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.web-systems.pl\/de\/wp-json\/wp\/v2\/tags?post=29738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}