
Why TaxWize
Why TaxWize returns the same number every time
The tax calculation is a rule set, not a language model. What that buys you in practice: a visible chain of line items, separate cantonal and federal columns, and a result you can reproduce.
Updated on 13.08.2026 · 6 min read
The tax calculation inside TaxWize is a rule set, not a language model. The same entries produce the same franc, today and six months from now. There is no leap from your documents to a result, just a chain of separate line items: net salary, commute, the flat rate for other professional expenses, further education, pillar 3a, insurance premiums, taxable income.
Reading your documents is the part that uses AI, hosted in Switzerland. It doesn't do the arithmetic. It proposes values and puts them in front of you, and every value can be confirmed, overwritten or discarded before anything is calculated.
Two quotes, one total
One builder's quote lists everything: materials, hours, travel, disposal. The other shows a single figure in the bottom right. Both can be correct. Only one of them lets you find the mistake if there is one.
That's the difference between a number that looks plausible and a number you can follow. A language model produces text that fits the patterns in its training data, and a tax figure comes out of that as a by-product of the phrasing. A rule set has no route to the answer except the rules, and the rules sit there one by one.
Choosing that was the decision everything else followed from. It costs me time on every new canton, and it pays off in exactly one situation: when somebody wants to know how the number came about.
How the number is actually built
A constructed case for the 2025 tax year: single, resident in the city of Zurich, no children, no property. The salary certificate shows a net salary of CHF 89'856. On top of that, a public-transport pass for the commute at CHF 3'000, a part-time course costing CHF 8'500, and a full pillar 3a contribution. Every line between the net salary and the result is a deduction.
| Line | Cantonal tax | Federal tax |
|---|---|---|
| Net salary per salary certificate | 89'856 | 89'856 |
| Commute (public-transport pass) | 3'000 | 3'000 |
| Other professional expenses (3 % of net salary) | 2'696 | 2'696 |
| Further education | 8'500 | 8'500 |
| Pillar 3a | 7'258 | 7'258 |
| Insurance premiums | 2'900 | 1'800 |
| Taxable income | 65'502 | 66'602 |
Every line has an origin and none of them is an estimate. The flat rate for other professional expenses is 3 % of the net salary shown on the certificate, rounded to the franc, with a floor of CHF 2'000 and a ceiling of CHF 4'000. The pillar 3a figure is the annual ceiling for employed people who belong to a pension fund. Zurich's own filing guide sets out both.
You feel the benefit the moment something changes. If the course had cost CHF 9'500 instead of CHF 8'500, exactly one line moves and both totals drop by exactly CHF 1'000, to CHF 64'502 and CHF 65'602. The flat rate stays at CHF 2'696, the commute at CHF 3'000, the insurance deduction at CHF 2'900. You can see not just that the result moved, but where.
Why are there two columns?
Because you have two taxable incomes rather than one. The canton and the federal government run the same chain but plug in different amounts along the way. Here exactly one line differs: in the canton of Zurich, the deduction for insurance premiums and interest on savings is capped at CHF 2'900 for cantonal tax and CHF 1'800 for federal tax, for a single person contributing to pillar 2 or pillar 3a. Capped, because the deduction stops at the premiums actually paid if those come to less. That gap of CHF 1'100 carries straight through to the bottom line, CHF 65'502 against CHF 66'602. Other cantons set their own amounts.
The canton's own insurance-premium form prints both columns next to each other, cantonal and federal, each with its own amounts. Estimating in your head, you usually only carry one of them.
These amounts belong to the 2025 tax year. They're reset annually, so for a different year the current figures are the ones that count.
What happens when something is missing
This is where the two designs part company. A text generator has an answer for every question, including the ones it has no basis for, and it fills the gap with whatever is typical in similar cases. Nothing in the answer tells you something was missing.
So the question gets asked instead. If no document shows whether you commute on a pass or by car, TaxWize asks rather than inferring it from the paperwork. Leave the question unanswered and a stored default is used, and you can overwrite it at any point.
The difference isn't that nothing is ever assumed. It's that the assumption hangs on a question you were asked, and the answer stays yours to change.
Where the AI does the work, and where it doesn't
I've kept its role deliberately narrow and intend to keep it there. A salary certificate is read, and the values it finds sit next to the document on a larger screen, highlighted in the PDF wherever the spot can be located. You confirm a value, type over it, or throw it out. The documents and the data read out of them stay on servers in Switzerland.
From the confirmed value onwards the rule set takes over, and at that point no phrasing can shift anything. Same inputs, same result, however often you rerun it and in whatever order you entered things.
If the result does move, it's for one of two reasons: your entries changed, or the stored rule set for a tax year was updated. Rule sets don't drift on their own.
What this design costs
It knows exactly the rules I've put into it. That's the price: TaxWize covers seven cantons in full rather than twenty-six, because every canton has its own amounts, its own rounding and its own forms. A language model wouldn't hit that limit. It would produce an answer for all twenty-six, but without the line-by-line chain you could check it against.
Being followable also isn't the same as being right. Whether the chain lands on the same figure the canton reaches is a separate question with a separate answer: comparing it against the cantons' own calculators, which I've written up in Verified to the franc.
What you get out of it
The tax report walks the same chain as the table above: from net salary through each individual deduction to taxable income, then on to cantonal and municipal tax, church tax where it applies, and direct federal tax, every line labelled and shown separately. You can hold it against your own paperwork instead of trusting a total. Whether a particular deduction applies to you depends on your circumstances, and that's the point where a look at your documents pays off.
To see how much your municipality alone shifts the result, the free tax comparison covers every municipality in the fully supported cantons. And if you'd rather see the chain run on your own figures, TaxWize costs CHF 39 per declaration per tax year.
Sources
- Canton of Zurich, Wegleitung zur Steuererklärung 2025 (main edition), professional expenses, pillar 3a contributions [item 14], insurance premiums and interest on savings [item 15]: https://www.zh.ch/content/dam/zhweb/bilder-dokumente/themen/steuern-finanzen/steuern/natuerlichepersonen/2025/est-wegleitungen/305_Wegleitung_ZH_2025_HA%20bf%20DEF.pdf (retrieved 13.08.2026)
- Canton of Zurich, form 365 "Versicherungsprämien 2025", part B maximum deduction: https://www.zh.ch/content/dam/zhweb/bilder-dokumente/themen/steuern-finanzen/steuern/natuerlichepersonen/2025/est-formulare-uj/365%20Versicherung%20ZH%202025%20UJ%20DEF.pdf (retrieved 13.08.2026)
- Verfügung der Finanzdirektion über die Pauschalierung von Berufsauslagen Unselbstständigerwerbender (LS 631.33, from tax period 2024), section I/3: https://www.notes.zh.ch/appl/zhlex_r.nsf/WebView/634DD7A2FF652108C1258A8C00281D29/$File/631.33_3.10.23_123.pdf (retrieved 13.08.2026)
Frequently asked questions
- What does a deterministic tax calculation mean?
- It means the same inputs always produce the same result. The calculation follows a fixed rule set per canton and tax year rather than generating text. Recompute the same declaration today and in six months and you get the same franc, as long as your entries and the stored rule set for that tax year have not changed.
- Does TaxWize use AI, and what for?
- Yes, for reading your documents. Your salary certificate, pillar 3a statement or premium invoice are read by a language model hosted in Switzerland, and the values it finds are shown to you for checking. The tax calculation itself then runs on the rule set, not on the language model.
- Why are there two different taxable incomes, cantonal and federal?
- Because cantonal and federal tax use different amounts for some deductions. In the example in this article, a single person in the canton of Zurich for the 2025 tax year, exactly one line differs: the deduction for insurance premiums for someone contributing to pillar 2 or 3a is capped there at CHF 2'900 for cantonal tax and CHF 1'800 for federal tax. Other cantons set their own amounts.
- Can I check the calculation myself?
- Yes, and that is the point of building it this way. Every line appears with its amount in the tax report, and the amounts themselves are published in your canton's official guide for the relevant tax year. Whether a given line applies to you depends on your own circumstances and is worth checking against your documents.
Related guides
Keep your deductions in view
TaxWize reads your documents, surfaces deductions that may be relevant, and prepares your tax return for filing. CHF 39 per tax return per tax year.
Explore TaxWize