I always wanted to know how the tax system in Germany works, so I decided to dig deeper into the German taxation law and to understand how much money I'm left with after taxes and why.

Unsurprisingly, it turned out that the tax system in Germany is rather complicated. I found it hard to know how much money I have in my bank account after taxes.

The basics

Germany uses a complicated formula to calculate taxes. The total tax burden for freelancers is the sum of the income tax and an additional solidarity surchage.

Income tax

Your income tax ranges between 0 and 45% of your taxable income. This percent depends on several factors like marital status, income of your significant other, number of children, etc.

Based on your taxable income, you are put into one of five zones. If you are not married and you want to pay your taxes for income earned in 2018, you can find your zone like this (all numbers are in €):

if ( income <= 9000 ) { return Zone.First; } else if ( income <= 13996 ) { return Zone.Second; } else if ( income <= 54949 ) { return Zone.Third; } else if ( income <= 260532 ) { return Zone.Fourth; } else { return Zone.Fifth; }

The first zone calculation is simple - you pay nothing. The second and the third zones have a progression which grows, based on your income. The fourth and the fifth zones are a flat percent of your income. Being in a higher zone means that you pay the tax for the lower zones, which you subtract.

I know this sounds complicated, so I created an npm module that can help you to understand the calculation better.

A tax calculating function for 2018 looks like this :

function tax ( income, zone ) { switch ( zone ) { case Zone.First: return 0 ; case Zone.Second: const y = (income - 9000 ) / 10000 ; return (( 997.80 * y) + 0.14 * 10000 ) * y; case Zone.Third: const z = (income - 13996 ) / 10000 ; return ((( 220.13 * z) + 0.2397 * 10000 ) * z) + tax( 13996 , Zone.Second ); case Zone.Fourth: return ( 0.42 * (income - 54949 )) + tax( 54949 , Zone.Third ); case Zone.Fifth: return ( 0.45 * (income - 260532 )) + tax( 260532 , Zone.Fourth ); } }

This rather complicated formula with all the constants changing every year, is the reason why many tax calculation tools exist. There are even services that you can use to literally print a huge table with pre-calculated taxes for different years, as well as income amounts.

Solidarity surcharge

This tax is a function of your income tax and in most cases it is 5.5% of your income tax.

Taxable income

The taxable income is your income (the sum of all invoices for the year) minus a variety of work-related expenses.

Typical expenses are :

Insurances

Accounting

Transportation

Phone / Internet

Office

Hardware

Software

Unfortunately, these expenses, are not so easy to accumulate and are rather not so big. In comparison, I hardly managed to gather more than 7-8k per year for my "freelancing business".

Simple Calculator

Here is a simple calculator for a not married taxpayer.

Income Tax Calculator 2015 2016 2017 2018 Taxable income € Income tax 5000 € Solidarity surcharge 5000 € Total tax burden 5000 € Money in the pocket 5000 €

Freelancing and the tax burden

It is really not that hard to be a freelancing developer in Berlin. You have nice gigs, you are paid on time, you usually don't spend a lot of time on looking for a project and you are paid well.

At this point it is really hard to complain for something, but here it is.

Because of the difficult and complicated progressive tax system, most of the time you don't know how much money you have left after taxes.

This leads to a lot of questions, like :

Should I take 2 or 3 month holiday?

Is it worth it to take an additional small project or not?

What happens if I earn 10 € more per hour?

Progressive pay rate

Let's take the following example :

A month has 22 working days. A freelancer usually works for a 9-month period of time each year. The price per working hour is set at 50 €. The freelancer accumulates 9.2k € of business expenses

This leads to 198 working days or 1584 working hours and 70k € of taxable income.

Let's calculate the average price per working hour after taxes.

Average price per hour after taxes 2015 2016 2017 2018 Paid per hour € Yearly hours h Income 0 € Business expenses € Taxable income 0 € Income tax 5000 € Solidarity surcharge 5000 € Total tax burden 5000 € Earnings after taxes 5000 € Average price per hour 0 €

In the case above, for every 50 € earned, around 20 € is paid for taxes.

The "sweet spot"

What if the freelancer sets aside the tax after each working hour?

Let's try to answer the following questions :

What is the price per hour after taxes, calculated in real time?

How much did the freelancer earn today?

Let's grab the real-time price per hour calculator :

Real price per hour after taxes 2015 2016 2017 2018 Paid per hour € Yearly hours h Business expenses €

The line chart above tells us that there is a "sweet spot" at around the 7th month or at the 1280 hour. After that, the tax progression stops and the tax becomes flat 42% of the taxable income. This is because the freelancer enters the fourth zone.

For each euro earned after that you pay almost 50 cent for taxes.

The freelancer will have the biggest reward if reaching the sweet spot ( 54.8k of taxable income ) happens as fast as possible

After reaching that income, the freelancer can only do the following to increase the price per hour after taxes :

Make more business expenses Invest time into some side-businesses Take more holidays Renegotiate the agreed paid price per hour

Advance payments

Another side of the German tax system is the mandatory advance payment of the taxes. The freelancer is supposed to pay the tax for the last year and the same amount as pre-payment for the next year.

The advance payments are due every quarter and the "difference" between the last year's tax and the last year's advance payments is due around the following month after the submitted tax declaration.

For the first year of freelancing, the freelancer has no advance payments. In the second year, however, the tax for the first year is due, as well as the same amount of advance payment for the current year.

The advance payments can easily get the freelancer out of business if not paying attention.

Again, for simplicity, let's define that a freelancer started working in 2015 with a pay rate of 40 € per hour. He or she increases the income every year by 50% - either by charging more or by working more. The freelancer spends 2.5k € per month for rent and other personal things. The tax declaration is submitted on 1st of February each year.

Let's see what will be the cash flow of this freelancer for the next 4 years :

Cash flow calculator Paid per hour € Yearly hours h Yearly business expenses € Monthly personal expenses € Freelancing for y Yearly increase of income % Final balance 0 €

As you can see from this chart, in the beginning of the second year, the freelancer will pay almost everything "saved" as a tax. The same happens at the end of the second year. The cycle breaks at around the third year.

Nevertheless, four years of freelancing and aggressive increase of income, equals 120k € of savings.

Conclusion

Here are some tips that I try to follow :