Home › Industries › SaaS

Taxes and bookkeeping for saas founders, software providers and app developers

Recurring revenue, customers in many countries and payment providers such as Stripe or Paddle: a SaaS company brings its own tax questions.

Typical tax topics for SaaS companies

1. Deferring annual subscription revenue

If a customer pays for twelve months in advance in October, only part belongs to the current financial year. You recognise the rest as deferred income on your balance sheet, so you do not pay profit taxes too early on revenue attributable to next year.

2. EU consumers: OSS

Digital services to consumers in other EU countries are subject to VAT in the customer’s country once relevant EU-wide annual turnover exceeds €10,000. Instead of registering in each country, you report these sales together through OSS to Germany’s Federal Central Tax Office.

3. EU business customers: reverse charge

When you sell to businesses with a VAT ID in other EU countries, you invoice without German VAT and state that the customer is liable for VAT. You also report these sales in your recapitulative statement.

4. Stripe, Paddle and similar providers

Payment providers deduct fees and bundle payments rather than paying out gross sales individually. You still record revenue and fees separately. With merchant-of-record models such as Paddle, the provider itself is your customer, which changes the VAT treatment.

5. In-house development and tools

You cannot capitalise internally developed software for tax purposes. Development costs such as hosting and freelancers reduce your profit immediately. Overseas tool invoices are subject to reverse charge.

Bookkeeping, duties and deadlines

Bookkeeping: A UG (entrepreneurial company) or GmbH (limited liability company) is a commercial entity by legal form. You must keep double-entry books under the German Commercial Code (HGB) and prepare a Jahresabschluss (annual financial statements) each year, comprising a balance sheet, profit and loss account and notes. Micro-entities may omit the notes.

Annual financial statements: For small companies, you have up to six months after the financial year ends to prepare the statements. You must disclose them in the Unternehmensregister (company register) within twelve months of year-end. You submit them electronically to the Finanzamt (tax office) as an E-Bilanz (electronic tax balance sheet).

Annual tax returns (you file by 31 July of the following year if filing without a tax advisor):

  • Corporation tax return: 15% of profit plus a solidarity surcharge of 5.5% on that tax
  • Gewerbesteuer (trade tax) return: based on your municipality’s assessment multiplier
  • Annual VAT return
  • Investment income withholding tax notification if your company distributes profits

Ongoing: You file advance VAT returns monthly or quarterly, depending on the previous year’s VAT, by the 10th of the following month (one month later with a permanent filing extension). Corporation tax prepayments fall due on 10 March, June, September and December; trade tax prepayments on 15 February, May, August and November.

Record retention: Keep supporting documents such as invoices and bank statements for eight years, and books and annual financial statements for ten years.

You can manage your bookkeeping, prepare annual financial statements and create tax returns in Pluto. Employee payroll, non-standard international matters, tax groups, transformations and tax audits are outside its scope.

Frequently asked questions

Do I pay tax on a full annual subscription in the year of payment?+

Not for profit taxes: you carry the portion attributable to the following year forward as deferred income. Separate advance-payment rules apply to VAT.

When do I need OSS?+

When your annual digital-service sales to consumers in other EU countries exceed €10,000. Below that threshold, you can charge German VAT.

What about customers outside the EU?+

Digital services to customers outside the EU are generally outside the scope of German VAT. Whether tax is due in the customer’s country depends on local rules.

Updated: October 2026