Skip to content
Rechnungskit
Guide · E-invoicing
Explainer

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).

Three baskets
Which VAT rate applies to shipping?
Single-rate basket
Only coffee (7%) or only a coffee grinder (19%)
Shipping7% or 19%
Mixed basket
Coffee at 7% and a grinder at 19% in one parcel
ShippingSplit proportionally
EU delivery or export
Exempt intra-community delivery or export, if the proof is in place
ShippingTax-exempt
Shipping is a dependent ancillary service and takes the VAT rate or exemption of the goods (section 3.10(5) 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.

Quick check · mixed basket
How do you split the flat shipping fee?
Whole fee at one rateThe fee serves both deliveries, and one rate only fits one of them
Not allowed
Split by net amountsWith different VAT rates, this shifts the economic value shares
Not the standard method
Split by gross individual selling pricesMethod from BFH XI R 22/22 (value meal), applied to shipping
Standard method
Whichever method you choose, 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 · Basket (gross values = split basis)
Coffee
€21.40 · 7%
Coffee grinder
€35.70 · 19%
Apply the gross ratio 21.40 : 35.70 (37.5% / 62.5%) to the flat fee
2 · Flat shipping fee €4.90 gross, split
€1.84
at 7%
€3.06
at 19%
3 · Back out the included VAT per portion
Shipping (7%)
€1.72 net + €0.12 VAT = €1.84
Shipping (19%)
€2.57 net + €0.49 VAT = €3.06
Sum of the portions: €1.84 + €3.06 = €4.90, exactly the fee the customer paid. Rounding differences go to the largest portion, always the same way.

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:

  1. 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.
  2. 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.
  3. 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

No. As an ancillary service, shipping takes the VAT rate of the goods shipped (section 3.10(5) UStAE, German). If you only ship food at 7% (§ 12(2) no. 1 UStG), shipping is taxed at 7% too. Only goods at the standard rate mean 19% on shipping.
Read more
Guide E-invoicing for B2C in Germany: does the mandate apply to online shops? Guide E-invoicing in Germany: the mandate explained for founders Guide Invoicing in a foreign currency in Germany: which exchange rate applies? (ECB, DATEV, OSS) Guide GoBD explained: principles, retention and what they mean for your invoices Guide Small-amount invoices in Germany (§ 33 UStDV): when the buyer's address can be left out Guide E-invoicing for small businesses in Germany (Kleinunternehmer): duties, exemptions, thresholds 2026 Guide The German cancellation button (§ 312k BGB): who needs it and how it works Guide The date of supply on German invoices: shipping date or payment date? Guide Leitweg-ID: what it is, how it is structured and how it gets onto the invoice Guide The OSS scheme explained: the €10,000 threshold, registration and an example Guide Deferred revenue for SaaS and online courses in Germany: when a pRAP is required Guide Proforma invoices in Germany: what they are for and why they are not invoices Guide Deferred revenue in German accounting (pRAP): definition, bookings and an example Guide Changing the billing address on a German invoice afterward: is it possible? (without a cancellation) Guide Correcting an invoice in Germany: which route for which error? Guide Server-side tracking for Meta: Conversions API with a lean consent bar Guide Shopify gift cards in Germany: gift card, discount code and store credit for VAT Guide Shopify invoices in Germany: what Shopify does, what is missing, what applies from 2027 Guide Shopware invoices: what Shopware 6 does on its own and what is missing Guide Stripe DATEV export: getting Stripe payments into DATEV as a booking batch Guide Booking Stripe fees in Germany: clearing account, reverse charge and Stripe Technology Europe Ltd Guide Stripe Invoicing in Germany: creating invoices, pricing and e-invoicing Guide Stripe invoices with payment terms as e-invoices: bank transfer to the Stripe IBAN Guide Stripe invoices in Germany: what Stripe Invoicing and Billing do, what is missing, and what applies from 2027 Guide The German withdrawal button (§ 356a BGB): mandatory since June 19, 2026 Guide WooCommerce DATEV export: options, file format and account mapping Guide WooCommerce invoices in Germany: plugins, mandatory details, e-invoicing Guide XRechnung vs ZUGFeRD: the XRechnung format explained Guide Payment terms on invoices in Germany: rules, due date calculation and wording Guide ZUGFeRD explained

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
de en