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 2 of 14

2 · Two lanes, three artefacts — and why there are two formats

ERP /accountingcanton's ownDeklarationsloesungprimary and secondarytax domicileXBRLeCH-0276privateDeklarationsloesungnot contractually openedswissdec, Transmitter documentation, Kommunikationsmatrix, edition 06.03.2026
The two lanes as the Kommunikationsmatrix describes them · swissdec, Transmitter documentation, edition 06.03.2026

The question of the one format for Switzerland misses the architecture: there are two lanes. That architecture is not a single format. It is a network of two lanes that differ in almost every measurable property: the number of addressees, synchrony, the state machine, and whether a human still has something to do at the end. The answer to «warum zwei Formate?» (why two formats?) is not in the prose of the specification. It is in the schema — and it is the best available explanation of the whole programme.

The Kommunikationsmatrix, in full

The basis is Tabelle 2.1 of the swissdec-Richtlinien, edition 06.03.2026, headed «Kommunikationsmatrix über alle Geschäftsprozesse und Systeme» (communication matrix across all business processes and systems). It has four rows. Accounts of this architecture, an earlier version of this text among them, regularly show three.

No.FromToOperationData formatRemark (verbatim)
DISTRRIBUTOR[1] (sic)ERPSwissdecAdapterPart 6, DeclareRawBalanceSheetXBRL«Einreichen der eBilanz» (filing the eBilanz)
SwissdecAdapterKantonseigene DeklarationslösungXBRL«Der SwissdecAdapter leitet die Empfangen eBilnanz an die kantonseigene Deklartionslösung weiter» (sic) (the SwissdecAdapter forwards the received eBilanz to the canton's own Deklarationslösung)
DISTRRIBUTOR[3] (sic)Kantonseigene DeklarationslösungSwissdecAdapterPart 7, DeclareBalanceSheeteCH-0276«Die kantonseigene Deklarationslösung sendet den eCH-0276 via Distributor an Haupt- und Nebensteuerdomizile» (the canton's own Deklarationslösung sends the eCH-0276 via the Distributor to the primary and secondary tax domiciles)
DISTRRIBUTOR[2] (sic)Private DeklarationslösungSwissdecAdapterPart 7, DeclareBalanceSheeteCH-0276«Die Deklarationslösung sendet den eCH-0276 via Distributor an Haupt- und Nebensteuerdomizile» (the Deklarationslösung sends the eCH-0276 via the Distributor to the primary and secondary tax domiciles)

Four observations that a three-row version loses. First: the XBRL route is two hops, not one. From the ERP to the SwissdecAdapter, then from the SwissdecAdapter into the canton's own Deklarationslösung. Second: the second hop carries neither an operation nor a number. That is not an oversight; it follows from the scope clause in Part 1 of the same specification: «Dieses Dokument behandelt die Schnittstelle zwischen Transmitter und Distributor, nicht aber jene zwischen Distributor und Endreceiver.» (this document covers the interface between Transmitter and Distributor, but not the one between Distributor and end receiver). The last stretch into the canton falls outside the specification that governs everything else. Third: the numbering runs [1], —, [3], [2]. The private lane carries the lower number and comes last. We do not say what that means about the order in which things were written; we say what is printed. Fourth: DISTRRIBUTOR is spelled with three Rs in all three numbered rows. We quote it sic, because a typo is the most reliable signature that a quotation is verbatim.

Immediately beneath the table sits a note that suspends one of the four rows. It is the subject of the next chapter. For present purposes it is enough that the matrix carries the row before any contract does.

The drawing says the same thing more clearly

Abbildung 2.1 «Prozessübersicht eBilanz» (process overview eBilanz) sits one page earlier. The nodes, verbatim and in diagram order: Unternehmen · Jahresende · Auflösung · Abschluss Bilanz aufbereiten · private Deklarationslösung? · NEIN / JA · Aufbereitung Daten XBRL · XBRL · Ex- / Import · Deklaration ergänzen · Zusätzliche Daten bereithalten · KSTV von 1 bis 26 · Backend sdA · Verteilung aufbereiten · Format? · XBRL / eCH0276 · KSTV Deklaration Lsg · Ergänzungen verarbeiten · Private Deklaration Lsg · eCH0276 · privat versenden · privat empfangen · Veranlagung durchführen · KSTV · DISTRIBUTOR[1] DISTRIBUTOR[2] DISTRIBUTOR[3]. One node reads eCH076 — that too sic.

Three of these nodes are architecture, not decoration. private Deklarationslösung? is a decision diamond with a JA and a NEIN branch: the diagram does not merely leave room for the private solution; it branches at it. KSTV von 1 bis 26 is a swim lane: the twenty-six cantonal tax administrations are in the picture, numbered. And Format? is a router in the Distributor backend with two exits, XBRL and eCH0276. The Distributor is not a pipe. It is a switch that sorts by format.

The core: one cardinality against many

There are two formats because the two lanes answer different questions. That is not in the prose; it is in BalanceSheetDeclarationContainer.xsd (version 1.0-20260306, build number ea2c41b842), and it is there in two lines:

<xs:complexType name="DeclareRawBalanceSheetJobType">        <!-- XBRL -->
  <xs:element name="Addressee" type="ep:AddresseeJobType"/>              <!-- [1..1] -->

<xs:complexType name="DeclareBalanceSheetAddresseesType">    <!-- eCH-0276 -->
  <xs:element maxOccurs="unbounded" minOccurs="0"
              name="Addressee" type="ep:AddresseeJobType"/>              <!-- [0..unbounded] -->

The XBRL lane can address exactly one recipient. The eCH-0276 lane can address any number. That is the distribution across primary and secondary tax domiciles, expressed as cardinality. The figures go to one canton; the declaration goes to all tax domiciles. Both shipped examples confirm it in their structure: DeclareRawBalanceSheet.xml carries <bsc:Job><bsc:Addressee …> without a wrapper; DeclareBalanceSheet.xml carries <bsc:Job><bsc:Addressees><bsc:Addressee …>. In both cases the addressee is a canton abbreviation: <ep:AddresseeIdentification>BE</ep:AddresseeIdentification>.

The state machine, and the word Raw

The second strand of the proof is the states. They sit in the same schema, twenty-eight lines apart:

DeclareRawBalanceSheetStateType   =  Accepted · CompletionReleaseMissing · Finished
DeclareBalanceSheetStateType      =  Accepted · Processing · Finished

The case types differ accordingly: DeclareRawBalanceSheetConsumerCaseType carries, alongside CaseContext and State, an optional Completion of type ep:CompletionType; DeclareBalanceSheetConsumerCaseType does not. ep:CompletionType holds an AccessInformationType with {Url, ExpiryDate} plus Credentials {Key, Password}. What is done with it is set out in §8.11, UC011 «Completion aufrufen» (invoke completion), trigger: «Der Akteur möchte die übermittelte Meldung ergänzen und freigeben.» (the actor wants to complete and release the transmitted message). Standard flow, step 3, verbatim: «Das Sendersystem öffnet ein Browserfenster mit der zusammengestellten URL.» (the sending system opens a browser window with the assembled URL).

That answers the question the prose does not:

The XBRL lane does not end with a filing. Its state machine has a state called CompletionReleaseMissing — the release is missing. After that the software opens a browser, a human completes, a human releases. The eCH-0276 lane has no such state and carries no Completion element: the declaration is complete when it is sent.

XBRL is raw figures on their way into a form that a human still finishes. eCH-0276 is a finished declaration on its way to a tax domicile. The word Raw is in the operation name, and it is load-bearing.

Synchrony follows from that. Part 6 of the specification heads its flow «Initiale synchrone Meldung» (initial synchronous message), Part 7 «Initiale asynchrone Meldung» (initial asynchronous message). Figures pushed into a form are answered at once. A filed declaration returns a JobKey, and the sender has to come back — subject to a floor, §8.2.1.1: «Der Abstand zwischen den einzelnen automatisierten Abfragen muss jedoch mindestens zehn Sekunden betragen.» (the interval between individual automated queries must be at least ten seconds).

Three artefacts, not two

At the level of the profit-tax declaration for legal entities there are two standards. At programme level there are three. The implementation plan of Digitale Verwaltung Schweiz names both goals in a single sentence, under project INM2.084, with the Schweizerische Steuerkonferenz SSK (the Swiss Tax Conference) as the organization responsible for delivery: companies are to «nach eCH-0276 für die Steuererklärung Juristische Personen in die Deklarationslösung der kantonalen Steuerverwaltungen übermitteln und … die notwendigen Daten nach eCH-0217 für die Abrechnung der Mehrwertsteuer an die Eidgenössische Steuerverwaltung übermitteln» (transmit per eCH-0276 for the legal-entity tax return into the Deklarationslösung of the cantonal tax administrations and … transmit the necessary data per eCH-0217 for the VAT return to the Eidgenössische Steuerverwaltung). Two recipient levels, three target artefacts: eCH-0276, eCH-0217, XBRL CH-Taxonomie. «Zwei Standards» (two standards) names the legal-entity profit-tax lane; the programme level carries three target artefacts.

The contradiction we do not resolve

The same DVS sentence puts a different format on the ERP stretch than the swissdec matrix does. DVS/SSK: the financial data go «direkt auf Knopfdruck … nach eCH-0276 … in die Deklarationslösung der kantonalen Steuerverwaltungen» (directly at the push of a button … per eCH-0276 … into the Deklarationslösung of the cantonal tax administrations). swissdec, Tabelle 2.1, row [1] and Part 6.1: that same stretch carries XBRL. eCH-0276 leaves a Deklarationslösung; it does not arrive at one.

Both readings hold. Read as a programme label, «nach eCH-0276» (per eCH-0276) is correct: the standard is called «E-Bilanz und E-Tax JP», and the project is colloquially the eCH-0276 programme. Read as a format statement, the sentence names a different format. We do not decide that — it is not our sentence. We name the ambiguity and what it costs: the plan that presents the programme to the outside world leaves open at this point what the Transmitter specification settles. A software vendor who reads only the one document builds the wrong lane.

One line from the SSK rulebook reconciles the two formats better than any interpretation can, and it sits on the title page: «Falls die E Bilanz nicht elektronisch übermittelt wird, ist die Jahresrechnung in der Deklarationslösung manuell zu erfassen. Auch für die manuelle Erfassung gilt die CH Taxonomie 2025.» (if the E-Bilanz is not transmitted electronically, the Jahresrechnung is to be entered manually in the Deklarationslösung; the CH Taxonomie 2025 applies to manual entry as well). The CH-Taxonomie is therefore not a parallel carrier alongside eCH-0276. It is the chart of accounts underneath every channel — including underneath the keyboard. eCH-0276 is the message; the CH-Taxonomie is the structure below it.

Where all of this comes from, and what we have not done

The primary source is swissdec-Richtlinien-eBilanz-Transmitter-1.0-20260306.zip, 9'405'318 bytes, SHA-256 91747b94…f5a6, retrieved on 04.08.2026 without a login. Contents, counted in this session: 35 XSD · 1 WSDL · 11 SOAP examples · 3 PDF (de/fr/it, 126 pages each). Our own crawl manifest says «10 SOAP samples» in two places. There are eleven. A text whose authority rests on counting corrects its own count before it quotes anyone else's.

Two sentences from the document itself carry the rest of this text. The first, page iv: «Verbindlich sind ausschliesslich die jeweils veröffentlichten offiziellen XML-Schemata.» (only the officially published XML schemas are binding in each case). That is swissdec's own licence to read the schema against the prose — and it is needed later. The second sits in the container schema. The payload slot of the eCH-0276 lane binds the standard tightly: <xs:element ref="eCH-0276:eBalanceSheetETaxLegalEntity"/>, imported from eCH-0276-1-0-4_20260115.xsd. The payload slot of the XBRL lane binds nothing: <xs:element ref="xbrl:xbrl"/>, the generic instance root node of the XBRL specification 2.1. The same schema/ directory holds eight files of the CH-Taxonomie 2025-05-31. The container imports none of them — counted: zero hits for ch-taxonomy. swissdec ships the CH-Taxonomie and does not bind it. Shipping is not binding.

Everything in this chapter is read from files, not from a call. We have never imported a file into a cantonal portal, and we have never called the Distributor — not even Ping.