Discounts on invoices
Updated
Discounts appear on the invoice in a way that lets you follow, for every tax rate, how they reduce the net amount and the VAT. This page shows what a discount looks like on the invoice, why it has to apply per tax rate and how discounts from Shopify, WooCommerce, Stripe Billing and Shopware come in.
How a discount appears on the invoice
On the invoice, discounts from shops appear at line level. For a discounted line, the column "Total net" shows three rows:
- the undiscounted line amount (quantity times unit price),
- below it a separate row "Discount" with the deduction,
- below that the reduced net amount.
This way the invoice adds up at a glance in the amount column: quantity times unit price minus discount equals net amount. If the discount is a clean percentage, it is shown too, as in "Discount 5 %".
Why the discount has to apply per tax rate
With mixed tax rates, for example 7 % and 19 % in one order, a discount has to apply proportionally per tax rate. A single total discount that is not split would be wrong with mixed rates. That is why the per-line display is built this way on purpose.
If an order discount is not already available per line, Rechnungskit distributes it across the tax rates in proportion to the gross value of the lines. That way every tax rate group carries its correct share. The calculation runs in whole cents, and the shares add up exactly to the discount.
Worked example: an order contains coffee for €50.00 net at 7 % and a mug for €50.00 net at 19 %, plus an order discount of €10.00 (net).
| Step | 7 % (coffee) | 19 % (mug) | Total |
|---|---|---|---|
| Gross value of the lines | €53.50 | €59.50 | €113.00 |
| Share of the discount | €4.73 | €5.27 | €10.00 |
| Net amount after discount | €45.27 | €44.73 | €90.00 |
| VAT | €3.17 | €8.50 | €11.67 |
| Gross total | €101.67 |
If the whole discount were deducted at 19 % only, the invoice would show €7.60 VAT there instead of €8.50, and €3.50 instead of €3.17 at 7 %. The VAT per rate would then be stated wrongly.
What happens to a cart or order discount
A discount granted in the shop on the whole order, a discount code for example, also ends up correctly on the invoice. It is distributed proportionally across the lines. How that happens depends on the source:
| Source | What it delivers | What appears on the invoice |
|---|---|---|
| Shopify | distributes an order discount across the lines itself and reports the share per line | Rechnungskit takes over exactly this distribution |
| WooCommerce | reports the already discounted line amount per line | the discount per line follows from the difference to the original amount |
| Stripe Billing | delivers the already discounted amount per line | the discount is included there |
| Shopware | keeps a discount as its own discount line and splits it proportionally if there are several tax rates | its own line, separated by tax rate |
| API | a net discount per line in the field discountNetCents (in cents); the unit price stays undiscounted |
a discount row on the line |
| Manual order | a discount per line and, optionally, an order discount | line discount on the line, order discount as its own "Discount" row in the totals, split by gross value |
For the order discount of a manual order, the invoice totals also show the net amount per tax rate. That shows you which share of the discount falls on which rate.
Arithmetically consistent
Whichever way the discount comes in, the net amount and VAT per tax rate and the gross total always fit together to the cent. They match the amount actually paid.
Where to find it in the app
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.