Wer mit Shopify an Kunden in ganz Europa verkauft, stößt schnell an Grenzen: unterschiedliche MwST-Sätze je Land, reduzierte Sätze für Lebensmittel und Händler, die Nettopreise sehen wollen. Shopify löst das im Standard nur teilweise.
Am Beispiel eines Kundenprojekts – eines Online-Shops für Lebensmittel und Nahrungsergänzung – zeige ich, wie ich die Shopify MwSt für die EU direkt im Theme umgesetzt habe. Der Beitrag richtet sich an Shop-Betreiber und Entwickler, die Preise je Kundengruppe und Land korrekt anzeigen müssen.
Ausgangslage: Ein Shop mit Privat- und Geschäftskunden
Mein Kunde verkauft Nahrungsergänzung und Lebensmittel an Endkunden und an Wiederverkäufer. Basis des Shops ist das Shopify-Theme “Local” von KrownThemes, ergänzt um Inhalte aus PageFly.
Die Anforderungen an das Theme:
- Bruttopreise für Endkunden, berechnet mit dem Mehrwertsteuersatz ihres Landes
- Nettopreise für Wiederverkäufer, mit dem Hinweis „zzgl. MwSt“
- Reduzierter Steuersatz für begünstigte Lebensmittel
- Staffel- und Großhandelsrabatte für B2B-Kunden
- Produktdaten wie PZN, EAN und Analysewerte direkt auf der Produktseite
- Unterschiedliche Lieferzeiten, je nach Land oder während einer Aktion.

Die Herausforderung in Shopify: 27 Länder, 2 Steuersätze, 2 Kundengruppen
In der EU gelten 27 verschiedene Normalsätze und ebenso viele ermäßigte Sätze. Ein Produkt, das in Deutschland mit 7 % besteuert wird, kostet in Frankreich 5,5 % und in Ungarn 5 % Steuer.
| Land | Normalsatz | Ermäßigter Satz |
|---|---|---|
| Deutschland | 19 % | 7 % |
| Österreich | 20 % | 10 % |
| Frankreich | 20 % | 5,5 % |
| Niederlande | 21 % | 9 % |
| Ungarn | 27 % | 5 % |
Dazu kommen die Kundengruppen:
- Ein Wiederverkäufer braucht Nettopreise,
- ein Endkunde Bruttopreise.
Die Preisangabenverordnung verlangt außerdem klare Hinweise wie „inkl. MwSt, zzgl. Versand“.
Die Lösung: Netto-Brutto-Umrechnung direkt im Shopify-Theme
Im Shop sind alle Preise netto hinterlegt. Das Theme rechnet sie beim Laden der Seite in Bruttopreise um, passend zum Land des Kunden.
- Steuertabelle als Theme-Asset:
Eine JSON-Datei enthält Normal- und ermäßigten Satz für alle 27 EU-Länder. Neue Sätze lassen sich ohne Codeänderung pflegen. - Land ermitteln:
Maßgeblich ist das Land der Standardadresse des eingeloggten Kunden. Bei Gästen dient die Shop-Sprache als Fallback. - Steuersatz je Produkt:
Produkte mit reduziertem Satz liegen in einer eigenen Kollektion bzw. tragen ein entsprechendes Tag für den Steuersatz. - Preise umrechnen:
Ein schlankes Skript wandelt alle markierten Preise um und formatiert sie im deutschen Format. Bis dahin bleiben die Preise ausgeblendet, damit kein falscher Wert aufblitzt. - Warenkorb neu berechnen:
Auch Zeilenpreise und Gesamtsumme im Warenkorb werden je Position mit dem richtigen Satz berechnet – bei jeder Mengenänderung neu.
Zusätzlich zeigt die Produktseite bei reduzierten Artikeln die Ersparnis an, z.B. “Du sparst 20 %”.
Shopify B2B: Nettopreise und Großhandelsrabatte für Wiederverkäufer
Geschäftskunden erhalten im Shopify-Admin das Kunden-Tag reseller. Das Theme erkennt das Tag und zeigt ihnen Nettopreise mit dem Hinweis “zzgl. MwSt, zzgl. Versand”.
Für Staffel- und Großhandelspreise nutzt der Shop die App Wholesale Pricing Discount. Damit die App mit dem angepassten Theme zusammenarbeitet, tragen alle Preiselemente zusätzliche Datenattribute: Produkt, Variante, Preis, Vergleichspreis und Kollektionen. Wechselt der Kunde die Variante, werden diese Attribute aktualisiert. So greifen Mengenrabatte auf Produktseite, in Kollektionen und im Warenkorb.
Produktdaten mit Shopify-Metafeldern
Nahrungsergänzung braucht mehr Angaben als Titel und Preis. Diese Daten pflegt der Shop als Metafelder und gibt sie auf der Produktseite aus:
| Metafeld | Inhalt |
|---|---|
| Inhalt | Füllmenge, z. B. 500 g |
| Darreichungsform | Pulver, Kapsel, Riegel |
| Apotheken-PZN | Pharmazentralnummer für den Apothekenvertrieb |
| EAN | Barcode für den Handel |
| Analyse (je Variante) | Nährwert- und Analysetabelle |
ShopifyConfig: Änderungen komfortabel einpflegen
Ändern sich MwSt-Sätze, können diese komfortabel über eine Desktop App eingepflegt werden:

ShopifyConfig unterstützt zusätzlich das Managen unterschiedlicher Lieferzeiten, abhängig vom Land des Besuchers und ob gerade eine Aktion läuft. In Shopify selbst gibt es hierzu entsprechenden Liquid Code, der auf die von ShopifyConfig erzeugte JSON-Daten zurückgreift:

FAQ: Shopify Mehrwertsteuer EU
Kann Shopify Preise je Land automatisch inklusive Mehrwertsteuer anzeigen?
Ja, über Shopify Markets mit dynamischen Steuersätzen. Voraussetzung ist jedoch, daß die Preise brutto eingepflegt wurden. Für Sonderfälle wie netto erfasste Preise, Netto-Anzeige für Händler oder reduzierte Sätze je Produkt sind jedoch eine Theme-Anpassungen nötig.
Wie zeige ich in Shopify B2B-Kunden Nettopreise an?
Wie in diesem Projekt gelöst, mit einem Kunden-Tag wie reseller, das im Theme per Liquid abgefragt wird. Alternativ bietet Shopify Plus eigene B2B-Funktionen.
Wie hinterlege ich den reduzierten Steuersatz für Lebensmittel?
Im Shopify-Admin über Steuer-Overrides für eine Kollektion, sofern die Preise Brutto eingepflegt wurde. In diesem Projekt wurde es mit einem Produkt-Tag und Liquid Code umgesetzt.
Brauche ich für Staffelpreise eine App?
In den meisten Shopify-Tarifen ja. Wichtig ist, dass die App sauber mit dem Theme zusammenarbeitet.
Was ist Liquid?
Liquid ist die Template-Sprache von Shopify. Shopify hat sie selbst entwickelt und als Open Source veröffentlicht. Alle Shopify-Themes sind damit gebaut.
- Wie es funktioniert: Liquid verbindet festes HTML mit den Daten aus dem Shop. Shopify rechnet den Liquid-Code auf dem Server aus, bevor die Seite an den Browser geht. Der Besucher sieht nur das fertige HTML.
- Ausgaben in
{{ … }}schreiben Werte in die Seite, z. B.{{ product.title }}oder{{ product.price | money }}. Filter wie| moneyformatieren den Wert. - Logik in
{% … %}steuert, was erscheint: Bedingungen ({% if %}), Schleifen ({% for %}), Variablen ({% assign %}) und das Einbinden von Bausteinen ({% render %}). - Objekte liefern die Daten:
product,cart,customer,collectionund die Metafelder.
Ein Beispiel aus diesem Theme:
Liquid prüft, ob ein Kunde das Tag reseller hat. Je nachdem zeigt es “zzgl. MwSt” oder “inkl. MwSt” an.
|
1 |
{% if customer.tags contains 'reseller' %}zzgl. MwSt{% else %}inkl. MwSt{% endif %} |
Dein Shopify-Theme braucht individuelle Programm-Logik?
Ob EU-Mehrwertsteuer, B2B-Preise oder Metafelder: Ich passe dein Shopify-Theme an Ihre Anforderungen an – updatesicher und dokumentiert. Jetzt unverbindlich anfragen.
