Small Business §19 UStG
Sylius plugin for the German small business regulation under §19 UStG: 0% tax category, price migration via admin or console, notice in storefront, Shop API and credit memo PDF.
Small Business §19 UStG
This documentation always describes the latest published version.
Live Demo: Try this and other plugins live — no installation, no risk: demo.markus-michalski.net
Overview
As a small business under §19 UStG (the German small business regulation, "Kleinunternehmerregelung") you do not charge VAT. In Sylius that means every product needs a tax category with a 0% rate, and customers must see a notice wherever taxes would normally appear. This plugin does both. One switch in the admin creates the 0% tax category, a button or a console command moves your existing product prices over, and the notice appears on product pages, cart, checkout, order summaries and credit memo PDFs.
The notice only appears where it is true: next to an item that still charges tax, or a total that includes tax, it stays hidden. A notice never sits next to a price that contradicts it.
graph LR
A["Admin: activate the regulation"] --> B["Create 0 percent tax category"]
B --> C["Migrate product prices (admin button or CLI)"]
C --> D{"Notice applies?"}
D -->|Yes| E["Twig storefront: notice"]
D -->|Yes| F["Shop API: kleinunternehmerNoticeApplies"]
D -->|Yes| G["Credit memo PDF with sylius/refund-plugin"]
D -->|No| H["No notice"]
Documentation
| Page | Content |
|---|---|
| Installation | Composer, bundle, routes, setup command, update, uninstall |
| Configuration | Admin settings page, notice texts, additional languages, practical examples |
| Price migration | Moving product prices to 0% and back, admin button and console command |
| Storefront | Where and when the notice appears, credit memo PDF, Twig functions |
| Shop API | The kleinunternehmerNoticeApplies field for headless frontends |
| Troubleshooting and FAQ | Typical problems, known limitations, frequent questions |
| Technical details | Architecture, plugin structure, tables, migrations, extensibility |
Features
| Feature | Description |
|---|---|
| One switch | Activating under Admin → MMKreativ Plugins → Kleinunternehmer §19 UStG creates the 0% tax category kleinunternehmer_zero together with its tax rate |
| Price migration | Move product variants to 0% via admin button or mmd:kleinunternehmer:migrate-prices, with a preview (--dry-run) and a way back (--restore) |
| Storefront notice | Product page, product card, cart, checkout sidebar and order summaries |
| Custom notice texts | German and English text can be overridden in the admin, leave blank for the default text |
| Shop API | Boolean field kleinunternehmerNoticeApplies on cart/order, product and product variant |
| Credit memo PDF | With sylius/refund-plugin the notice also appears on credit memos without tax, in the language of the credit memo |
| Setup command | mmd:kleinunternehmer:setup runs only this plugin's migrations and is safe to run again after every composer update |
Requirements
| Requirement | Version | Notes |
|---|---|---|
| Sylius | ^2.2 | Tested against Sylius 2.2 and 2.3 |
| PHP | ^8.3 | |
| Symfony | ^7.4 | |
Zone DE |
- | A zone with the code DE must exist, otherwise the regulation cannot be activated |
sylius/refund-plugin |
optional | Only needed if the notice should appear on credit memo PDFs |
License
Commercial license: one Sylius installation (all channels, plus their development and staging environments) per license, no redistribution, updates for 12 months from purchase.
Support
For questions about the license, technical questions or bugs, reach me at support@markus-michalski.net.