2026
- Feature
The biggest lever was switched off — and the plan is now CHF 89
A pension-fund buy-in is the largest lever in Swiss personal tax: at CHF 180'000 in Zürich, putting CHF 50'000 in saves CHF 15'955 in that year alone. Optiqo was showing it as not applicable to almost everyone, because the only way to know your capacity is the “maximal möglicher Einkauf” figure on your annual pension certificate, and we never asked for it — our own estimate models the statutory minimum, which for most people in a decent plan is far below what they could actually pay in. There is now a field for it in the calculator, and supplying it lights the lever exactly. The calculator and the plan page also now agree on what is free: every lever that applies to you and what each is worth, stated up front. What the plan adds is how much to put into each, in what order, and by which deadline. That change, and the depth behind it, is why the one-time plan is now CHF 89 rather than CHF 49 — a fiduciary charges CHF 400–900 to plan a single buy-in. Anyone who already bought at CHF 49 keeps everything, forever, at the price they paid.
- Fix
Pages for merged communes now forward instead of 404ing
Swiss communes merge most Januaries. When we refreshed to 2026 tax data, the fourteen communes that merged away lost their pages — so a link or search result for, say, Astano in Ticino led to a dead end. Those now forward to whichever commune absorbed them (Astano to Lema, Villnachern to Brugg, and so on), in all four languages. Moutier, which moved from Bern to Jura at the start of 2026, forwards to its new canton. We also fixed the 404 page itself, which was throwing errors in the browser instead of rendering — you now get a proper page with somewhere useful to go.
- Feature
The calculator is now a live simulator
No more filling in a form and pressing a button. /calculator recomputes as you type and as you drag: a tax curve showing where you sit and how steep the next franc is, sliders for your 3a contribution and pillar-2 buy-in that move the bill in real time, the same income across all 26 cantons (click one to switch), and the cheapest communes in your canton. There's a panel for the three things we can't know about you — your pillar-2 salary deduction, other income, and any deductions you itemise — and one that spells out exactly what the estimate assumes. Six one-click scenarios if you'd rather just look around, and the full state lives in the URL so you can share a simulation.
- Fix
Married lump-sum withdrawals were quoted the single tariff
Our capture of the federal tax administration's capital-withdrawal tables sent the marital-status field in a format their API accepts but silently ignores, defaulting everyone to the single tariff. Married users therefore saw too much tax on every lump-sum figure — 10–30 % too much depending on canton; a CHF 750,000 withdrawal in Zürich read CHF 71,006 where the correct figure is CHF 89,227. The tables have been recaptured and every number now matches the official calculator exactly. Single-status figures were never affected. Separately, married households in Valais were shown communal tax about 25 % too high, because Valais grants its marital relief after the communal multiplier in a way our capture missed.
- Fix
Valais communes now match the federal calculator exactly
Valais is the one canton where each commune adds its own indexation on top of the cantonal coefficient, so the published multiplier doesn't describe what you actually pay — and the effect changes with your income and whether you're married. In Leukerbad, for instance, the effective rate swings between 149 and 177 depending on both. We were applying a single flat rate per commune, which left us a few per cent out on income tax and up to 12 % out on lump-sum withdrawals everywhere except Sion. Each affected commune now carries a rate curve instead of a single number. Checked against the federal calculator across 30 Valais communes: income tax within 0.19 %, lump-sum exact.
- Data
Now computing 2026 tax, not 2025
We were quoting last year's tariffs under a 2026 heading. Everything the calculator uses — the cantonal and federal scales, all 2,110 commune multipliers, the standard deductions — has been recaptured from the Federal Tax Administration for tax year 2026. Three hundred communes changed their multiplier, ten cantons changed deduction amounts, and Moutier's move from Bern to Jura is now reflected. Most people will see a slightly lower bill than before: Zürich about 1.9 % lower, Zug 4.3 %, Lucerne 5.0 %, Schwyz 6.2 %. We also now check every figure against the federal calculator across three communes in each canton rather than just the cantonal capitals — which is how the earlier commune-level errors had gone unnoticed.
- Fix
Lump-sum withdrawals were missing the communal tax in six cantons
In Aargau, Graubünden, St. Gallen, Nidwalden, Obwalden and Appenzell Innerrhoden we were charging no communal tax at all on pillar-2 and 3a withdrawals — a CHF 500,000 withdrawal in St. Gallen showed CHF 21,750 where the correct figure is CHF 37,233, 41 % too low. The cause was a wrong multiplier: we were scaling the communal part by the rate cantons apply to company capital, which those six levy only at cantonal level, instead of the ordinary communal income rate a lump-sum benefit actually follows. Fixed and re-checked against the federal calculator at fifteen communes, capitals and villages alike — every one now matches to the franc. If you modelled a withdrawal in those cantons, the real tax is higher than we told you.
- Fix
We stopped guessing your pillar-2 buy-in capacity
The old estimate returned the same CHF 268,531 for anyone earning between 120k and 400k — a constant dressed up as a personal figure. It now says which of three things it knows: the figure from your pension certificate, a conservative floor estimated from the gap your pay rises opened, or — if you've earned at or above the pillar-2 salary ceiling your whole career — that it genuinely cannot tell, because your buy-in room sits in your fund's non-mandatory plan. Where a saving depends on capacity we can't confirm, the page says so.
- Data
All 26 cantonal tax scales now verified
BL and VS were the last two scales still flagged as approximations. BL's §34 StG logarithmic formula (verified at section boundaries against the ESTV reference) and VS's Calcul_IC indexed brackets (transcribed from the canonical Art. 32 LF table) are now in the verified set. New regression tests in the engine guard the boundary numbers + the monotonicity invariants. The "two scales we still mark as approximations" disclaimer is gone from the homepage.
- Data
Atlas data: filter out partial-status (fraction) communes
The cantonal-move target and the cheaper-commune-within-canton lookup used to surface VD partial-tax-status entries (e.g. 'Les Bioux (fraction) **' at Steuerfuss 3) — not real places you can move to. They're now filtered everywhere: /score, /explore top-10 cheapest, canton-page commune lists, OG image ranks. Real cheapest commune in CH is now Schwende-Rüte (AI, Steuerfuss 18) — and that's a legitimate target.
- Feature
Optimisation Score v2 — engine-backed, feasibility-weighted
The free Score no longer uses heuristic ranges. Every CHF figure on /score now comes from a real engine pass: baseline tax + four engine levers (3a max, LPP buy-in, swap to cheapest commune in your canton, swap to cheapest CH commune). Each lever has a feasibility weight (1.0 'Easy' → 0.25 'Very hard') so cantonal-move doesn't dominate the score — raw savings still shown on the cards, but the score reflects realistic headroom.
- Feature
Public changelog at /changelog
Curated release notes — features, data refreshes, fixes — tagged and grouped by year. Available as RSS at /changelog/feed.xml.
- Feature
Atlas: keyboard navigation + mobile list view
The 26-canton heat-map is now fully keyboard-navigable: tab between cantons, hear the name and average Steuerfuss read by screen readers, see the active stroke move with focus. A sorted list below the map serves as the primary view on phones and as a tabular fallback for assistive tech. Reduced-motion preference is respected.
- Feature
Open Graph cards on canton + commune share links
Pasting any /commune/[bfs] or /explore/canton/[code] URL into iMessage, WhatsApp, LinkedIn, or Slack now shows a magazine-cover preview with the commune/canton name, Steuerfuss, and ranking. Home, /score, /pricing, /learn share a default editorial card.
- Feature
Security headers + HSTS preload eligibility
Full security-headers set added: HSTS (2 years, preload-eligible), Content-Security-Policy, Referrer-Policy, Permissions-Policy, X-Content-Type-Options. /embed/* routes get a loosened CSP so partner sites can iframe them. Framework leak (X-Powered-By) removed.
- Feature
Dashboard: full DE / FR / IT translation
Every page under /dashboard — overview, all-levers, profile, document upload, action plan, combo, multi-year planner, cantonal-move — now switches language with the EN / DE / FR / IT toggle in the header. Translations use Swiss-domain terminology (Steuerfuss / coefficient communal / moltiplicatore, BVG / LPP, Rachat / Einkauf / Riscatto). Pre-launch native review still recommended.
- Feature
Sentry live: error reporting with EU residency
Errors are now reported to a Sentry project in the EU (de.sentry.io) with strict PII scrubbing — email, salary, income, pension data, auth tokens, and request bodies on /api/profile and /api/levers/* are dropped before transport. Tunnel route bypasses ad-blockers.
- Feature
Pension certificate (Vorsorgeausweis) extractor
Upload your annual 2nd-pillar statement, get insured salary, current capital, and — the headline — your buy-in capacity extracted into your profile. Encrypted at rest with AES-256-GCM, 30-day auto-purge, 'delete immediately after extraction' opt-in.
- Feature
Optimisation Score (free) — 0-100 with named top lever
A 60-second test that estimates your tax bill, identifies which of six levers apply to your situation, and names the biggest one ("your largest gap is the Pillar 2 buy-in window — about CHF 3,500/yr"). Free, no signup. Horizontal optimisation scale shows where you sit.
- Launch
First real charge — Stripe live with TWINT
CHF 49 via TWINT, status succeeded. Cross-border activation took ~10 days of Stripe risk review. Card + TWINT both work; checkout is in CHF, no subscription, no card-on-file.
- Feature
Onboarding wizard with commune-level precision
New paid users land in a 9-step wizard: canton → commune → birth year → civil status → children → salary → flash baseline → situation flags → pillar data. The commune picker quantifies precision: choosing the right commune is up to 28% more accurate than canton-default.
- Data
All 2,061 communes ingested
Full 2026 Steuerfuss tables for every Swiss commune (all 26 cantons). 24 of 26 cantonal scales transcribed from cantonal Steuergesetz / Loi sur les impôts texts; VS and BL marked as approximations pending source confirmation.
- Feature
PRO tier launched — CHF 49 one-time, no subscription
Free atlas + free calculator + free score stay free forever. The personalised plan (multi-year LPP buy-in optimiser, 4 specialist calculators, cantonal-move ROI, document upload + extraction, printable action plan) is CHF 49 one-time for tax year 2026.
- Feature
Tax engine: 6 optimisation levers
Pillar 3a (single year), LPP buy-in (single year + multi-year DP optimiser), staggered lump-sum withdrawal, the buy-in × withdrawal combo, and 3a multi-account split. Pure TypeScript engine with decimal.js arithmetic — no LLM in the calculation path.
Subscribe
One short email a month with the latest changelog entries and any 2026 Swiss tax rule shifts that affect your bill — no marketing fluff. Sign up for the dispatch