# Switzerland-specific guidance

> From the Zendrea manual for AI assistants, generated 2026-10-31 from the knowledge of Zendrea's built-in assistant. All topics: https://www.zendrea.ch/llms.txt; all of them in one file: https://www.zendrea.ch/llms-full.txt. Screen names are quoted in English, account numbers are those of the standard Swiss chart, and nothing here is tax or legal advice.

The company's jurisdiction is **Switzerland**. The following Swiss rules apply on top of the universal guidance above.

**Swiss usage in German replies.** Write Swiss Standard German: "ss", never "ß" (anschliessend, Strasse); the tax office is the Steueramt (cantonal) or the ESTV (federal), never "Finanzamt"; the document a shareholder gets for the private tax return is a "Bescheinigung", not a "Zertifikat".

**Cash-basis method (Milchbüchleinrechnung).** For Swiss companies the Settings → Company cash-basis checkbox is labelled "(Milchbüchleinrechnung)". It is suited to small sole proprietorships (turnover below CHF 500k). Its cash-basis balance sheet drops the "balanced" check because a Milchbüchleinrechnung needs no balancing Bilanz.

**Swiss VAT codes.** The seeded Swiss set covers all official rates with date-validity windows, including the historical 2018–2023 generation (7.7/2.5/3.7) next to the current one (8.1/2.6/3.8): standard V81S/V81P, reduced V26S/V26P, lodging V38S/V38P, historical V77S/V77P, V25S/V25P, V37S/V37P. When a fiscal year before 2024 is involved, the historical codes (V77S/V77P etc.) are the correct ones for those dates. Output VAT on business-asset disposals uses the standard rate valid at the disposal date (currently 8.1%).

**VAT return export (eCH-0217 / ESTV upload).** Each quarter row of the VAT report carries three action buttons in workflow order: **"XML"** (file the return), **attach receipt** (the ESTV confirmation), **book payment/refund** (settle). The XML button downloads that quarter's VAT return as an official **eCH-0217 E-MWST V2.0.0** XML file. The user uploads that file to the **ESTV Portal → "MWST-Abrechnung pro"** — there is **no direct submission API**; upload is the only programmatic route. The file declares net turnover per rate (the ESTV recomputes the tax), input VAT, and the amount payable/credit for the quarter. It uses the **effective method** and reports only taxable turnover (no export/exempt deduction lines yet), and appears only for a **VAT-registered** period that has VAT activity; the company needs a valid **MWST number in Settings → Company**. A **net tax rate (Saldosteuersatz)** period exports the same way per SEMESTER row (S1/S2): its XML declares the net tax rate method — gross turnover at the approved net tax rate plus any Bezugsteuer at the statutory rate, with no input tax. A period opted into **annual reporting** (either method) exports ONE return for the whole year from its single row — same XML shape over a full-year window; the ESTV portal validates the period against the reporting frequency it has approved for the company. The **receipt** is stored per quarter (not tied to the payment booking), so it can be attached as soon as the ESTV portal provides it — before the payment is booked — and re-attached to replace; the eye button in the Receipt column views it. Its QR payment part (reference, ESTV IBAN, amount) is read automatically and lets the Bank Account report match the booked VAT payment to the bank transaction. The app also reads the return's **amount to pay** (Ziffer 500, or the credit in Ziffer 510 for a refund, checked against the QR payment part): when a quarter's return is attached, the pay/refund dialog **pre-fills the ESTV's amount** and shows it next to the amount **calculated from the books**; the payment books **what is paid** (Dr the VAT payable / Cr the money account, the input VAT cleared into the payable as before), **never a difference line**: the gap between the return and the books (normally cents of VAT rounding, since the ESTV computes rate × turnover while the books add up each invoice's VAT) **stays on the VAT accounts** until the year is settled (see "Settling the VAT year" below), and the dialog says so. A large gap means a booking is missing or carries the wrong VAT code, or the return missed something: fix the books, and declare what the return missed in the Jahresabstimmung (or, during the year, on a Korrekturabrechnung of that quarter). The payment file (pain.001) and the Deadlines panel use the same ESTV amount. Without an attached return (or for a photo of it) the dialog pre-fills the amount from the books, as before. The dialog also shows the **due date**: the return's "Valuta (Verzugszins ab)" ("Due date per ESTV return"), or without a return the date the ESTV uses for the law's 60 days — the **30th of the second month** after the period, end of February for Q4 — and pre-fills the **payment date** with it (a due date on a weekend: the Friday before; once overdue: today). Booking the settlement **locks the XML button** for that quarter; deleting the settlement entry in the ledger unlocks it again (the receipt is unaffected). Once the settlement is booked, the pay button turns into a **view button** (greyed arrow with a small eye): clicking it opens the booked payment **read-only** in the payment dialog — date, amount, paid-from account and, on older payments, their difference line — for inspection; nothing can be changed there (corrections go through deleting the settlement entry in the ledger). A **paid quarter is done**: what the books leave on it waits for the year's end, and the payment file leaves it out. When a **Korrekturabrechnung** for that quarter replaces its return (its PDF attached via the paperclip), the quarter offers a further payment or refund of exactly the difference between what the new return asks and the money already paid, booked as money only against the VAT payable. Payments booked before this rule may carry a difference line to 6900/6950; they stay as booked.

**Settling the VAT year (Jahresabstimmung, annual reconciliation).** Art. 72 MWSTG: once the annual accounts are final, the year's filed returns are compared with the books and only the differences are declared on the ESTV's form "Jahresabstimmung", at the latest **180 days** after the year's end (29 June for a calendar year); after **240 days** (28 August) the ESTV takes the returns as final and a later correction needs a Korrekturabrechnung; without differences nothing is filed. The VAT report's section **"Annual VAT reconciliation <year>"** (German UI "Jahresabstimmung <year>") compares per Ziffer what the attached returns declared (read from the portal's PDF text, no AI; a scan cannot be read) with what the books give now, on the lines the books can derive (turnover and tax per rate, Bezugsteuer, input tax, amount payable; a return filed gross on the gross basis); a quarter that differs gets an amber dot. Its **turnover check** sets the income statement's revenue against Ziffer 200 and lists the revenue booked without a VAT code. When the year differs, it lists what to declare per line with copy buttons and offers an **eCH-0217 XML file of type 3** for the upload in "MWST-Abrechnung pro". Below the quarters: (1) the row **"Annual reconciliation <year>"** (German "Jahresabstimmung <year>"): its paperclip keeps the submitted form (read at once), its pay button pays what the form asks (Ziffer 500) or receives its credit (510), pre-filled, booked Dr VAT payable / Cr the money account (reversed when received) with the year's own reference (vat:reconciliation:<year>, Belegnummer VAT-JA-<year>-<date>), so a payment made in June counts for the year it corrects, never for the quarter of its date. The payment message is **"<MWST number> J<year>"** ("A<year>" in French and Italian), to **CH60 0900 0000 3000 0037 5**; the payment file offers it once the form is read. (2) The **Total row** shows what is left on the year's VAT accounts. Once the year is over, its quarters are paid and the differences are declared (the returns match, the Jahresabstimmung is booked, or day 240 has passed), its **scale button** clears it against P&L in one entry without money, on the year's **last day** (or on the day of booking when the year's period is marked closed): more VAT booked than paid Dr payable / Cr **6950**, less Dr **6900** / Cr payable, a refunded quarter's gap first moved from the input-tax account; the server takes the amount from the report (vat:clearing:<year>, Belegnummer VAT-CLR-<year>-<date>), and the ledger lists it as closing work. **Never** clear a difference still to be declared: declare and pay it on the row first. (3) The **Deadlines panel** reminds once the year's quarters are paid, due on day 180: attach the returns, file the Jahresabstimmung (with its amount), or clear what is left; it goes when nothing is left. Late interest on a difference in the ESTV's favour is computed and billed by the ESTV itself (generally not under CHF 100) and booked as a financial expense (6900). A defect found **during** the year goes on that quarter's Korrekturabrechnung, not on the Jahresabstimmung. A correction booked through **Others** instead of the row leaves the year's totals unbalanced, so steer the user to the row.

**Tax Declaration report: its two buttons.** Top-right, the report has exactly two buttons: **"Estimate Taxes"** (German UI "Steuern schätzen"; see the estimate paragraph below) and **"Export Tax Files"** (German UI "Steuerunterlagen exportieren"), a menu with every document of the filing: **"Annual accounts (PDF)"** (Jahresrechnung, hidden for cash-basis companies), **"Loss carry-forward (PDF)"** (Verlustverrechnung), **"Hidden equity (PDF)"** (Verdecktes Eigenkapital), one **"Salary certificate <name>"** item (Lohnausweis) for each person on Form 12 who drew a salary in the year (the enclosure the portal's Form 12 entry takes; the same certificate as the salary report's, which then shows it too), **"E-Bilanz (XBRL)"**, and **"Save all files…"**. Each menu item says in a second line what the document is for; one that does not apply to the period stays listed but greyed out, with the reason (e.g. "No prior-year losses"). Each PDF opens in its own browser tab (one document per click), the XBRL downloads. **"Save all files…"** saves every document that applies in one go: when the Jahresrechnung is among them, its questionnaire opens first (prefilled) and its button reads "Save all files". In Chrome and Edge the user then picks a folder and the browser asks once for permission to save there; Firefox, Safari and phones cannot write into a folder, so there the same files arrive as one ZIP download. The files are named after the portal's upload slots (e.g. "Verlustverrechnung 2025.pdf", "Lohnausweis Muster Hans 2025.pdf"); a document that cannot be built (e.g. the XBRL without a UID) is skipped and named in the message, the others are saved all the same.

**Tax Declaration report: the table follows the Zurich portal.** Below the two buttons, the report's table has ZHcorporateTax's structure: **Master Data** (German UI "Stammdaten": the cards Firma, Steuerdomizile, Verwaltungsorgane / Geschäftsleitung, Rückfragen und Vertretung), **Annual Accounts** ("Jahresrechnung": Reingewinn, Gewinnverwendung, Kapital, Auszug aus der Erfolgsrechnung) and **Tax Adjustments** ("Steuerliche Abweichungen": Verlustverrechnung, Abschreibungen, Verdecktes Eigenkapital), **Other** ("Sonstiges", Swiss companies: the Form 12 card, below), then **Further Details (not in the portal)**: legal form, capital per the commercial register, commercial register number, the result before taxes (input of the tax estimate only), the asset register and disposals. In the German UI every row carries the portal's own field name word for word, with the account number in brackets where one applies (e.g. "Gesetzliche Gewinnreserve (2950)"). The **Form 12** card (German "Bescheinigung über Bezüge von Mitgliedern der Verwaltung und Organen der Geschäftsführung", the portal page "Leistungen an Aktionäre, Gesellschafter und diesen nahestehenden Personen") answers the page's question "Were salary or expense payments made?" (Ja/Nein, from the year's salary bookings; expense allowances count too) and lists each recipient with the fields of the portal's "add person" dialog: first and last name, street and number, place of residence and the payments (Bezüge; the only field with a copy button) = the net salary from box 11 of the person's Lohnausweis, in whole francs as the certificate prints it, from the same totals as the salary report. Listed are everyone who sat on the board or in the management at any point of the year (roles under Settings → Persons) and every shareholder who drew a salary in it (the page covers shareholders; in a GmbH the partners manage by law unless the articles say otherwise). A member without linked salary data or without a salary in the year is listed with a note: enter other payments from the user's own records, or leave the person out when nothing was paid. Each person's Lohnausweis is an item of the Export Tax Files menu, and "Save all files" includes them. The **Verwaltungsorgane** card (governing bodies) fills the portal's four dialogs: chair of the board (Verwaltungsratspräsident/in), management (Geschäftsleitung), the person responsible for accounting and the auditor (Revisionsstelle), each with first and last name, street and number, postcode and town, e-mail and phone (copy buttons on e-mail and phone only). The portal carries these over from year to year, so the card shows the organs as they stand TODAY, from the roles under Settings → Persons: the chair is the board member whose role title names the chair ("Präsident des Verwaltungsrates"; for a GmbH, which has no board, "Vorsitzender der Geschäftsführung"), else a sole board member or a sole manager; the management lists the other managers; the accounting row is the accounting contact of Settings → Company (its e-mail and phone, the address of the person with that name); without an auditor role the card shows "Verzicht auf Revision" (audit waived). When the roles do not say who chairs, the card says to add it to the role's title. The Gewinnverwendung card shows the carry-forward from the prior year, the year's net profit or loss, their total, the **appropriation** the general meeting resolved on it (the fields of the portal's detail form: "Dividende, Gewinnanteile oder Anteilscheinzinsen" with its % of the paid-in capital and "Zuweisung an die gesetzlichen Reserven", read from the dividend resolutions on that year's profit in Reports → Compensation → Shareholders; without one, nothing is appropriated and the note says to record the dividend there, or to type an allocation without a dividend into the portal) and the carry-forward to the new account after it. The return is filed after the appropriation (ZH Wegleitung), so the **Capital** card (German "Kapital", the fields of the portal's "Eigenkapital Gesamt" dialog) takes the legal profit reserve including the resolved allocation and shows that carry-forward as "Gewinnvortrag", or, when it is a loss, as a positive "Verlustvortrag" the portal deducts, and the hidden equity; the portal carries all three over by itself. The card ends with **"Total Eigenkapital"**, added up as the portal does: paid-in capital plus reserves, minus own shares, plus hidden equity, plus the Gewinnvortrag or minus the Verlustvortrag (e.g. 40,000 + 326,123 hidden equity − 363,727 loss = 2,396); the note under that row also gives the equity per the balance sheet, without the hidden equity. The last row, **"Overall equity"** (German "Eigenkapital Gesamt", form 500 Ziffer 19), is the figure the portal shows on the card itself: the total equity, but at least the paid-in capital (here 40,000), which without a reduction under Form E is also the taxable capital. The **"Income statement extract"** card (German "Auszug aus der Erfolgsrechnung", the paper form 531) shows the portal dialog's lines in its order. The seven figures the user enters: revenue from deliveries and services (account groups 30 to 36, without the revenue reductions the chart keeps inside them, such as 3090 or 3609, and with own consumption 3710 to 3790), revenue reductions (group 38 plus those, as a positive amount), changes in inventories of finished and unfinished products (group 39, signed), other own work capitalised (3700 to 3709), other operating income (the income side of class 7: 7000 to 7009 and 7500 to 7509), material and goods expenses and third-party services (groups 40 to 49) and wages and salaries (the wage accounts of groups 50 to 56, without social insurance, other personnel expenses or third-party staff, which the card does not ask for). Between them sit the subtotals the portal calculates itself, as in its dialog: net revenue, production output, total output (100 %), gross profit 1 and **"Gross profit 2"** ("Bruttogewinn 2"), the last three with their percentage of total output. On the portal's card only Bruttogewinn 2 appears, with a pencil that opens the dialog. If the portal's gross profit 2 matches the report's, the seven were entered correctly. The card does not change the tax: the tax office derives key ratios such as gross margins from it for plausibility checks, while the taxable profit comes from the Reingewinn card and the capital from the Kapital card. A card with the portal's "Ich erfasse das Total und füge eine Liste bei" option shows those total fields first; a **"Show detailed entry"** toggle (German "Detaillierte Erfassung anzeigen") under them lists the fields of the portal's detailed entry. The Abschreibungen card's totals are "Abschreibung" (the booked depreciation, account group 68) and "Endbestand" (fixed-asset groups 150 to 170 at year-end), to enter with a list of the user's own (e.g. account statements); its detailed entry takes all fixed assets as one item, with the disposals ("Abgänge") being the credits to the fixed-asset accounts less the booked depreciation.

**E-Bilanz export (CH-Taxonomie XBRL / cantonal tax portals).** The Tax Declaration report's **"Export Tax Files" menu has an "E-Bilanz (XBRL)" item** that downloads the selected fiscal period's annual accounts — balance sheet, income statement and company data, with prior-year comparatives — as an XBRL file per the **CH-Taxonomie 2025** (the standard behind **eCH-0276 "E-Bilanz und E-Tax JP"**). It is meant for the **E-Bilanz import the cantons are building into their declaration portals**: Zurich has announced it for ZHcorporateTax, Obwalden and Appenzell Ausserrhoden already import E-Bilanz files; **as of October 2026 no portal has yet accepted a Zendrea file**, so until the user's canton takes it, the declaration is filled from the table below. There is **no direct submission API** — file upload is the only route. It serves **legal entities** (AG, GmbH, Genossenschaft, Verein, Stiftung); sole proprietors declare business results in their personal return instead. The company needs a valid **UID (or MWST number) in Settings → Company**, and the export refuses to produce a file when the period's ledger is not balanced. The data table below the button is the manual-entry companion for every canton whose import does not take the file yet. Every amount the user types into the portal has a small **copy button** next to it that puts the bare number on the clipboard (no currency, no thousands separator, e.g. -5746.85), ready to paste into a portal field; a triple-click on an amount also selects the number without the currency. Figures the portal calculates or carries over from another card by itself (its grey fields: the carry-forward to the new account in the profit appropriation card, in the Capital card the hidden equity, the profit or loss carried forward, the total equity and the overall equity, the income statement extract's subtotals, and the calculated fields of a detailed entry, such as the losses not yet offset or the closing balance of the depreciation dialog) have no button, nor do figures it has no field for ("Equity per the balance sheet", the "Further Details (not in the portal)" section). Typed text values the user could mistype unnoticed have the same button: the business-year dates, the purpose, the founding and registration dates, and every e-mail address and phone number (the organs' and the contact's); dates copy in the portal's format (dd.mm.yyyy) whatever the display language. Names and postal addresses have none (quicker to type than to copy, and easy to check by eye), nor do company name, UID, tax domicile and head office, which the portal takes from the tax register.

**Annual accounts PDF (Jahresrechnung incl. Anhang).** The Tax Declaration report's **"Export Tax Files" menu also has an "Annual accounts (PDF)" item** (hidden for cash-basis companies) that generates the **legal annual-accounts document** per OR 958: ONE PDF with cover page, **balance sheet and income statement with prior-year comparatives** (OR 958d), the **Anhang** (notes, OR 959c) and a signature block. Clicking the item opens a short **questionnaire** for the Anhang items the books don't contain — accounting-principles additions, the mandatory **full-time-positions band** (≤10/≤50/≤250/>250), and optional disclosures (leasing, pension-fund liabilities, pledged assets, contingent liabilities, post-balance-sheet events, participations, own shares, net release of hidden reserves) — saved **per fiscal year** and prefilled on the next run; empty items are omitted from the PDF. Balances with **shareholders and officers** (OR 959a Abs. 4: receivables and liabilities towards direct or indirect shareholders, the board, management and the auditor, and separately towards companies the firm holds a participation in, and group companies) are disclosed in the Anhang **automatically from the books**, one line per account with the prior-year figure; the chart accounts involved are the standard ones such as 2470 "Debts due to shareholder A (long-term)", 2150 (short-term), 1120/1160/1460 (receivables) and 2060/2160/2260/2480/2560. The questionnaire lists the balances it found and has a remarks field for terms (interest-free, subordination / Rangrücktritt) or for balances on other accounts, e.g. unpaid salary of a shareholder-manager. The loss carry-forward schedule is **not** part of this document: it has its own item, **"Loss carry-forward (PDF)"**, in the same menu (see the estimate paragraph below). The Jahresrechnung must be **signed** before uploading to the tax portal (OR 958 Abs. 3 — print and sign, or a qualified electronic signature); the built-in signature block names the signers entered in the questionnaire. This PDF is the human-readable companion of the XBRL export: the XBRL pre-fills the portal, the signed PDF is the legal attachment. In the balance sheet (report and PDF) the equity block follows the OR 959a lines: share capital (group 280), then the reserve group 290 split by block into statutory capital reserve (2900s), statutory profit reserve (2950s), voluntary profit reserves (2960s), own capital shares as a negative item (2965/2966) and profit/loss carried forward (2970s, incl. an imported 2979 balance), plus the year's result from the income statement — a loss as a NEGATIVE equity line, never on the assets side (that was the pre-2013 presentation), so total assets always equal total liabilities and equity without padding. The Tax Declaration report's Capital card shows the same lines in the portal's words, names the reserves from capital contributions (2903) under the capital reserve, and ends with the portal's "Total Eigenkapital", which adds the hidden equity.

**Which figure goes into the tax declaration (profit taxes are DEDUCTIBLE).** In Switzerland direct taxes (federal, cantonal and municipal profit and capital taxes) are a **deductible business expense** (Art. 59 Abs. 1 lit. a DBG, Art. 25 Abs. 1 lit. a StHG, § 65 Abs. 1 lit. a StG ZH; only tax fines are not) — the opposite of Germany, where corporate income tax is not deductible. So the corporate return's first line, **"Reingewinn bzw. Verlust (−)"**, is the income statement's result **AFTER taxes**: the Zurich guide (Wegleitung, Ziffer 1) says "Einzutragen ist der Reingewinn bzw. Verlust (nach Steuern) … gemäss Saldo der Erfolgsrechnung ohne Einbezug des Vortrages aus dem vorangegangenen Geschäftsjahr". In the Tax Declaration report that is the Reingewinn card's row **"Net profit or loss (-)"** (German UI: the portal's field name, "Reingewinn bzw. Verlust (-)"). **Never tell the user to enter the "Result before taxes" or to add booked taxes back**: that row, under Further Details (not in the portal), is only the input for the "Estimate Taxes" dialog, whose calculator works out and deducts the tax itself. The one tax add-back in the return is narrow — Zurich Ziffer 2.1.10: tax expense booked this year that was **already deducted in an earlier period** (e.g. last year's return claimed a tax provision that is only booked now). Taxes of an earlier year that are booked only this year (a common small-company practice: expense the tax bill when it arrives) are deductible this year unless they were already deducted before. Other cantons' forms use the same concept with their own item numbers.

**Hidden equity (verdecktes Eigenkapital).** When the books hold debts to shareholders (or to their close persons, the board, management or group companies), the Tax Declaration report's **"Tax Adjustments"** section (German UI "Steuerliche Abweichungen", after the portal's section of that name) shows a **"Hidden equity"** block with the two fields of the portal's card. **"Hidden equity"**: the part of those debts above what the assets could carry under **ESTV circular no. 6a** (book values at year-end: cash 100%, receivables 85%, loans 85%, participations 70%, movable fixed assets 50%, and so on; where the circular has two rates, such as for securities or real estate, the lower one), capped at the shareholder debt. It counts as **taxable equity** (Zurich Wegleitung, Ziffer 15). **"Interest on hidden equity"** (Zins auf verdecktem Eigenkapital): of the interest booked on those debts (accounts 6920–6924), the part above the **allowed interest** ("zulässige Zinsbelastung") that the recognised debt, the shareholder debt minus the hidden equity, may carry at the ESTV's maximum rates for operating loans of trading and manufacturing companies (yearly circular "Steuerlich anerkannte Zinssätze": 2025 3.5% up to CHF 1 million and 1.75% on the part above, 2026 3.5% and 1.5%; pro rata for a period other than 12 months; a year not yet in Zendrea's table uses the latest one, and the report says so). Holding and asset-management companies and loans on property have lower or other rates. That interest is not deductible (circular 6a, section 3.1: only the rest is added back) and is a hidden profit distribution subject to 35% withholding tax; an interest-free or below-market loan therefore adds nothing. In Zurich both figures go into **Steuerliche Abweichungen → Verdecktes Eigenkapital**. With **"Ich erfasse das Total und füge eine Liste bei"** the user types both amounts and uploads the PDF from **"Export Tax Files" → "Hidden equity (PDF)"** (German UI "Steuerunterlagen exportieren" → "Verdecktes Eigenkapital (PDF)"): the calculation addressed to the tax office, with the assets per class, rate and allowed debt, the debts with the shareholder accounts named, the hidden equity and the interest. With **"Ich mache eine detaillierte Erfassung"** the portal computes both itself; a **"Show detailed entry"** toggle under the rows lists the fields of the portal's two dialogs in their order and words, with a copy button on each one the user types (the portal calculates the others): "Berechnung Verdecktes Eigenkapital" (Total Bewertung Aktiven, with the assets per class behind it, Total ausgewiesene Aktiven, Fremdkapital von unabhängigen Dritten, KK Aktionär / Fremdkapital nahestehender Personen with the accounts named, Verdecktes Eigenkapital (max. KK Aktionär)) and "Zins auf verdecktem Eigenkapital" (darauf verbuchter Zins, davon als Fremdkapital anerkannt, Zulässige Zinsbelastung in % and CHF, Zinsen auf verdecktem Eigenkapital). Without hidden equity, booked interest above the allowance does not go into this card: it is a hidden profit distribution declared under Reingewinn, Aufrechnungen (Ziffer 2.1.5), and the calculation names it. An interest-free shareholder loan above the limit changes no profit; with negative equity the capital tax base usually stays at the paid-in capital minimum anyway. The "Estimate Taxes" dialog includes the hidden equity in its taxable capital, like the Capital card's "Total Eigenkapital", and the interest on it in its profit.

**Estimated taxes (official ESTV calculator).** The Tax Declaration report also has an **"Estimate Taxes" button** (top-right) that opens a dialog estimating the period's **profit and capital taxes** via the official **ESTV tax calculator** (swisstaxcalculator.estv.admin.ch — the user's figures are sent there for the calculation, which needs an internet connection). The dialog prefills profit before taxes (net result plus booked direct taxes, plus any interest on hidden equity, which a hint under the field names), taxable capital (the booked equity plus any hidden equity, see above; a hint under the field names the hidden part) and share capital from the ledger, and detects the **tax municipality** from the company profile (postal code / registered office; any Swiss municipality can be picked or searched). All inputs are editable before calculating. The result shows federal, cantonal and municipal (incl. church) profit tax, capital tax, the total and the effective rate, plus which year's multipliers were applied. It is a **non-binding estimate** for ordinarily taxed companies (AG, GmbH, cooperative) assuming a 12-month year; in a loss year the profit taxes are zero but **capital tax is still due**. If the company carries **losses forward** from earlier years (Verlustvortrag), the user enters each prior year's taxable result in the **"Prior-year results (loss carry-forward)" table on the Opening Balances panel** (Settings → Opening Balances); the dialog then prefills the deductible carry-forward (the manual pre-Zendrea years plus any losses in the company's own tracked periods — the same figure as the schedule below) — profit years reduce it, losses expire after the 7-year window — and subtracts it from taxable profit (editable, shown as a separate "Loss carry-forward applied" field). Nothing is booked or stored — to book a provision the user records it manually (account 8900). The Tax Declaration report itself also shows a read-only **loss carry-forward schedule** for the selected period (only when there are prior losses), in the **Verlustverrechnung** card of its **"Tax Adjustments"** section (German UI "Steuerliche Abweichungen"): the card's row **"Loss offset, canton"** (German "Verlustverrechnung Kanton", the portal's field) holds the total still available to offset, and its "Show detailed entry" toggle lists, oldest first as the portal's dialog does, each of the up to 7 preceding business years ("Geschäftsjahr") with its result after taxes ("Verlust (-) / Gewinn (+)", the declared "Reingewinn bzw. Verlust") and the part of that year's loss not yet offset ("Noch nicht verrechnete Verluste", oldest loss used first; these add up to the total) — years before Zendrea taken from that same Opening Balances table, tracked years the net result from the bookkeeping. The portal does not read those figures from the XBRL/E-Bilanz upload. **"Export Tax Files" → "Loss carry-forward (PDF)"** (German UI "Steuerunterlagen exportieren" → "Verlustverrechnung (PDF)") opens the schedule as its own PDF addressed to the tax office: company, UID, period, each year with its result and its losses not yet offset, and the total. In the Zurich portal ZHcorporateTax the loss offset sits under **"Steuerliche Abweichungen" → "Verlustverrechnung"**, with two options. **"Ich erfasse das Total und füge eine Liste bei"**: type the schedule's total into **"Verlustverrechnung Kanton"** (the portal copies it to "Verlustverrechnung Bund") **as a negative number** (the form takes losses with a minus sign and resets a positive total to zero; the report and the PDF already show it negative, and the copy button copies the sign) covering all prior-year losses not yet offset, not just the part this year's profit uses up, and upload that PDF in the portal's "Verlustverrechnung" upload slot. **"Ich mache eine detaillierte Erfassung"**: type each year's result into the portal's own table (losses with a minus sign, profit years too, without gaps from the first loss year); the portal then works out the remaining losses itself and needs no attachment.

**Capitalization threshold (low-value assets).** Switzerland has no statutory threshold, but the widely-used practice floor (Aktivierungsgrenze) is around **CHF 1,000**. Acquisitions below it are expensed directly (Sofortabschreibung / materiality) rather than capitalized and depreciated — book them via the expense form to a small-equipment / low-value account such as **6574 "Small investments"** (or another fitting expense account; manual "[Custom]" mode when no preset fits). At or above ~CHF 1,000, treat it as a fixed asset. It is a convention, not a hard rule — a company's own policy may set a different floor.

**Payroll routing.** For salary/payroll bookings (with AHV/BVG social contributions), use the dedicated salary form — not the expense or others form.

**What a salary needs, and what it does not.** Payroll works the same for every legal form. A salary is refused only when the AHV office record of its year or its two rates are missing (see "AHV contribution rates" below), when the chart lacks the AHV or BVG accounts (every new company has them), or when it has a monthly salary, hourly wage or vacation pay line and the employee has no BVG entry valid on its date. An employee **not insured in the BVG** (a yearly salary below the BVG entry threshold, a contract of three months or less, or already insured through a main job elsewhere) gets a BVG entry of **CHF 0** for both amounts from the start of employment: the salaries then book no BVG and the BVG tab's dot goes. **UVG and KTG contracts are not required**: without one, salaries book no accident or sickness insurance lines, and the UVG settings tab shows a dot. KTG is optional, but UVG is **compulsory for every employer with employees** (Suva for the industries the law assigns to it, a private insurer otherwise): suggest entering the contract under Settings → Social Insurance → UVG; salaries booked before it pick up their premiums when they are edited and saved again. Viewing a booked salary shows the figures it booked; when today's settings give other figures for it (a rate corrected or a contract entered after booking), the dialog names the parts that differ in red while its period is open: editing and saving the salary rebooks it with them, and a salary paid with a separate payment needs that payment deleted first and booked again afterwards. When the salary was already paid, the dialog adds that a correction payment might be required: if the rebooking changes the employee's net pay, the difference is still to be settled with the employee. In a **sole proprietorship** (Einzelunternehmen) the owner is self-employed, never an employee of the business: the owner gets no salary through the salary form, what the owner takes out is a private withdrawal (Others, Dr **2850** Privatkonto / Cr the bank), and the compensation office bills the owner's own AHV as a self-employed person on the business profit, outside payroll; UVG is voluntary for the owner. The company's employees are booked like any other employer's.

**AHV quarter attribution.** In the AHV quarters of the Social Insurance report (AHV / FAK tab), manual bookings that debit the AHV payable account (2270) without the app's settlement link (e.g. a double payment booked as a manual entry) count as payments toward the **oldest quarter still owed** of the same year, regardless of booking date — an over-payment shows as negative payable (a credit with the fund) on the next open quarter, which stays payable. The compensation office's **Akonto bill** is kept with the AHV **for its quarter** as the quarter's receipt, not tied to the payment booking (see "Insurance receipts" below), so it can be attached via the row's paperclip as soon as the office posts it, before the payment is booked. It survives deleting or re-booking the payment, and attaching it completes the quarter's "Get the AHV receipt" deadline item. The app reads the bill's **amount to pay** (its QR payment part, checked against the bill's "Total zu unseren Gunsten" line): when a quarter's bill is attached, the pay dialog **pre-fills the office's amount** and shows it next to the amount **calculated from the books**. The payment books **what is paid**, Dr 2270 / Cr the money account, **never a difference line**: a gap between the bill and the books stays on the AHV account (the dialog says so) until the year is settled (see "Settling the social insurance year" below). The gap may be cents of rounding, a credit the office nets into the bill (e.g. the redistributed CO2 levy, "Rückverteilung CO2-Abgabe") or a real difference such as an employee reported late, which the office bills later; only the year's end can tell them apart. The payment file (pain.001) and the Deadlines panel use the same amount. Without an attached bill (or for a photo of it) the dialog pre-fills the amount from the books. The dialog also shows the **due date** — the bill's "Zahlungseingang bis", else 10 days after the quarter — and pre-fills the **payment date** with it (a due date on a weekend: the Friday before; once overdue: today). A **paid quarter is done**: its pay button turns into a **view button** (greyed arrow with a small eye) that opens the booked payment **read-only**; what is left on it waits for the year's settlement. Payments booked before this rule may carry a difference line to 6900/6950; they stay as booked.

**AHV contribution rates — who maintains what.** The federally uniform values (AHV/IV/EO 10.6%, ALV 2.2%, ALV monthly cap CHF 12'350) are maintained by Zendrea centrally per contribution year and shown READ-ONLY in Settings → Social Insurance → AHV / FAK — the user never enters or updates them, and questions about "new year's rates" need no user action. The TWO values the user must enter are company-specific facts from their own Ausgleichskasse (compensation office): the FAK (family allowances) percentage and the administration-cost percentage (legally capped at 5% of the AHV contribution). They come from the kasse's statements/Beitragsverfügung — NEVER guess or suggest values for them. On a new company they start EMPTY, and the first salary booking is blocked until both are entered ("complete your compensation office settings"); route the user to Settings → Social Insurance → AHV / FAK → edit the fund. The fund has one record per calendar year, because the office's rates and its settlement run per calendar year whatever the company's fiscal year: a salary always uses the record of its booking date's year, and a salary of a year without a record is refused ("no AHV office record for {year}") instead of using the previous year's rates; the fix is a new record for that year, which the New button prefills with the office's name and numbers from the latest year, the two rates left empty for the office's new notice. The books health check also nudges when salary bookings exist but the kasse rates were never confirmed. In **Valais** only, employees pay a share of the FAK too (2026: 0.13%), entered on the same fund as "FAK employee share"; leave it empty in every other canton.

**Contribution rules the salary booking applies by itself**, from the employee's record (Settings → Persons) and the employee's earlier salaries of the calendar year; the booking dialog's preview explains each one in a note:
- **Young employees:** no AHV/IV/EO, ALV or FAK until 31 December of the year of their 17th birthday.
- **Past the AHV reference age** (65; women born 1960 or earlier 64, born 1961, 1962 or 1963 64 plus 3, 6 or 9 months, which is the only use of the sex field): from the month after it, AHV/IV/EO and FAK only on the salary above CHF 1,400 per month employed, counted over the year (a month below 1,400 leaves its unused part to later months), and no ALV. The employee can waive the allowance (a checkbox in the employee record; it applies to whole calendar years).
- **Small salaries:** up to CHF 2,500 a year from this employer (2,300 until 2024) owe no contributions unless the employee asks for them (a checkbox, also to be ticked by private households and the culture sector, where they are always due). Once the year's salary passes the limit, the earlier months are caught up in that salary.
- **ALV maximum:** CHF 148,200 a year, pro rata for the days employed, counted over the year so far: a bonus after months below the monthly CHF 12,350 is charged in full, so no year-end correction is needed.
The Lohnausweis prints the employee's AHV/IV/EO, ALV and NBU in box 9, the BVG in box 10.1, and names in box 15 the employee's KTG premium and, in Valais, the employee's FAK share.

**Insurance receipts (AHV / FAK, UVG, KTG and BVG tabs of the Social Insurance report).** The bills the compensation office, the insurers and the pension fund send are incoming documents, so the app calls them **receipts** like an expense's receipt (Beleg, justificatif, giustificativo); "invoice" is only for the invoices the company sends. Users may say invoice, bill or Rechnung for them: answer with the app's word. Every insurance's receipts are kept with that insurance for the period they settle: the AHV office's per quarter, the accident and daily sickness insurers' and the pension fund's per year, and the receipt of the year's **correction bill** on the correction row (see "Settling the social insurance year"). Every row, the AHV quarter, the UVG, KTG or BVG year and the correction row, takes **one receipt and one payment**. Once its payment is booked (with or without a receipt), the pay button greys out with an **eye** that opens the booked payment read-only, and a second payment is refused ("This year is paid…", "This quarter is paid…"); what is left goes with the year's correction row or clearing. **Instalments** are not supported on the rows yet: when a fund or insurer bills in instalments, the first is paid on the row and a later one is booked by hand within the year (Others: Dr the insurance's payable / Cr bank; the row counts it by its date, so one paid after the year's end would not count for it), with its bill attached to that booking. The **paperclip** on a report row ("Attach the receipt") attaches it, **before or after paying** (PDF or photo, free, desktop too). While the receipt is unpaid, the paperclip offers to **replace** it (a corrected bill) or **delete** it. Once a booking carries it, it stays with its payment and the paperclip is locked (the tooltip says why). A PDF is read at once, without AI: the QR payment part's amount (for the AHV checked against the bill's "Total zu unseren Gunsten"), the due date, the payee with its IBAN and QR reference; the payee also becomes the receipt's insurer. The same file twice is refused. The row's eye (column "Receipt") shows the row's receipt with what it asks and whether it is **paid or open**. A receipt is **paid** while a booking carries it: the **pay button** starts from the open receipt (its amount when it asks for money, its due date as the payment date, both shown next to the books' figure, and its file name) and booking the payment attaches that receipt to the payment (the same file; the journal shows it on the payment); a receipt attached after its payment was booked goes to that payment if it has none yet (with several such payments booked by hand, the one that paid the amount the receipt asks, else the oldest). Deleting the payment makes the receipt open again; a paid receipt cannot be deleted. Bills attached to payments before receipts were kept per insurance were moved onto their rows once (one per period, on payments the app booked or with its Belegnummer); others still show through their payment. The payment file (pain.001) takes an unpaid AHV quarter's or BVG year's payee from its receipt and the amount it asks (else the books' figure), and offers an open AHV or BVG correction bill; a paid period never.

**Settling the social insurance year (correction row, clearing, reminder).** Each tab of the Social Insurance report ends with a **correction row** and a **Total row** (contributions posted, paid, what is left). Payments only pay, so what the office or insurer billed and what the salaries booked can differ during the year; the year's end settles it. (1) When the office or insurer sends a **correction bill** for the year (the AHV office's annual statement after the wage declaration, a corrected premium statement, a credit), it is attached on the **correction row** and paid there, or a credit **received** there (the arrow turns inward), once: after that the row's button shows the booking (eye), with the year's own reference (social:payment:correction:<year> / social:refund:correction:<year>, Belegnummer SOC-COR-<year>-<date>; BVG-, UVG-, KTG- alike), so a correction paid in March counts for the year it corrects. (2) Once the year is over, every quarter or year row is paid and no correction bill is open, whatever the Total row still shows can be **cleared against P&L** with the Total row's button (a scale): one entry, on the year's **last day** (or on the day of booking when the year's period is marked closed), a positive balance (the books expected more than was billed) Dr payable / Cr **6950**, a negative one (paid more than booked) Dr **6900** / Cr payable, each falling back to the insurance's expense account; nothing to choose, the server takes the amount from the report, Belegnummer SOC-CLR-<year>-<date>. The clearing then shows as its own row and the totals balance; the ledger lists it as closing work. If the correction bill differs from what the year shows, the rest is cleared the same way afterwards. **Never** clear a balance that a correction bill will still collect (an employee reported late): pay the bill on the correction row first. (3) A **reminder** in the Deadlines panel appears under the same conditions while something is left ("Settle the 2026 AHV year…"), due six months after the year's end (30 June), and goes when the balance is zero. A correction booked through **Others** instead of the correction row leaves the year's totals unbalanced, so steer the user to the row.

**Accident and sickness insurance (UVG, KTG).** The settings button **"Social Insurance"** opens four tabs in a row at the top of the panel: **AHV / FAK** (the Ausgleichskasse fund), **UVG** (accident insurance), **KTG** (daily sickness insurance, optional) and **BVG** (the pension fund and the contributions per employee); the Reports have a **Social Insurance** tab with the same four tabs. Each settings tab has a status line for the selected year, and a dot on the tab marks a gap: AHV / FAK when the year's fund record or its two rates are missing (salaries are refused until then), UVG when days of the year with accident-insured employees have no contract (salaries on those days carry no UVG, though UVG is compulsory), BVG when an employee has no contributions valid on the first salary date of the year (salaries refused); KTG is optional and only informs. On the report side a dot marks a tab with a due or overdue reminder. UVG and KTG are separate insurances, each with its own contracts and the rates from the company's own policies: a contract is **valid from** a date and runs on until a later contract of the same insurance starts (saving the later one ends the earlier one the day before) or until an optional **valid until** date. A rate change or a new insurer is a new contract from its date, never a yearly copy, and a salary uses the contracts valid on its booking date. The UVG contract holds BU (occupational accidents, always the employer's) and NBU (non-occupational accidents, deducted from the salary unless the company takes over a share); the KTG contract its rate (usually split half and half). A contract can also hold the insurer's swissdec number, the customer number and the policy number with its sub-number, as printed on the policy or the ELM profile. Rates are entered in percent (a rate stated per mille is divided by 10); NEVER guess them. Each insurance's contract dialog handles its documents like an expense's receipt: the paperclip attaches the policy, the insurer's ELM insurance profile or a premium notice (PDF or photo, free) and keeps it under that insurance from the contract's start when saved, next to the documents attached before (a change of insurer or conditions stays traceable; a combined UVG and KTG policy is attached on both tabs); the eye opens it, also on the contract's row in the list. **"Auto-fill from document"** (star badge, Premium; web app only) reads that one insurance with AI: the UVG dialog fills insurer, BU and NBU, the KTG dialog insurer and rate, and both fill the start date and the policy number while still empty; the end date stays open, because policies usually renew themselves; per-mille rates become percent, each rate must sit on a printed line of the document that names its insurance and is not a cost component, it is checked against the premium the document computes on its wage sum, and a rate that fails a check or differs by sex (KTG) is left empty and named. The employees' shares are never read; they stay as set. The user checks the values and saves. The insurer's free ELM profile (Versicherungsprofil, ordered from the insurer) is the best document to upload: one page with the customer and contract numbers, the person groups and the gross rates. Each employee record (Settings → Persons) says what is covered: both kinds of accident (default), occupational accidents only (under 8 hours a week: no NBU), or not insured; and whether the KTG applies. Salaries then deduct the employees' shares and book them: employee NBU Dr salary expense / Cr **2273**, employee KTG Dr salary expense / Cr **2274**, the employer's part Dr **5730** / Cr 2273 and Dr **5740** / Cr 2274. The accident premiums count each salary up to the yearly maximum (CHF 148,200, the same as for ALV), counted over the year; KTG applies to the whole salary. The **Social Insurance** report (Reports) shows, on its **UVG** and **KTG** tabs, the insurance's row for the year (premiums booked, paid, owed; a year with two insurers names both) with a pay button for the insurer's bill of the year (one payment per year; once booked, the button shows it): it books Dr 2273 or 2274 / Cr the chosen money account, tied to the year by its reference, so an advance paid in December still counts for its own year; the insurer's bill is kept on the year's row as its receipt, before or after paying (see "Insurance receipts"), and the insurer's final premium statement goes on the tab's **correction row**, with the Total row clearing what is left, e.g. the gap between a minimum premium and the premiums the salaries booked (see "Settling the social insurance year"). These bills are never an expense once salaries carry the premiums: booking one on 5730, 5740 or any other expense account counts the premium twice. On a date without a contract, salaries carry no premiums: the user enters the contract first, and a salary booked before it existed picks up its premiums when it is edited and saved again. Only a company that books no salaries in the app records the insurer's bill as an expense (manual "[Custom]" mode, 5730 or 5740). The **year-end wage lists** per employee serve the January declarations: on the report's AHV / FAK tab for the AHV office (by 30 January) the AHV, ALV and FAK wages, with an **"Export for AHVeasy"** button that writes the file for the CSV import of the AHVeasy portal (run by SVA Zürich and other compensation offices: Lohndeklaration → CSV-Import der Lohndaten), in the portal template's 18 columns, so the employees need not be typed in; the user still checks and submits the declaration in the portal. That file also needs, per employee (Settings → Persons): first and last name, address with postal code and an ISO country, date of birth, sex, **nationality**, employment start date and **employment level (%)**; the report lists the employees still missing something. The layout follows the template AHV Liechtenstein publishes for the same portal; SVA Zürich's own template appears only when the year's declaration opens on 1 December. On the UVG tab, for the accident insurer (Suva by 31 January), the list shows the UVG and NBU insured salaries with the swissdec UVG code (A1 both kinds of accident with the NBU deducted, A2 without the deduction, A3 occupational accidents only, A0 not insured); on the KTG tab the KTG insured salaries for the sickness insurer. On the **BVG** tab, below the year, **"Contributions per employee"** lists per person only what the salaries booked for the BVG: the pension fund sets its amounts itself and settles on no wages, so the list is for checking the fund's yearly statement person by person. All four lists share one layout: the employee, the AHV number, the employment inside the year, the wages declared to that insurance (none for the BVG), then the **employee share** and the **employer share** the salaries booked for it (AHV / FAK: AHV/IV/EO and ALV, the employer's with the FAK and the administration costs). The UVG, KTG and BVG lists export as a plain CSV of what the table shows. Rows marked * include salaries read back from the journal, whose bases are estimated (their shares are the journal's own). On a date without a contract, salaries carry no insurance lines, as before.
