WooCommerce Entwickler in Bonn

WooCommerce-Entwickler für Bonn: B2B-Bestellungen von EU-Geschäftskunden mit USt-IdNr.-Prüfung über das BZSt, steuerfreier Lieferung und Daten für die E-Rechnung. Ich arbeite allein, remote und schriftlich.

WooCommerce Entwickler

Mein Platz in der WordPress-Community

  • Mein wordpress.org-Konto besteht seit 2006.
  • Ich habe zum WordPress-Core in den Versionen 7.0 und 7.1 beigetragen.
  • Ich betreue 30 Plugins auf wordpress.org.
  • Ich organisiere WordCamps und trete dort als Speaker auf.
  • Ich war bei jedem WordCamp Europe von 2017 bis 2026 dabei.

Mein WordPress.org-Profil

Das Bundeszentralamt für Steuern sitzt in Bonn, An der Küppe 1. Wer als Bonner Händler an Geschäftskunden in anderen EU-Staaten verkauft, hängt mit seinem Shop an dieser Behörde: Sie bestätigt, ob die USt-IdNr. eines Kunden gültig ist, und von dieser Bestätigung hängt ab, ob die Lieferung steuerfrei bleibt. Ich baue WooCommerce-Shops, die diese Prüfung am Checkout erledigen, das Ergebnis an der Bestellung festhalten und die Rechnungsdaten so führen, dass Ihre Buchhaltung nicht nacharbeiten muss. Ich bin ein einzelner Entwickler, arbeite remote und schriftlich, und die steuerlichen Festlegungen treffen Sie mit Ihrer Steuerberatung. Ich setze sie um.

Dienstgebäude des Bundeszentralamts für Steuern am Platanenweg in Bonn-Beuel

Foto: Eckhard Henkel, CC BY-SA 3.0 de, Wikimedia Commons.

#Warum die USt-IdNr. am Checkout geprüft werden sollte

Eine Lieferung an einen Unternehmer in einem anderen Mitgliedstaat ist nach § 4 Nr. 1 Buchstabe b UStG steuerfrei, wenn sie eine innergemeinschaftliche Lieferung nach § 6a UStG ist. Dafür muss unter anderem der Abnehmer ein in einem anderen Mitgliedstaat erfasster Unternehmer sein, der die Ware für sein Unternehmen erwirbt, und er muss gegenüber Ihnen eine gültige USt-IdNr. eines anderen Mitgliedstaats verwendet haben. Außerdem verlangt § 6a Abs. 3, dass Sie die Voraussetzungen nachweisen. Auch das BZSt schreibt auf seiner Seite zur USt-IdNr., der Besitz einer gültigen Nummer sei eine der Voraussetzungen dafür, dass solche Lieferungen steuerfrei erbracht und empfangen werden können.

Zwei Regeln machen die Prüfung im Shop wertvoll. Erstens schützt § 6a Abs. 4 UStG Sie, wenn der Kunde falsche Angaben gemacht hat und Sie das bei der Sorgfalt eines ordentlichen Kaufmanns nicht erkennen konnten. Das setzt voraus, dass Sie überhaupt sorgfältig geprüft haben. Zweitens entfällt die Steuerbefreiung nach § 4 Nr. 1 Buchstabe b UStG, wenn die Zusammenfassende Meldung nach § 18a nicht oder unrichtig abgegeben wurde. Das BZSt nennt dafür als Frist den 25. Tag nach Ablauf des Meldezeitraums. Eine Bestellung ohne belastbar gespeicherte Nummer ist später schwer zu melden.

#Wie das BZSt-Bestätigungsverfahren funktioniert

Rechtsgrundlage ist § 18e UStG: Das BZSt bestätigt dem Unternehmer auf Anfrage die Gültigkeit einer USt-IdNr. eines anderen Mitgliedstaats sowie Name und Anschrift der Person, der sie erteilt wurde. Die Daten selbst liegen nicht in Deutschland. Das BZSt leitet die Anfrage automatisiert an die Behörde des jeweiligen Mitgliedstaats weiter und gibt deren Ergebnis wieder. Eine Korrektur kann nur Ihr Geschäftspartner bei seiner heimischen Behörde veranlassen.

Auf der BZSt-Seite zur Bestätigung ausländischer USt-IdNrn. stehen die Wege im Einzelnen:

  • Einzelabfrage über das Internetformular. Für den manuellen Fall, etwa bei einer telefonischen Bestellung.
  • Abfrage über die REST-API. Sie richtet sich an Unternehmen mit vielen Anfragen und kann in eigene Systeme eingebunden werden. Die Einbindung liegt nach Angabe des BZSt in der Verantwortung des Unternehmens. Hier setzt der Shop an.
  • XML-RPC-Schnittstelle. Das BZSt führt sie auf seiner Schnittstellenseite mit dem Zusatz “ab 30.11.2025 obsolet”. Ein älteres Plugin, das noch gegen diese Adresse fragt, sollten Sie ersetzen lassen.

Die API-Beschreibung kennt zwei Abfrageformen. Die einfache Abfrage bestätigt nur, ob die Nummer gültig ist. Die qualifizierte Abfrage vergleicht zusätzlich Firmenname und Ort, optional Straße und Postleitzahl, und gibt für jedes Feld einen Buchstaben zurück: A für Übereinstimmung, B für Abweichung, C für nicht angefragt, D für vom Mitgliedstaat nicht mitgeteilt. Als anfragende Nummer muss eine deutsche USt-IdNr. angegeben werden, die das BZSt nach § 27a UStG erteilt hat. Bei Abfragen über die Schnittstelle ist der Nachweis einer qualifizierten Abfrage nach Angabe des BZSt über den empfangenen Datensatz zu führen. Das ist die Begründung dafür, die Antwort im Shop zu speichern und nicht nur das Häkchen im Warenkorb.

Die Statusmeldungen der API sind der Teil, an dem Shops in der Praxis scheitern. Es gibt eine Meldung für eine gültige Nummer, für eine nicht vergebene, für eine erst später gültige, für eine früher gültige (mit den Feldern gueltigAb und gueltigBis), für eine syntaktisch falsche Nummer, für einen Fehler bei der Verarbeitung im Mitgliedstaat und für eine vorübergehend nicht mögliche Bearbeitung. Außerdem liefert die API eine Liste der EU-Mitgliedstaaten mit der aktuellen Verfügbarkeit des jeweiligen Systems. Das BZSt weist auf Wartungsarbeiten zwischen 23:00 und 05:00 Uhr hin und bittet bei starker Verzögerung oder Timeouts, die Abfrage zu einer anderen Tageszeit zu wiederholen und nicht sofort erneut zu senden. Ein Checkout, der bei jeder Verzögerung automatisch weiterfragt, tut genau das Falsche.

#So baue ich die Prüfung in den WooCommerce-Checkout

Der Ablauf, den ich auf dem Staging-Shop umsetze:

  1. Ein Feld für die USt-IdNr. erscheint im Checkout, sobald ein Firmenname angegeben ist und das Lieferland ein anderer EU-Staat ist. Je nach Shop läuft der Checkout klassisch oder mit Blöcken, die Erweiterung hängt dann an anderen Schnittstellen.
  2. Bei der Validierung geht eine Abfrage an die REST-API des BZSt. Für eine Rechnung an Unternehmen mit Firmendaten nutze ich die qualifizierte Form mit Name und Ort.
  3. Ist die Nummer gültig, setze ich die Kundin oder den Kunden im Warenkorb auf steuerfrei. WooCommerce kennt dafür die Eigenschaft “VAT exempt” am Kundenobjekt, der Warenkorb rechnet danach ohne Steuer.
  4. An der Bestellung speichere ich die abgefragte Nummer, den Zeitpunkt, den Status und die Vergleichsbuchstaben als Bestellmeta, kompatibel mit der High-Performance-Order-Storage-Tabelle von WooCommerce.
  5. Das Ergebnis wird nicht bei jedem Seitenaufruf neu abgefragt, sondern einmal je Bestellversuch.

Die schwierigen Entscheidungen liegen in den Fehlerpfaden, nicht im Normalfall. Bei einer ungültigen Nummer fragt der Checkout nach einer korrigierten Eingabe oder berechnet die Steuer. Bei einem Fehler im Mitgliedstaat gibt es drei vernünftige Wege: mit Steuer weiterlaufen lassen, die Bestellung zur manuellen Prüfung anhalten oder den Kunden bitten, es später zu versuchen. Welcher passt, hängt von Ihrem Warenwert und Ihrer Kundenstruktur ab, und Sie entscheiden das schriftlich, bevor ich es einbaue. Jeder Pfad bekommt eine Testbestellung auf dem Staging-Shop.

#Reverse Charge und Steuerfreiheit: welcher Fall braucht welchen Rechnungshinweis

Hier wird “Reverse Charge” oft für alles benutzt. Für die Rechnungstexte lohnt die Unterscheidung. Die folgende Tabelle ersetzt keine Steuerberatung, sie zeigt, welche Norm welchen Hinweis auslöst.

FallNormHinweis auf der Rechnung
Ware geht von Ihnen an einen Unternehmer in einem anderen EU-Staat§ 4 Nr. 1 Buchstabe b, § 6a UStGHinweis auf die Steuerbefreiung (§ 14 Abs. 4 Nr. 8), beide USt-IdNr., Rechnung bis zum 15. Tag des Folgemonats (§ 14a Abs. 3)
Sonstige Leistung von Ihnen an einen Unternehmer in einem anderen EU-Staat, Steuer schuldet der Empfänger dort§ 14a Abs. 1 UStGAngabe “Steuerschuldnerschaft des Leistungsempfängers”, beide USt-IdNr., Rechnung bis zum 15. Tag des Folgemonats
Sie beziehen eine Leistung eines Unternehmers aus dem übrigen Gemeinschaftsgebiet§ 13b Abs. 1 UStGSie schulden die Steuer, die Steuer entsteht mit Ablauf des Voranmeldungszeitraums
Bestimmte Inlandsumsätze, bei denen der Empfänger die Steuer schuldet§ 13b Abs. 2 UStG, § 14a Abs. 5 UStGAngabe “Steuerschuldnerschaft des Leistungsempfängers”, kein gesonderter Steuerausweis

Für einen reinen Warenshop ist die erste Zeile der Normalfall, und das ist formal keine Steuerschuldnerschaft des Empfängers, sondern eine steuerfreie Lieferung. Wer zusätzlich Dienstleistungen verkauft, etwa Montage oder einen Wartungsvertrag, landet in der zweiten Zeile. Die vierte Zeile ist für Hardwarehändler relevant: Nach § 13b Abs. 2 Nr. 10 gilt die Steuerschuldnerschaft bei Lieferungen von Mobilfunkgeräten, Tablet-Computern und Spielekonsolen, wenn die Summe der Entgelte für einen wirtschaftlichen Vorgang mindestens fünftausend Euro erreicht. Ein Shop, der beides verkauft, braucht daher pro Position einen Steuerfall und nicht nur einen Schalter “steuerfrei ja oder nein”.

Im Shop bedeutet das: Der Steuerfall wird als Eigenschaft der Bestellung geführt, und der passende Rechnungshinweis kommt aus einer Zuordnung, die Ihre Steuerberatung freigibt. Die Wortlaute stammen aus dem Gesetz und von Ihrer Steuerberatung.

#Was die Bestellung für die E-Rechnung enthalten muss

Das BMF-FAQ zur E-Rechnung enthält vier Aussagen, die für die Bestelldaten eines Shops zählen.

Die Pflicht betrifft inländische Unternehmen. Seit dem 1. Januar 2025 muss ein inländisches Unternehmen E-Rechnungen empfangen können, ein E-Mail-Postfach genügt. Für die Ausstellung können Sie bis zum 31. Dezember 2026 eine sonstige Rechnung wählen, bei einem Vorjahresumsatz bis 800.000 Euro bis Ende 2027. Das BMF spricht von Umsätzen zwischen inländischen Unternehmen. Bei Rechnungen an Endverbraucher, bei Kleinbeträgen bis 250 Euro Bruttobetrag und bei Leistungen von Kleinunternehmern besteht keine Pflicht.

Pflichtangaben gehören in den strukturierten Teil. Alle umsatzsteuerlichen Pflichtangaben müssen in der XML-Struktur stehen. Ein Verweis auf eine Anlage mit den Angaben genügt nicht, und die Leistungsbeschreibung muss Lieferung und sonstige Leistung, Ort der Leistung und Steuersatz erkennen lassen. Eine Produktbezeichnung wie “Artikel 4711” im Shop hilft der Buchhaltung dann nicht. Die Pflichtangaben stehen in § 14 Abs. 4 UStG: vollständiger Name und Anschrift beider Seiten, Steuernummer oder USt-IdNr. des Leistenden, Ausstellungsdatum, fortlaufende Rechnungsnummer, Menge und Art der Ware, Zeitpunkt der Lieferung, nach Steuersätzen und Steuerbefreiungen aufgeschlüsseltes Entgelt, Steuersatz und Steuerbetrag oder der Hinweis auf die Steuerbefreiung.

Eine Leitweg-ID brauchen nur Rechnungen an Behörden. Im B2B-Bereich nicht. Das Feld “Buyer reference” (BT-10) der Norm EN 16931 kann dagegen eine Kennung des Käufers aufnehmen, die dessen System die Zuordnung erleichtert, etwa eine Lieferantennummer. Für Bestellungen mit Einkaufsbestellnummer ist das der richtige Platz, und der Shop sollte diese Nummer im Checkout abfragen. Liefern Sie an Bundesbehörden, gilt zusätzlich die E-Rechnungsverordnung des Bundes, das BMF nennt dort einen anderen Grenzwert (ab 1.000 Euro) als im Umsatzsteuergesetz.

Formate und Validierung. Das BMF nennt XRechnung und ZUGFeRD ab Version 2.0.1 (ohne die Profile MINIMUM und BASIC-WL) als Formate, die die Voraussetzungen erfüllen, und empfiehlt, E-Rechnungen schon bei der Erstellung zu validieren. Erzeugt wird die Rechnung in Ihrer Rechnungs- oder Warenwirtschaftssoftware. Meine Aufgabe ist, dass jede Bestellung die Felder mitbringt, die dieses System braucht. Für die Anbindung an DATEV oder ein ERP gibt es eigene Seiten, etwa zur DATEV-Schnittstelle für WooCommerce und zur ERP-Integration.

#Checkliste: Was eine B2B-Bestellung aus der EU im Shop mitbringen sollte

DatenpunktWarumQuelle
Firmenname und vollständige Anschrift des KäufersPflichtangabe, qualifizierte Abfrage§ 14 Abs. 4 Nr. 1 UStG
USt-IdNr. des KäufersVoraussetzung der steuerfreien Lieferung§ 6a Abs. 1 Nr. 4 UStG
Ihre eigene deutsche USt-IdNr. als anfragende Nummerohne sie keine AbfrageBZSt-API, § 27a UStG
Ergebnis der Abfrage: Status, Zeitpunkt, VergleichsbuchstabenNachweis§ 6a Abs. 3 UStG, BZSt
Lieferland und Nachweis der Beförderung ins EU-AuslandVoraussetzung der Lieferung§ 6a Abs. 1 Nr. 1 UStG
Steuerfall je Positionrichtiger Rechnungshinweis§ 14 Abs. 4 Nr. 8, § 14a UStG
Zeitpunkt der LieferungPflichtangabe, Frist für die Rechnung§ 14 Abs. 4 Nr. 6, § 14a Abs. 3 UStG
Bestellnummer oder KäuferreferenzZuordnung beim Kunden, Feld BT-10BMF-FAQ E-Rechnung

Die Tabelle gilt unabhängig davon, ob Sie mit mir arbeiten. Ihre Steuerberatung kann sie als Prüfliste für den bestehenden Shop verwenden.

#Datenschutz: Was in die Erklärung gehört und wer die Aufsicht führt

Die qualifizierte Abfrage schickt Firmenname und Anschrift Ihres Kunden an das BZSt. Die Antwort enthält Daten, die der Mitgliedstaat gespeichert hat. Bei Einzelunternehmern ist das ein personenbezogenes Datum, und die Abfrage gehört deshalb in Ihre Datenschutzerklärung und in das Verzeichnis der Verarbeitungstätigkeiten. Die BZSt-API weist selbst auf einen Datenschutzhinweis hin, den der Anfragende bestätigen muss (Statusmeldung evatr-0001). Für Unternehmen in Nordrhein-Westfalen ist die Aufsicht die Landesbeauftragte für Datenschutz und Informationsfreiheit (LDI NRW), die auch Muster für Datenschutzhinweise von Websites bereitstellt. Die Texte schreibt Ihre Kanzlei oder Ihr Datenschutzbeauftragter, ich baue den Hinweis an der richtigen Stelle im Checkout ein.

#So läuft ein Projekt mit mir

Ich bin ein einzelner Entwickler, arbeite remote und schriftlich, und es gibt keine Meetings und keine Anrufe. Layout, Mockups und Wireframes bringen Sie mit, ich setze sie in das Theme Ihres Shops um.

  1. Schriftliche Anfrage. Sie schicken die Shop-Adresse, die Steuerfälle (Warenlieferungen, Leistungen, Hardware) und die Rechnungssoftware.
  2. Bestandsaufnahme. Ich lese Checkout, Steuereinstellungen und installierte Plugins und halte offene Fragen schriftlich fest.
  3. Schriftlicher Umfang. Steuerfälle, Fehlerpfade und Abnahmekriterien stehen vor dem ersten Code im Angebot. Die erste schriftliche Einschätzung gibt es ohne Kosten.
  4. Umsetzung auf dem Staging-Shop. Nie am Live-Shop. Jeder Steuerfall bekommt eine Testbestellung.
  5. Abnahme und Übergabe. Sie prüfen anhand der Checkliste, ich übergebe die Dokumentation. Danach können Sie den Shop selbst betreuen oder die Wartung beauftragen. Nicht genutzte Wartungsstunden verfallen am Monatsende.

Das Alte Rathaus am Marktplatz in Bonn

Foto: Thomas Wolf (Der Wolf im Wald), CC BY-SA 3.0, Wikimedia Commons.

#Häufige Fragen

#Muss ich die USt-IdNr. meines EU-Kunden beim BZSt prüfen?

Das Gesetz verlangt, dass der Abnehmer eine gültige USt-IdNr. verwendet und dass Sie die Voraussetzungen der steuerfreien Lieferung nachweisen (§ 6a Abs. 1 Nr. 4 und Abs. 3 UStG). Das BZSt bestätigt die Nummer auf Anfrage (§ 18e UStG). Die qualifizierte Abfrage mit Name und Ort liefert dazu einen Datensatz, den Sie ablegen können. Wie Ihre Steuerberatung den Nachweis insgesamt führt, klären Sie dort.

#Gilt für meinen Shop das Reverse-Charge-Verfahren nach § 13b UStG?

Bei einem Warenshop, der aus Deutschland an Unternehmer in anderen EU-Staaten liefert, meist nicht. Das ist eine steuerfreie innergemeinschaftliche Lieferung nach § 6a UStG. § 13b greift zum Beispiel, wenn Sie eine Leistung eines Unternehmers aus dem übrigen Gemeinschaftsgebiet beziehen, oder bei bestimmten Inlandsumsätzen wie Lieferungen von Mobilfunkgeräten und Tablets ab einer Schwelle. Den Einzelfall bewertet Ihre Steuerberatung.

#Ist die E-Rechnung für Bestellungen aus dem EU-Ausland Pflicht?

Das BMF beschreibt die Pflicht für Umsätze zwischen inländischen Unternehmen. Bei Rechnungen an Endverbraucher und bei Kleinbeträgen bis 250 Euro besteht sie nicht. Ob Ihr Kunde im Ausland ein eigenes Format verlangt, steht in seinen Bestellbedingungen, nicht im deutschen Gesetz. Ich halte die Daten so strukturiert, dass beides möglich bleibt.

#Was passiert, wenn das BZSt oder der EU-Mitgliedstaat nicht antwortet?

Die Abfrage kann fehlschlagen, weil das BZSt die Anfrage an die Behörde des Mitgliedstaats weiterleitet. Die Statusmeldungen der API unterscheiden dazu mehrere Fälle. Ich lege mit Ihnen schriftlich fest, ob der Checkout in diesem Fall mit Steuer weiterläuft, die Bestellung zur Prüfung angehalten wird oder der Kunde es später erneut versucht.

#Darf ich die Abfrageergebnisse im Shop speichern?

Die Ergebnisse gehören zur Bestellung, weil Sie die Steuerfreiheit nachweisen müssen. Bei Einzelunternehmern kann die USt-IdNr. ein personenbezogenes Datum sein. Die Abfrage gehört deshalb in Ihre Datenschutzerklärung und in das Verzeichnis der Verarbeitungstätigkeiten. Zuständige Aufsicht für Unternehmen in Bonn ist die LDI NRW.

#Arbeiten Sie nur für Bonner Unternehmen?

Nein. Ich arbeite aus Gdynia, remote und schriftlich, für Unternehmen in Bonn, im Rhein-Sieg-Kreis und in ganz Deutschland.

#Schreiben Sie mir zu Ihrem Shop

Schicken Sie mir über die Kontaktseite die Adresse Ihres Shops, eine Beschreibung der Kundengruppen und Steuerfälle, Ihr Wunschdatum und die Rechnungssoftware, mit der Sie arbeiten. Ich antworte schriftlich an Werktagen. Die erste schriftliche Einschätzung kostet nichts.

Siehe auch in Deutschland

Brauchen Sie die Leistung: WooCommerce Entwickler in Bonn?

Beschreiben Sie Ihr Projekt per E-Mail. Antwort innerhalb von 48 Stunden.

Projekt beschreiben

Weitere WordPress-Dienste und Wissensbasis entdecken