A stocktake of the machine-readable Jahresrechnung in Switzerland · 255 public documents, every statement with its source and its date

Two standards, 26 cantons · Part 1 of 14

1 · The thesis — and how to refute it

The format is published. Nothing that stands between a finished file and an accepted submission is a format problem. Three documented conditions determine the machine-readable Jahresrechnung today, and the sources name all three. The first is a login: access to the Zürich online tax return for legal entities runs through AGOV, and the canton writes on its own migration page that an AGOV account «repräsentiert immer eine natürliche Person, die entweder für sich selbst oder im Auftrag handelt» (always represents a natural person, acting either on their own behalf or on another's). The second is a contract: the body behind the national transmission network records in its own specification of 06.03.2026 that «aus vertragsrechtlichen und statuarischen Gründen seitens Swissdec … aktuell nur kantonseigene Deklarationslösungen die E-Bilanz via Distributor elektronisch empfangen» (for reasons of contract law and of statute on swissdec's side, only the cantons' own Deklarationslösungen can at present receive the E-Bilanz electronically via the Distributor), and that for private solutions «zuerst die vertraglichen Grundlagen geschaffen werden» (the contractual basis has to be created first). The third is an instruction that does not exist: in some 33'000 words of Zürich documentation addressed to taxpayers and their representatives — Wegleitung 505, seventy help-centre articles, five portal pages — «E-Bilanz», «XBRL», and «eCH-0276» do not appear a single time; the tax period in question is precisely the one for which the canton announced the E-Bilanz on its own slide of 25.08.2025 under the heading «E-Bilanz ab Steuerperiode 2025» (E-Bilanz from tax period 2025). A login, a contract, and a missing instruction: none of them is a data-format problem. Two are documented decisions with a named body behind them; the third is a gap in the documentation, and the sources give no reason for it.

That is the thesis of this text, and the chapters that follow argue it rather than merely illustrate it. Refuting it takes one of three things: showing that the identity layer knows a legal entity; that the contractual basis exists; or that an instruction is on file somewhere and we missed it. All three refutations are cheap to run — they take a document, not a debate. That is why every prediction at the end of this text carries a falsifier with a date.

What counts in this text

Every number in this text can be recomputed, and the basis is open. The corpus this work draws on holds, as of 04.08.2026, 255 files, 91 MB, 331'014 words of extracted text. The commands that reproduce those figures are find . -type f | wc -l, du -sh, and find . -name '*.txt' -exec cat {} + | wc -w. The file-type split: 50 PDF · 53 XSD · 37 XML · 32 HTML · 8 XLSX · 7 JSON · 4 MD · 3 ZIP · 2 JS · 1 WSDL · 1 CSV, plus 57 text extracts. The documents: cantonal ordinances, Wegleitungen, question-and-answer papers, slides from an information event, minutes from a second Steueramt, the national implementation plan, the transmitter specification of the transmission network together with its schemas and SOAP examples, three versions of the same XML schema, the rule catalogue of the Schweizerische Steuerkonferenz (the Swiss Tax Conference) with 1'432 rule lines, the XBRL taxonomy with its linkbases, vendor documentation, and the shipped frontends of two cantonal portals.

The first correction concerns us. Our own brief names «64 Artefakte / 338'469 Wörter» (64 artefacts / 338'469 words). Neither number reproduces. Neither is published here, and neither is quietly replaced; both are named, because a text whose authority rests entirely on counting cannot afford a wrong number in its first paragraph — not even one from our own house.

How the counting works here

Counting runs on word boundaries, never on substrings. The regular expression, which anyone can rebuild, is:

(?<![A-Za-zÄÖÜäöü0-9])term(?![A-Za-zÄÖÜäöü0-9])

A single counter-example shows why this is not pedantry. A naive search for ech without word boundaries finds ten hits in the Obwalden handbook on the E-Bilanz. All ten sit inside Jahresrechnung, Obligationenrecht, and entsprechend. With word boundaries there are zero. The same trap has caught our own work three times: USt sits inside must, trust, and August; ERiC sits inside Berichtigung and Gerichtsstand. A count made from substrings publishes noise and calls it a finding.

And the reach of a zero finding stays tightly bounded: a count excludes only what it tested. Where this text says a term does not appear, it names, alongside that finding, the files searched, the method used, and the day. The zero refers to those files and to no others. It says nothing about a page that was not crawled, and nothing about a form whose PDF text we could not extract. Where we have not checked, it says «ungeprüft» (unverified) and not «null» (zero). That distinction holds throughout this text: «ungeprüft» where no check was run, «null» where one was.

The prediction rule — declared here, not hidden at the end

This text makes predictions. It binds itself to a rule that belongs before the first of them, because a rule stated afterwards reads as an excuse.

The rule comes from a re-scoring. We scored Leopold Aschenbrenner's Situational Awareness against the actual course of events twenty-five months after publication: 2 HIT · 1 PARTIAL · 3 MISS · 3 TOO-EARLY. The distribution says more than the hit rate. The hits sat where a measured quantity was carried forward. The misses and the too-early calls sat where a threshold was tied to a date — «bis Jahr X ist Y erreicht» (by year X, Y is reached). The lesson, in one sentence: extrapolate inputs, not outcomes.

Three caps follow, and they hold without exception in this text:

  • A threshold-by-date statement — «bis zum Datum D gilt Zustand Z» (by date D, state Z holds) — reaches grade B at most, however strong the reasoning. Argument strength does not lift the cap.
  • A trend carried forward on a measured input — a series we counted ourselves and can count again — can reach grade A.
  • A category-disappearance statement — «X gibt es dann nicht mehr» (X will no longer exist by then) — reaches C at most, unless a structural forcing mechanism is named that compels the disappearance.

Every prediction in this text carries its class, its grade, and its falsifier with a date. Without all three, no prediction goes in. This is not coyness about our own uncertainty — it is the only form in which a forecast can be scored later. A bare claim cannot be wrong. A claim that carries a falsifier can be.

The self-binding

One sentence recurs in this text, and this is the place to meet it first: we have never imported a file into a cantonal portal. Not in Zürich, not in Obwalden, not anywhere. We have never called the swissdec Distributor, not even with Ping. Everything this text says about how the Swiss channels work is read from published documents, from shipped XML schemas, and from publicly retrievable configuration files — not from a test.

That boundary runs through the whole text. Where the documents are silent — for instance on which format the Obwalden import button accepts from tax period 2025 onwards — this text says the documents are silent. It does not print the plausible reading. That is the less comfortable version, and it is the only one that holds.

Openness includes provenance. We are a German sole proprietorship based in Cologne, with production experience in the German E-Bilanz procedure under § 5b EStG. We have no Swiss company, no Swiss address, no UID. There is nothing to buy from us in Switzerland. This text is not an offer; it is the analysis of a corpus we assembled for a question of our own, and several of its findings get in our way. Where they do, they are in here regardless.

The citation rule

This text has an opinion, and it says it. It has one about the situation: about what the documents mean, what follows from them, what happens next, and what would have to change. That opinion is not disguised as a neutral stocktake.

It has no opinion on the conduct or the competence of any named body. Nothing is asserted here about a named authority, a named association, or a named company without a verbatim quotation from that body standing beside it. Where a finding is uncomfortable, a quotation or a count carries it, never a characterization. Quote, do not characterize. That is at once the legally clean position and the stronger one in argument: a sentence the body wrote itself is harder to dispute than an attribution from outside.

Two examples of what that looks like in practice, both with chapters of their own later. First: instead of asserting that a channel for third-party software is politically unwanted, we quote the canton of Zürich, 08.09.2025 — «Im Rahmen der Digitalisierung ist es dem Kantonalen Steueramt Zürich wichtig, dass die Unternehmen nicht nur über ZHcorporateTax, sondern auch über Anwendungen von Drittsoftwareherstellern ihre Steuererklärung elektronisch einreichen können. Die Umsetzung wird nach einer ersten Betriebsphase von ZHcorporateTax in einem separaten Vorhaben angegangen.» (as part of digitalization, it matters to the Kantonales Steueramt Zürich that companies can file their tax return electronically not only via ZHcorporateTax but also via applications from third-party software vendors; implementation will be taken up in a separate project after an initial operating phase of ZHcorporateTax). The intent is in the document; what is missing is a date. That is a more precise finding, and a harder one, than any imputation. Second: instead of inferring an industry from a single case, we count out a vendor matrix with one row for each of the 26 cantons — 25 of 26 receive a natural person's return from third-party software by machine; 14 of 26 receive that of a legal entity. The comparison within a single table carries the statement, with no extrapolation.

What this text does not claim

Federalism comes up regularly in this debate. At the rule level the spread is narrow: of the 1'432 rule lines in the rule catalogue of the Schweizerische Steuerkonferenz, as of 31.03.2026, 1'390 are common and 42 cantonal, carried by six cantons. At the delivery level it is wider: 25 of 26 against 14 of 26. Zürich is one of the twelve cantons in which a legal entity's return cannot be transmitted from third-party software today — and it is the largest of them.

One further clarification on the 42: the rule catalogue records that cantonal deviations should be listed in the catalogue, not that they must. The 42 is therefore a lower bound on recorded deviation, not a measurement of actual deviation. Twenty cantons have entered no rule. That is not the same as twenty cantons that do not deviate. That too is a count that excludes only what it tested.

The rest of this text takes the three gates one at a time, with the documents that put them in place and the documents that could open them again. Eleven predictions stand at the end, each with class, grade, and falsifier. Anyone who reads that far and finds one of them wrong has an easy task: the checking document is named in each case, with the date beside it.