Shipping costs and VAT in Germany: 7%, 19% or tax-exempt?
Shipping is not a separate supply. It is an ancillary service (unselbstständige Nebenleistung) to the delivery of goods, and ancillary services follow the tax treatment of the main supply (section 3.10(5) UStAE, the German VAT application decree). Shipping therefore takes the VAT rate of the goods it carries: 7% for goods at the reduced rate, 19% at the standard rate, and tax-exempt for exempt intra-community deliveries to businesses and for exports. For mixed baskets, in our view you split the flat shipping fee proportionally instead of applying one rate to the whole fee.
Why shipping takes the VAT rate of the goods
For VAT purposes, shipping is not a service you sell to your customer on its own. It only exists to carry out the delivery of goods. German tax law calls this an unselbstständige Nebenleistung, a dependent ancillary service. Ancillary services follow the main supply (section 3.10(5) UStAE, German): they take its VAT rate or its exemption.
In practice: if you ship coffee (7%, § 12(2) no. 1 UStG with Annex 2 no. 12), shipping is taxed at 7%. If you ship a coffee grinder (19%), shipping is taxed at 19%. It makes no difference whether shipping appears as its own invoice line or is built into the product price. The rule also applies when a separate charge is made for the ancillary service (section 3.10(5) sentence 2 UStAE).
Mixed basket: the flat fee gets split
It gets interesting with a mixed basket: coffee at 7%, a grinder at 19%, plus a €4.90 flat shipping fee. The fee serves both deliveries at once. Neither the law nor the VAT application decree explicitly covers shipping in a mixed basket. In our view, the ancillary-service principle means each portion follows its own goods, so the fee is split proportionally. To divide a total price between supplies taxed at different rates, the tax authorities require the simplest appropriate method, as a rule by individual selling prices (section 10.1(11) UStAE, German).
In 2025 the Federal Fiscal Court (Bundesfinanzhof, BFH) clarified the method: when splitting by individual selling prices, you start from the gross selling prices (BFH, judgment of January 22, 2025, XI R 22/22, German). A method that allocates more to a product than its individual selling price is not appropriate (BFH, judgment of January 22, 2025, XI R 19/23, German). Both judgments concerned value meals at fast-food chains. Applying the method to flat shipping fees is our own reading, not an explicit ruling. The tax authorities also accept other equally simple methods, such as splitting by cost of goods (section 10.1(11) sentence 5 UStAE). Whatever you choose, pick one method and apply it consistently.
In practice, the flat shipping fee in a B2C shop is a gross amount, just like product prices: the customer pays €4.90 no matter what it contains. That does not change the approach. The gross amount is split in the gross value ratio of the goods, and the VAT included in each portion is then backed out at that portion's rate.
A worked example: coffee €21.40 gross (7%), coffee grinder €35.70 gross (19%), flat shipping fee €4.90 gross.
€1.72 net + €0.12 VAT = €1.84
€2.57 net + €0.49 VAT = €3.06
EU deliveries and exports: shipping is exempt too
The same logic applies to exemptions. If the delivery of goods is exempt as an intra-community delivery (§ 6a UStG) or as an export delivery (§ 6 UStG), the exemption extends to shipping as an ancillary service (section 3.10(5) UStAE, German). The conditions for the exemption have to be met, though: for EU B2B, a valid VAT ID (USt-IdNr.) that the customer uses (§ 6a(1) no. 4 UStG) and the proof (§ 6a(3) UStG); for exports, proof of export.
Mixed shipments with some exempt and some taxable items are split again: only the shipping portion that belongs to the exempt delivery is exempt, and the rest follows its own VAT rate.
How Rechnungskit handles this automatically
Rechnungskit treats shipping as an ancillary service by default. In single-rate baskets, shipping takes the rate of the goods; in exempt deliveries, it takes the exemption, including the dependency on the VAT ID check and the proof. This holds even when the shop reports a different rate. If Shopify charges a flat 19% shipping tax on a basket full of coffee (7%) because proportional shipping tax is not enabled in the shop, Rechnungskit sets shipping on the invoice to 7%. A rate that appears on none of the lines never ends up on the invoice.
With mixed baskets, it depends on what the shop sends. There are three cases:
- The shop sends the VAT split for shipping (several tax lines on shipping, for example Shopify with proportional shipping tax enabled): Rechnungskit takes exactly these amounts, which is what the customer paid at checkout.
- The shop taxes shipping at a single rate even though the goods mix 7% and 19%: Rechnungskit splits the gross fee in the gross value ratio of the product lines (method from BFH XI R 22/22, applied to shipping) and backs out the included VAT from each portion at its rate. The gross amount stays the checkout amount; only net and VAT are redistributed. If you don't want that, switch the shop connection under Belegregeln (document rules) to "Steuer aus dem Shop übernehmen" (take tax from the shop). The invoice then carries the checkout tax, and Rechnungskit creates a review task.
- The source sends no tax data at all (for example via the Push API): Rechnungskit splits as in case 2.
On the ZUGFeRD invoice, shipping then appears as separate lines per VAT rate ("Versandkosten (7 %)" / "Versandkosten (19 %)", shipping costs), and every tax group adds up to the cent. The split works with any rate, not only 7% and 19%: Austrian 10% and 20%, or an OSS delivery at the destination country's rates, are divided the same way.
Rounding differences always go to the largest line, so the portions add up to exactly the original fee. That matters for matching the payment and for the DATEV export.
FAQ
- [1] § 10 UStG (taxable amount, German)
- [2] § 12 UStG (VAT rates, German)
- [3] § 4 UStG (exemptions, German)
- [4] § 6a UStG (intra-community delivery, German)
- [5] § 6 UStG (export delivery, German)
- [6] BFH, judgment of 22.01.2025, XI R 22/22: split by gross selling prices (German)
- [7] BFH, judgment of 22.01.2025, XI R 19/23: splitting a total price (German)
- [8] VAT application decree (UStAE, sections 3.10 and 10.1, 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