Tax filing Taxes

Tax declaration guide (0/6): Intro

About this guide

Welcome to the tax declaration guide! This entry is an introduction to a complete, step-by-step, English guide on how to file taxes in Switzerland.

The focus of this tax declaration guide is on canton Zurich. Most concepts and steps can be generalized to other cantons.

Official guidelines and disclaimer

The tax declaration guide on is by no means an official one. The only official guide is the one that the tax authorities of your canton distribute. For canton Zurich and tax year 2019, this guide is a 48-page PDF. It’s called Wegleitung zur Steuererklärung 2019 (guide for declaring taxes 2019). And it’s available in German only. You can access it here, or download it from the link below. The tax office publishes a new version every year. Make sure you always use the most updated one.

The official guide (or whatever your tax office says) holds over everything you might read on this website. I am no accountant or tax advisor and waive all liability on others’ tax filings. You are ultimately responsible for whatever you file in your tax declaration. You should take the guide on this website as an unofficial, secondary source of information.

Manual forms vs online tool

The first step in your tax filing process is an important one. You don’t want to get it wrong. You want to use ZHprivateTax. ZHprivateTax is the official online tool you can use to file your taxes in canton Zurich. It replaces physical forms. You should use this tool to file your taxes and not the physical forms. Here’s why:

  • The online tool comes with an input assistant. This is great. It means that the tool will automatically select the relevant forms for you based on a set of initial input data. If you go for manual forms, you have to figure out by yourself which forms are relevant. This can be cumbersome
  • The online tool can automatically populate financial data from an official database. This database is maintained by the Swiss tax authorities. Auto-population can be extremely useful and time-saving. Just picture the pain of manually fetching info at year-end. Stock prices, exchange rates, ex-dividend dates, dividend yields etc. You don’t want to go through that. The online tool makes your life easier
  • With the online tool, you can easily use real time translators while filing your taxes. For example the one built in Google Chrome. This can be a life saver if you’re not a native German speaker. Legal terms in a foreign language are complex. Auto-translation is definitely much handier than manually typing over mile-long German words from the physical forms

Getting started with ZHprivateTax

Create an account

Hopefully you’re now convinced that you should file your taxes through ZHprivateTax. If this is the first time you use it, you’ll have to create an account. Click on Login ZHprivateTax. From there click on Anmelden. Finally hit Registrieren.

Accessing online tool on

Start a new tax declaration

Once you have an account, you can log in and start a new tax declaration. I’d suggest to go with the full version (Vollversion der Steuererklärung), see picture below. You’ll need a one-time access code (Zugangscode) to start the process. You should have received this from the Swiss tax authorities when they prompted you to file your taxes. They send it by post. The letter reads Zugangscode für die Online-Steuererklärung.

Once logged in, you can start the tax declaration process by clicking on the highlighted button

Did you manage to get the access code and open your tax declaration? If so, you want to go for the Eingabeassistent ( ‘input assistant’). At the beginning of the tax declaration process, the input assistant will ask you a series of questions. They have to do with your income, expenses and assets. Any forms that are not relevant to you based on your input will be filtered out. As a result, you’ll only have to fill in a subset of all tax forms from the get-go.

Make sure to start your tax declaration process with the Eingabeassistent

There’s one more intro screen before formally kicking off your tax declaration. It simply explains how the tool works. The six main themes are always on top (1). The different forms within a given theme are on the left (2). Easy.

Explanatory window introducing the six tax filing themes (1) and the left navigation tree (2)

You can always come back

You don’t have to complete your tax filing in one go. Your progress is automatically saved as you navigate through the forms. It can be resumed at any time by logging into the web tool again.

Themes in the tax declaration guide

There are six themes you’ll go through while filing your taxes. This guide is structured along those themes. I’d recommended to go through them in order. There will likely be forms not applicable to you. However, I still recommend you skim through all the content. You wouldn’t want to miss out on any juicy tax deduction.

The following links will be available at the bottom of each entry. They’ll help you navigate the guide. You should head to Persönliches next.

  1. Persönliches (personal data)
  2. Einkünfte (income)
  3. Abzüge (deductions)
  4. Wertschriften (securities)
  5. Vermögen (wealth)
  6. Abschluss (completion)

Last updated on November 2, 2020

2 replies on “Tax declaration guide (0/6): Intro”

I found your instructions extremely clear and invaluable! Thank you!

One question: I’d need a one-time access code (Zugangscode) to start the process you describe in

I won’t receive this from the tax authorities because my salary is below 120k and I have a resident permit B (however, I need to do the tax return to declare foreign income).

Do you know how to obtain this code?

Thank you!


Hey Stefano! I don’t think you’ll get the code if you’re not subject to a full tax declaration due to permit or income. It’s pretty likely the Swiss authorities won’t have visibility over your foreign income until you declare it. I’d suggest to reach out to them (bottom of this page, assuming you’re in canton Zurich).

Leave a Reply

Your email address will not be published. Required fields are marked *