Shopware invoices: what Shopware 6 does on its own and what is missing
Shopware 6 has its own document feature: invoice, cancellation invoice (Stornorechnung), credit note (Gutschrift) and delivery note are created as PDFs with their own number range. Since version 6.6.10, Shopware can also output the invoice as a ZUGFeRD e-invoice following EN 16931. What it does not cover is reconciling payments and fees from payment providers, a DATEV export in the core, and whether your storage is GoBD compliant.
What Shopware 6 does on its own
Shopware 6 has its own document feature, which sets it apart from some hosted shop systems. From an order you create an invoice, a delivery note, a credit note or a cancellation invoice in the admin. Each document type takes its number from its own number range, and the layout comes from a Twig template that you adjust with your logo, sender details and footer. With the Flow Builder you can also create and send the invoice automatically when an order status changes.
Version 6.6.10 brought e-invoicing into the core. Shopware then also writes the invoice as ZUGFeRD following EN 16931, either as a separate XML file or embedded in the PDF. Since Shopware 6.7, ZUGFeRD is no longer a document type of its own but a format you set per document type for invoices, cancellation invoices and credit notes. 6.7 also fixed calculation rules in the XML that could previously fail validation. If you run an older version, you only get e-invoices through an extension.
That is more than most shop systems offer. What happens after the document is created is still up to you.
Where gaps remain
Payments and fees. The Shopware invoice only knows the order. What actually happened at the payment provider, meaning payouts from Stripe, Mollie or PayPal, withheld fees, partial refunds and chargebacks, has to be reconciled against the invoices by someone, month after month. That reconciliation is where the hours come from that your tax advisor (Steuerkanzlei) bills you for every month.
DATEV. Shopware has no DATEV export in the core. If you want to hand booking batches and documents to your tax advisor, you need an extension or export by hand. The integration page shows what a DATEV export for Shopware looks like without a plugin in the shop.
Archive. The documents sit in your Shopware installation. Whether that meets GoBD, the German rules for electronic bookkeeping, depends on your hosting, access rights and procedure documentation. It is not tamper-proof storage with a checksum by default. You have to keep invoices for eight years (§ 14b(1) UStG, § 147(3) AO, both German).
Date of supply and timing. You decide when the invoice is created, by hand or through a flow. With prepayment (Vorkasse), many shops only write it after the payment arrives. The invoice has to show the time of delivery (§ 14(4) sentence 1 no. 6 UStG), which for shipped goods is the day dispatch begins (section 13.1(2) sentence 2 UStAE). More on this under date of supply (Leistungsdatum). You rebuild these rules in the Flow Builder and maintain them for every new payment method.
Three routes compared
Only the Shopware document feature
It is enough if you have few orders, run a current Shopware version and handle payment reconciliation and the DATEV handover by hand. Make sure you use e-invoices for B2B from 2027: a plain PDF then no longer meets the e-invoicing mandate, first for businesses with more than 800,000 euros prior-year revenue and from 2028 for everyone (§ 27(38) UStG).
Document feature plus extensions
The Shopware Store has extensions for DATEV, extended e-invoice profiles or accounting software. That works. It does spread your invoicing across several plugins, though, and each of them has to support a new Shopware version before you can install the update.
Invoicing outside the shop
A separate tool handles invoices, archive and DATEV and reads the orders from Shopware. The shop stays lean, and your bookkeeping does not depend on plugin versions. These tools differ a lot in whether they only write invoices or also cover payments and bookings. The comparisons with Billbee and easybill show where the limits are.
The automatic route with Rechnungskit
Rechnungskit connects to Shopware 6 through the Admin API, with no plugin in the shop. It reads orders, payment status and delivery status every 15 minutes, or immediately through a Flow Builder action if you want (Shopware Evolve plan or higher, via the Commercial extension). Payment and order produce a ZUGFeRD e-invoice (an XRechnung for public authorities with a Leitweg-ID), with the shipping date as the date of supply, a sequential invoice number without gaps, a tamper-proof archive and a ready-made DATEV export. Prepayment and purchase on account are built in, and so are refunds and cancellations through the payment status.
If you use Rechnungskit, switch off the Shopware invoice for those orders so that two number ranges don't run side by side. The Shopware integration page shows in detail what Rechnungskit delivers for Shopware, from the DATEV booking batch to XRechnung. Step-by-step setup is in the Shopware 6 help page.
FAQ
- [1] Shopware: release news February 2025 (e-invoice from 6.6.10, German)
- [2] Shopware: RELEASE_INFO 6.7 (ZUGFeRD as a document format)
- [3] § 14 UStG, German VAT Act (German)
- [4] § 14b UStG, retention of invoices (German)
- [5] § 27(38) UStG, e-invoicing transition rules (German)
- [6] BMF: VAT Application Decree (UStAE), sections 13.1 and 14c.1 (German)
- [7] Federal Ministry of Finance, FAQ on mandatory e-invoicing (German)
Rechnungskit is not a tax advisory or law firm. This article explains general principles and does not replace advice from a tax advisor (Steuerberater, § 5 StBerG) or a lawyer (§ 3 RDG). Rechnungskit is built for businesses based in Germany and prepares documents, tax rates and bookings automatically. How your specific case is treated remains your decision, ideally together with your tax advisor or a lawyer.
Every invoice automatically as a valid e-invoice.
Connect your payment provider and we take care of format, validation and archive. Start for free in test mode.
Try it now