Two standards, 26 cantons · Part 2 of 14
2 · Two lanes, three artefacts — and why there are two formats
The question about the one format for Switzerland misses the architecture: there are two lanes. The architecture is not one format for Switzerland. It is a network with two lanes that differ in almost every measurable property: in the number of addressees, in synchronicity, in the state machine, and in whether a human still has to do something 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 — including an earlier version of this text — regularly show three.
| No. | From | To | Operation | Data format | Remark (verbatim) |
|---|---|---|---|---|---|
DISTRRIBUTOR[1] (sic) | ERP | SwissdecAdapter | Part 6, DeclareRawBalanceSheet | XBRL | «Einreichen der eBilanz» (filing the eBilanz) |
| — | SwissdecAdapter | Kantonseigene Deklarationslösung | — | XBRL | «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ösung | SwissdecAdapter | Part 7, DeclareBalanceSheet | eCH-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ösung | SwissdecAdapter | Part 7, DeclareBalanceSheet | eCH-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 but the consequence of 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 is not covered by the specification that covers 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.
Directly beneath this table sits a note that suspends one of the four rows. It is the subject of the next chapter. For here it is enough that the matrix contains the row before any contract carries it.
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
Why 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 line of the proof is the states. They sit in the same schema, twenty-eight lines apart:
DeclareRawBalanceSheetStateType = Accepted · CompletionReleaseMissing · Finished
DeclareBalanceSheetStateType = Accepted · Processing · Finished
And the case types differ accordingly: DeclareRawBalanceSheetConsumerCaseType carries, alongside CaseContext and State, an optional Completion of type ep:CompletionType; DeclareBalanceSheetConsumerCaseType does not. ep:CompletionType carries an AccessInformationType with {Url, ExpiryDate} plus Credentials {Key, Password}. What happens with it is described 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 talks past:
The XBRL lane does not end with a filing. Its state machine knows 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 does not know this state and carries no Completion element: the declaration is complete when it is sent.
XBRL is raw figures into a form that a human still finishes. eCH-0276 is a finished declaration to a tax domicile. **The word Raw is in the operation name, and it is load-bearing.**
Synchronicity 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 declaration filed returns a JobKey, and the sender has to come back — with 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 one sentence, under project INM2.084, with the Schweizerische Steuerkonferenz SSK (the Swiss Tax Conference) as the organisation 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; at programme level there are 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: on exactly that stretch lies 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 describes the programme outwardly leaves open at this point what the Transmitter specification fixes. 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, and it is 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 next to 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 is in the container schema itself. The payload slot of the eCH-0276 lane binds the standard hard: <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.