Skip to content
Rechnungskit
E-invoicing software · made in Germany

Subscription billing for SaaS in Germany: seats, add-ons and plan changes with clean VAT

A SaaS subscription rarely stays the same. Customers add seats, take an add-on or scale back down, and for VAT purposes each of these changes is its own case. Rechnungskit handles them automatically: increases become a prorated supplementary invoice under § 31 UStDV, reductions a reduction of the consideration under § 17 UStG, and every period a complete e-invoice in which each line carries its own VAT rate.

Seats, add-ons and changes go on one invoice per period, with prorated charges for upgrades, a credit note for reductions and a webhook to your system at every step.

No credit card · set up in under an hour · personal onboarding
The gap

Writing invoices is easy. Writing compliant ones is not.

The difference between a PDF and a compliant e-invoice matters at the next tax audit. Rechnungskit closes exactly this gap.

Without RechnungskitWith Rechnungskit
Recalculating seat changes by hand and hoping the prorated amounts are right Buyers choose the number of seats in checkout, and the price is per unit
Running add-ons as a second subscription with a second invoice and a second charge Add-ons go on the same invoice with the same charge
Issuing the upgrade charge without any reference to the original invoice Increases are calculated to the day as a supplementary invoice under § 31 UStDV
Customers emailing you when they want to change their seats Customers change the quantity themselves in the customer portal, and your system hears about it by webhook
How it works

Four steps to a compliant e-invoice.

  1. 01
    Create a plan
    Create a subscription plan and turn on quantity selection: the price is per unit, and you set the minimum and maximum. Add-ons are separate products that you attach to the main product, each with its own VAT category.
  2. 02
    The customer subscribes
    In checkout, the buyer picks the number of seats and any add-ons. Every total comes from the server, and the total price is shown prominently right before the order is placed (§ 312j(2) BGB, the German Civil Code). One charge, one invoice, every line shown separately.
  3. 03
    The customer makes changes
    In the customer portal, the customer raises or lowers the quantity in two steps and sees the amount before confirming. Increases are charged pro rata for the rest of the period, reductions are credited pro rata, and your system gets the matching webhook.
  4. 04
    Every period becomes an e-invoice
    Renewals automatically create a complete ZUGFeRD invoice with the service period, go through accrual-based deferral and are ready in the DATEV export for your tax advisor (Steuerkanzlei).

A subscription is a contract that keeps changing

In SaaS, the contract grows with the customer: 3 seats turn into 5, a white-label package comes on top, and six months later the customer scales back down. In bookkeeping terms, each of these moves is its own case. An increase mid-period is additional consideration for the rest of the period. A reduction lowers the consideration after the fact. And the next regular charge has to show the new state in full, with the correct VAT.

Most billing tools collect the right amount, but the documents behind it are missing or incomplete. Rechnungskit lets the contract change as often as it needs to and creates the matching document for every step on its own.

The price is per seat

For each plan, you turn on quantity selection and set a minimum and a maximum. In checkout, the buyer then chooses the number of seats. Every total shown comes from the server, and the order is placed for exactly the amount shown. § 312j(2) BGB requires the total price to be displayed clearly and prominently right before the order, and for subscriptions per billing period (Art. 246a § 1(1) nos. 5 and 8 EGBGB). The invoice shows the line with quantity and unit price, every period.

Your customer's amount is frozen. If the VAT rate changes between two periods, the charge stays the same and only the net share on the invoice is recalculated. Customers elsewhere in the EU get the same treatment at the correct rate under the OSS rules (the EU One-Stop Shop). For business customers with a verified VAT ID (USt-IdNr.), the reverse charge applies.

Add-ons go on the same invoice

In Rechnungskit, an add-on such as a white-label package is a separate product with its own VAT category that you attach to your main product. It then shows up as an extra option in the subscription checkout of every plan with the same billing interval. The main plan and its add-ons are charged together and appear on one invoice, each line with its own VAT rate.

Customers can also add or remove an add-on later. Adding one creates a prorated supplementary invoice for the rest of the current period, and removing one creates a prorated credit note. If the customer cancels, everything ends together, so there are no separate terms and no second charges.

Customers make changes themselves

Every subscription comes with a customer portal that needs no login, with a cancellation button (§ 312k BGB) and a withdrawal button (§ 356a BGB). If quantity selection is turned on, the customer can also change the number of seats there. The server calculates the change first, then the customer confirms the amount shown as binding. If the amount has changed in the meantime, nothing is charged and the new amount is shown instead.

When the customer increases, the remaining period is charged to the day, as a supplementary invoice that refers to the period invoice (§ 31(1) UStDV). When they reduce, a prorated credit note is issued as a reduction of the consideration under § 17(1) UStG. You can make both changes from your side as well, per subscriber in the subscription management. The customer gets an email confirmation for every change.

Your system stays in sync

If you sell seats, you also have to provision them. That is why Rechnungskit reports every step in the subscription lifecycle to your system by webhook: activation, successful and failed charges, plan or quantity changes, cancellation, end and withdrawal. Each message carries the complete current state, including quantity and booked add-ons, so you can switch access and seats automatically. Setting this up with Make, Zapier or n8n is covered in Securing checkout webhooks.

The bookkeeping runs alongside. Every period becomes a ZUGFeRD e-invoice with the service period, annual subscriptions are deferred to the right periods if you keep double-entry books (§ 250(2) HGB, the German Commercial Code), and the DATEV export is ready for your tax advisor, including the supplementary invoices and credit notes from every change.

FAQ

FAQ

Because the original invoice was correct and stays correct. Under German law, an invoice may consist of several documents that refer to each other (§ 31(1) UStDV). So the prorated charge for the rest of the period clearly identifies the original invoice and, like every invoice, states the service period (§ 14(4) sentence 1 no. 6 UStG, the German VAT Act). The old invoice is never touched.
Last reviewed:

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.

Ready for the e-invoicing mandate?

Create an account, connect your payment provider, check everything in free test mode. Billing starts when you go live.

Try it now
de en