storetown-media / module-tax-sync

storetown-media/module-tax-sync

Automatic EU VAT rate synchronization for Magento 2 — imports and updates all European tax rates including automatic Tax Rule creation. Free open-source under MIT.

magento2-module Compatibility: Not yet tested Code Quality: Pending Tests: N/A Security: Pending MIT
Viewing version 1.3.1. Latest version is 1.4.2. Switch to latest

Storetown EU Tax Rate Sync for Magento 2

Storetown Media

Automatische Synchronisierung aller EU-Mehrwertsteuersätze für Magento 2

Magento 2
PHP
License: MIT
Free Forever
Hyvä
Made in Germany

📦 Packagist · 📚 Produktseite · 💼 Storetown-Media Org


🇪🇺 Überblick

Diese kostenlose Extension importiert und aktualisiert automatisch alle EU-Mehrwertsteuersätze in Ihrem Magento 2 Shop. Nie wieder manuelle Pflege von Steuersätzen bei Änderungen!

✨ Features

  • 27 EU-Länder + Schweiz, Norwegen und Großbritannien
  • Standard- und ermäßigte Sätze werden separat importiert
  • Automatische Tax Rules werden erstellt und mit den Rates verknüpft
  • Cron-basierte Synchronisierung (täglich, wöchentlich oder monatlich)
  • E-Mail-Benachrichtigungen bei Änderungen
  • Admin-Benachrichtigungen im Magento Backend
  • CLI-Befehle für manuelle Synchronisierung
  • Fallback-Daten falls die API nicht erreichbar ist

📦 Installation

Via Composer (empfohlen)

composer require storetown/module-tax-sync
bin/magento module:enable Storetown_TaxSync
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

Manuelle Installation

  1. Erstellen Sie den Ordner app/code/Storetown/TaxSync
  2. Kopieren Sie alle Dateien in diesen Ordner
  3. Führen Sie folgende Befehle aus:
bin/magento module:enable Storetown_TaxSync
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

⚙️ Konfiguration

Navigieren Sie zu Stores → Configuration → Storetown → EU Tax Rate Sync

General Settings

Option Beschreibung
Enable Auto Sync Aktiviert die automatische Cron-Synchronisierung
Sync Frequency Täglich, Wöchentlich oder Monatlich
Data Source API-Quelle (EU VAT Rates API empfohlen)
Include Non-EU CH, NO, GB mit einbeziehen

Tax Rules

Option Beschreibung
Auto-Create Tax Rules Erstellt automatisch Tax Rules für jeden Steuersatz
Customer Tax Classes Kundengruppen für die Rules
Product Tax Classes Produktklassen für die Rules

Notifications

Option Beschreibung
Email Notifications E-Mail bei Änderungen senden
Notification Email Empfänger-Adresse
Admin Notification Benachrichtigung im Admin-Panel

🖥️ CLI-Befehle

Manuelle Synchronisierung

bin/magento tax:sync:run

Mit ausführlicher Ausgabe:

bin/magento tax:sync:run -vvv

Status anzeigen

bin/magento tax:sync:status

🌍 Unterstützte Länder

EU-Mitgliedstaaten (27)

Land Code Standard Ermäßigt
Österreich AT 20% 10%
Belgien BE 21% 6%
Bulgarien BG 20% 9%
Kroatien HR 25% 13%
Zypern CY 19% 5%
Tschechien CZ 21% 12%
Dänemark DK 25% -
Estland EE 22% 9%
Finnland FI 25,5% 14%
Frankreich FR 20% 5,5%
Deutschland DE 19% 7%
Griechenland GR 24% 13%
Ungarn HU 27% 18%
Irland IE 23% 13,5%
Italien IT 22% 10%
Lettland LV 21% 12%
Litauen LT 21% 9%
Luxemburg LU 17% 8%
Malta MT 18% 7%
Niederlande NL 21% 9%
Polen PL 23% 8%
Portugal PT 23% 13%
Rumänien RO 19% 9%
Slowakei SK 23% 10%
Slowenien SI 22% 9,5%
Spanien ES 21% 10%
Schweden SE 25% 12%

Nicht-EU (optional)

Land Code Standard Ermäßigt
Schweiz CH 8,1% 2,6%
Großbritannien GB 20% 5%
Norwegen NO 25% 15%

📋 Anforderungen

  • Magento 2.4.x
  • PHP 8.1 oder höher
  • Cron muss konfiguriert sein (für Auto-Sync)

🔧 Fehlerbehebung

Logs prüfen

tail -f var/log/tax_sync.log

Cache leeren

bin/magento cache:flush

DI neu kompilieren

rm -rf generated/code/*
bin/magento setup:di:compile

🐛 Bug Reports & Feature Requests

Pull Requests sind willkommen! Siehe CONTRIBUTING.md.


💼 Kommerzielle Schwester-Extensions

Diese Extension ist dauerhaft kostenlos. Storetown-Media finanziert die Entwicklung über kommerzielle Magento-2-Extensions:

Extension Was sie löst Ab
⚡ Smart One Page Checkout Checkout auf 1 Seite, 8 Payment-Provider, mobile-optimiert 389 €
🔐 B2B Register B2B-Kundenfreischaltung mit Admin-Approval 149 €
📎 Attachment Pro PDF-Datenblätter & Zertifikate am Produkt mit Auto-Zuweisung 149 €
💰 Surcharge Max Zuschnitt-, Sperrgut- & Kategorie-Zuschläge transparent im Checkout 99 €

Hub: storetown-media.de/produkt-kategorie/downloads/magento-extensions/


📄 Changelog

Siehe CHANGELOG.md


📜 Lizenz

Diese Extension ist unter der MIT-Lizenz veröffentlicht — frei nutzbar, frei modifizierbar, kommerzielle Nutzung erlaubt.


🏢 Über Storetown Media

Storetown Media ist eine E-Commerce Agentur aus Hamburg/Tornesch, spezialisiert auf:

  • 🛒 Magento 2 Entwicklung & Betreuung
  • 🛍️ Shopware 6 Implementierung
  • 🌐 WooCommerce Lösungen
  • 🔗 ERP-Integrationen (SAP, Microsoft Dynamics, Oracle NetSuite)

Kontakt


Made with ❤️ in Hamburg

Changelog

Alle wichtigen Änderungen an dieser Extension werden in dieser Datei dokumentiert.

Das Format basiert auf Keep a Changelog,
und dieses Projekt folgt Semantic Versioning.

[1.3.1] - 2026-06-09

Behoben

  • Magento 2.4.7 / 2.4.8 Kompatibilität: Composer-Constraint magento/module-email: ^101.2 auf ^101.1 korrigiert. Version 101.2 existiert in keinem Magento-2.4.x-Release (höchste ist 101.1.x), wodurch composer require storetown/module-tax-sync mit „could not be resolved" fehlschlug. Betraf alle bisherigen Releases (1.1.0–1.3.0).

[1.3.0] - 2026-05-14

Geändert

  • Erstes öffentliches Open-Source-Release auf GitHub unter MIT-Lizenz
  • Distribution via Packagistcomposer require storetown/module-tax-sync ohne Custom-Repository möglich

Entfernt (für OSS-Release)

  • stm/module-license Dependency aus composer.json — Extension läuft jetzt ohne Lizenz-Check, voll funktional für alle User
  • STM_License-Sequence aus etc/module.xml
  • STM\License\Model\ExtensionRegistry-Block aus etc/di.xml
  • LicenseServiceInterface-Import + Constructor-Injection + License-Check in Model/TaxSyncService.php

Hinzugefügt (OSS-Hygiene)

  • .github/ISSUE_TEMPLATE/bug_report.md — strukturiertes Bug-Report-Template
  • .github/ISSUE_TEMPLATE/feature_request.md — Feature-Request-Template
  • SECURITY.md — Security-Policy mit responsible-disclosure-Workflow
  • CONTRIBUTING.md — Contributor-Guide (PSR-12, Magento-2-Standards, Conventional Commits)
  • composer.jsonsupport.issues, support.source, support.docs aktualisiert auf den neuen GitHub-Repo
  • README erweitert um Cross-Linking zu den 4 kommerziellen Schwester-Extensions

[1.2.0] - 2026-03-09

Hinzugefügt

  • STM License Integration — Lizenzprüfung über stm/module-license Modul
  • di.xml — Extension-Registrierung bei STM\License\Model\ExtensionRegistry (Key: storetown_taxsync)

Geändert

  • composer.json — Dependency stm/module-license: ^1.0 hinzugefügt
  • module.xmlSTM_License in Modul-Sequence aufgenommen

[1.1.0] - 2026-03-07

Behoben

  • CRITICAL: Cron-Job lief nie — Backend Model CronFrequency erstellt, das Frequenz-Auswahl in Cron-Expression schreibt
  • HIGH: ApiSourcePool konnte bei fehlendem Fallback crashen — Defensive Prüfung mit LocalizedException hinzugefügt
  • HIGH: TaxSyncService::getLastSyncDate() versuchte auf geschütztes scopeConfig-Property zuzugreifen — Methode in Config Helper verlagert
  • HIGH: Generische Exceptions durch LocalizedException ersetzt
  • HIGH: Concurrency-Schutz via LockManagerInterface im Sync-Prozess
  • HIGH: Fehlendes lockManager-Argument in di.xml ergänzt
  • HIGH: <e> Tag in StatusCommand durch <error> ersetzt (Symfony Console 6.x Kompatibilität)
  • MEDIUM: Modul-Versionanzeige in Info-Block nutzt jetzt PackageInfo statt veraltetes setup_version
  • MEDIUM: Hardcoded German Strings in NotificationService durch __() Aufrufe ersetzt (i18n-fähig)

Hinzugefügt

  • Model/Config/Backend/CronFrequency.php — Backend Model für Cron-Frequenz-Konfiguration
  • view/adminhtml/email/sync_error.html — Fehler-Benachrichtigungs-E-Mail-Template
  • etc/csp_whitelist.xml — CSP-Whitelist für euvatrates.com API-Aufrufe
  • i18n/de_DE.csv — Deutsche Übersetzungen (34 Strings)
  • phpunit.xml.dist — PHPUnit Konfiguration
  • 9 PHPUnit Test-Dateien mit 82 Tests und 471 Assertions
  • Copyright-Header auf allen PHP-Dateien
  • PHPCS Magento2 Coding Standard — vollständig compliant (0 Errors, 0 Warnings)

Geändert

  • module.xmlsetup_version entfernt (Magento 2.4+ Best Practice), Sequence-Dependencies erweitert
  • composer.jsonmagento/module-cron Dependency hinzugefügt, Version-Constraints auf ^ (Caret) umgestellt
  • config.xml — Standard Cron-Schedule 0 3 * * 1 (Montag 3:00 Uhr) als Default hinzugefügt
  • Code-Qualität: Alle Dateien auf PHPCS Magento2 Standard geprüft und angepasst

[1.0.3] - 2026-01-22

Hinzugefügt

  • NotificationService — Zentrale Klasse für E-Mail- und Admin-Benachrichtigungen
  • E-Mail-Template rate_changed.html für Steuersatz-Änderungen
  • Admin-Notification über Magento\AdminNotification\Model\Inbox bei Änderungen
  • Konfigurationsoptionen für Benachrichtigungen unter tax_sync/notifications/
  • email_templates.xml — Template-Registrierung für Transaktions-E-Mails

Geändert

  • TaxSyncService::sync() ruft jetzt NotificationService nach erfolgreicher Synchronisierung auf
  • di.xmlNotificationService als Dependency für TaxSyncService ergänzt
  • Admin-Konfiguration um Benachrichtigungs-Tab erweitert (system.xml)

Behoben

  • Rate-Vergleich nutzt jetzt Toleranz abs($old - $new) > 0.001 statt striktem != (Float-Precision)
  • Sync-Ergebnis enthält jetzt detailliertes changes-Array mit altem und neuem Steuersatz

[1.0.2] - 2025-12-12

Hinzugefügt

  • Block/Adminhtml/System/Config/SyncButton.php — Manueller Sync-Button in Admin-Konfiguration
  • Block/Adminhtml/System/Config/LastSync.php — Anzeige des letzten Sync-Zeitpunkts
  • Block/Adminhtml/System/Config/Info.php — Modul-Infoanzeige mit Version und Status
  • Controller/Adminhtml/Sync/Run.php — AJAX-Controller für manuellen Sync aus Admin
  • etc/adminhtml/routes.xml — Admin-Routen für Sync-Controller
  • etc/acl.xml — ACL-Ressource Storetown_TaxSync::config für Zugriffskontrolle
  • Admin-Konfiguration um Sync-Tab mit Buttons und Status-Anzeige erweitert

Geändert

  • system.xml — Komplette Überarbeitung der Admin-Oberfläche mit drei Tabs (Allgemein, Tax Rules, Sync)
  • Config Helper um getLastSyncDate() erweitert
  • TaxSyncService::sync() speichert jetzt Timestamp des letzten Syncs in Core-Config

Behoben

  • Country-Filter: API-Daten werden jetzt korrekt gegen konfigurierte Länderliste gefiltert
  • Reduced-Rate wird nur importiert wenn > 0 (verhindert leere 0%-Steuersätze)

[1.0.1] - 2025-11-18

Hinzugefügt

  • Model/Api/VatComply.php — Alternative API-Quelle (vatcomply.com) als zweite Datenquelle
  • Model/ApiSourcePool.php — Source-Pool-Pattern für flexible API-Quellen-Verwaltung
  • Api/TaxRateSourceInterface.php — Interface für austauschbare API-Quellen
  • Model/Config/Source/ApiSource.php — Dropdown für API-Quellen-Auswahl in Admin
  • Konfigurationsoption tax_sync/general/api_source zur Auswahl der Datenquelle
  • Automatischer Fallback: Wenn primäre API nicht erreichbar, wird nächste Quelle probiert
  • StatusCommand — CLI-Befehl tax:sync:status zeigt aktuellen Sync-Status und Konfiguration
  • Logger/Logger.php und Logger/Handler.php — Dediziertes Logging nach var/log/tax_sync.log

Geändert

  • TaxSyncService refactored — API-Aufruf über ApiSourcePool statt direktem HTTP-Client
  • di.xml — Source-Pool mit konfigurierbarer Quellen-Liste
  • system.xml — API-Quellen-Auswahl im Admin hinzugefügt
  • Logging von Psr\Log\LoggerInterface auf dedizierten TaxSync\Logger\Logger umgestellt

Behoben

  • Tax Rate Code-Format vereinheitlicht: {COUNTRY}-Standard / {COUNTRY}-Reduced (vorher inkonsistent)
  • Fehlerbehandlung bei API-Timeouts: Exception wird geloggt statt Abbruch

[1.0.0] - 2025-02-03

Hinzugefügt

  • Erster Release
  • Import aller 27 EU-Länder Steuersätze (Standard + ermäßigt)
  • Optionaler Import von CH, GB, NO (Nicht-EU-Länder)
  • Automatische Tax Rule Erstellung pro Land mit konfigurierbaren Customer/Product Tax Classes
  • Cron-basierte Synchronisierung (täglich/wöchentlich/monatlich wählbar)
  • CLI-Befehl tax:sync:run für manuellen Sync mit --force Option
  • EU VAT Rates API (euvatrates.com) als primäre Datenquelle
  • Model/Api/Fallback.php — Statische Fallback-Daten (Stand Januar 2025)
  • Vollständige Admin-Konfiguration unter Stores > Configuration > Storetown > Tax Sync
  • Helper/Config.php — Zentrale Konfigurationsverwaltung mit allen Getter-Methoden
  • Model/TaxSyncService.php — Kern-Service für Steuersatz-Synchronisierung
  • Cron/SyncTaxRates.php — Cron-Handler für automatische Ausführung
  • Model/Config/Source/Frequency.php — Frequenz-Options für Admin-Dropdown

Datenquellen

  • Primär: EU VAT Rates API (euvatrates.com)
  • Fallback: Statische Daten, manuell gepflegt

Unterstützte Magento-Versionen

  • Magento 2.4.x
  • PHP 8.1+

Support

Bei Fragen oder Problemen kontaktieren Sie uns:

Versions
Version Stability QA Status Compatibility Released
v1.5.1 stable Not tested Not yet tested Details 2026-08-23 11:57:31
v1.5.0 stable Not tested Not yet tested Details 2026-08-23 11:54:50
1.4.2 stable Fail Magento 2.4.7-2.4.9 Details 2026-06-17 13:10:12
1.4.1 stable Not tested Not yet tested Details 2026-06-16 11:01:00
1.4.0 stable Not tested Not yet tested Details 2026-06-16 09:51:59
1.3.1 stable Not tested Not yet tested Details 2026-06-09 15:48:40
1.3.0 stable Not tested Not yet tested Details 2026-05-14 15:33:57

Requires 9

Package Constraint
magento/framework ^103.0
magento/module-admin-notification ^100.4
magento/module-backend ^102.0
magento/module-config ^101.2
magento/module-cron ^100.4
magento/module-email ^101.1
magento/module-store ^101.1
magento/module-tax ^100.4
php ^8.1

No QA results yet

QA pipelines haven't run for this version. Compatibility and quality results appear here once the vendor publishes a tagged release that gets ingested.

License
MIT
Homepage
https://github.com/storetown-media/stm-magento-2-eu-tax-rate-sync
Authors

More from Storetown Media

View vendor
Make it pay

Turn an existing module into recurring revenue.

If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.