Skip to content

Close the year

A fiscal year is closed when the books stop moving: every VAT period settled, every bank balance tied to a statement, the year's FX difference and depreciation booked. quints close check is that list, computed from your ledger. The rest of the commands here print the entries it asks for — for you to review and paste, never written for you.

Applies if

  • Legal form: Einzelfirma, GmbH or AG. The checklist is the same for all three.1
  • VAT status: any.
    • Not registered: the VAT item passes.
    • Registered: it expects one settlement per filing period of the year (quarters, half-years or the whole year, whichever applied that year), from the registration date to its end.
  • Fiscal year: the calendar year, like the books (one file per year). A GmbH's or AG's first year may run longer: see An extended first year.

The order of operations

quints close check --year 2026
quints fx revalue --at 2026-12-31
quints close depreciation --year 2026
quints report statements --year 2026

The steps:

  1. Refresh the rates. quints prices sync needs the network, so it isn't in the block above (FX rates).
  2. Check. quints close check lists what is still open.
  3. Book what the check asks for. The other commands print the entries.
  4. Check again, until nothing fails.
  5. Hand the PDF to your Treuhänder (Statutory reports).
  6. Archive the closed year (below).

A registered business also runs quints vat liability --at 2026-12-31 at the year end. If turnover stayed below the threshold, it says whether you may deregister and by when (Register, switch method, deregister).

An extended first year

A GmbH or AG may skip the closing in the calendar year it was founded. Its first fiscal year then runs on to the end of the next calendar year at the latest: founded 4 July 2025, first closing 31 December 2026.4 Zürich asks you to report the extension to the Kantonales Steueramt; check what your canton asks.6 An Einzelfirma can't extend: it closes every calendar year.5

quints close check --year 2025
quints close check --year 2026
quints close depreciation --year 2026
quints report statements --year 2026 --from 2025-07-04
  1. Check both calendar years. close check works per calendar year, so the founding year's VAT periods, flagged entries and missing documents only show up under --year 2025. Its year-end items (fx, prices, depreciation, receivables) don't apply to 2025: nothing closes on 31 December 2025.
  2. Depreciate once, for 2026. Don't run close depreciation --year 2025. The 2026 run charges one year's depreciation, 2025 purchases included. Whether the longer first year allows more is for you and your Treuhänder to decide.
  3. Report from the founding date. With --from, both statements cover 4 July 2025 to 31 December 2026, and none of it is Gewinnvortrag. report bilanz and report erfolg take the same dates:

    quints report bilanz --at 2026-12-31 --from 2025-07-04
    quints report erfolg --from 2025-07-04 --to 2026-12-31
    
  4. From 2027 on, drop --from. The fiscal year is the calendar year again, and the first year's result is Gewinnvortrag.

The checklist

quints close check --year 2026

Every item comes back pass, warn or fail, with the specifics — counts, account names, dates — and the command that fixes it.

Item Passes when
ledger the ledger loads and every account of the entity (:CH:GmbH:, :CH:Einzelfirma:, …) carries a valid kmu: code
vat every VAT period of the year is settled and paid (filed but unpaid: warn); not registered: pass
flagged no !-flagged transaction is left in the year
staging no importer drafts are waiting in staging/
inbox inbox/ holds no unfiled document
documents every income/expense transaction links a document:
assertions every bank account has a balance assertion dated 1 January or later
fx the year-end revaluation is booked — no unrealized FX left
prices a rate dated 31 December exists for every foreign currency held
depreciation the year's write-down is booked on every asset that has a rate
receivables nothing has been open longer than receivable_review_days

A fail must be booked or fixed before the numbers are final. A warn is a judgement call quints will not make for you: an old receivable may deserve a Delkredere or a write-off, a missing document may simply not exist.

Two details worth knowing:

  • Balance assertions are read at the start of their date. An assertion dated 2026-12-31 verifies the balance before that day's bookings, so only 2027-01-01 balance … ties the year end to your December statement. That is the date the check looks for, and the date the generated entries below use.
  • Generated entries are exempt from documents. A VAT settlement or its payment (recognised by the ^VAT-… link), the FX revaluation (its only income/expense legs are the configured gain/loss, rounding and depreciation accounts) and the depreciation entry (its depreciation_year: marker) are quints' own output — there is no supplier PDF behind them.

The command reports and exits 0: a year mid-close is the normal case, and the example project shipped with quints is exactly that — VAT still to settle, no year-end assertions yet. Add --strict to exit 1 while any item fails, which is what a CI job or an agent loop should gate on. --json returns the same items with ok, failed and warned counters.

Depreciation

quints close depreciation --year 2026

Prints the year's depreciation entry2 to paste into books/2026.bean, with a balance assertion per asset. Run it again after booking and it prints nothing: the generated transaction carries depreciation_year: "2026", which is how quints knows the charge is already in the books.

The metadata is the source of truth

Rates and methods live on the fixed-asset open directive in accounts.bean, never in a spreadsheet:

2026-01-01 open Assets:CH:GmbH:FixedAssets:Equipment CHF
  kmu: "1520"                          ; Büromaschinen, Informatik
  depreciation: "declining"            ; or "linear"
  depreciation_rate: "40"              ; percent
  depreciation_category: "it-equipment"
  residual: "1"                        ; the pro-memoria franc
Key Meaning
depreciation: declining (rate on book value) or linear (rate on cost) — required
depreciation_rate: the rate in percent
useful_life_years: linear alternative to a rate: the charge is cost / years
residual: book value the asset never falls below — "1" is the Swiss pro-memoria franc
depreciation_category: an ESTV Merkblatt A/1995 category, for the maximum-rate check
depreciation_account: override the expense account for this asset
depreciation_contra: book indirectly against this Wertberichtigung account

Declining balance applies the rate to the book value carried into the year plus the year's own purchases; linear applies it to historical cost. Both stop at residual:. An asset bought during the year gets a full year of depreciation — the Swiss small-business default — unless you set prorata = "months" in quints.toml, which counts from the month of acquisition.

Maximum rates: ESTV Merkblatt A/1995

depreciation_category: is checked against the Normalsätze of the ESTV's Merkblatt A/1995.3 The rates are percentages of book value; the Merkblatt's footnote 3 halves them when you depreciate from the Anschaffungswert, which is what linear does here.

Category Max (declining) Merkblatt heading
buildings-commercial 4% Geschäftshäuser, Büro- und Bankgebäude
buildings-industrial 8% Fabrik-, Lagergebäude, gewerbliche Bauten
furniture 25% Geschäftsmobiliar, Werkstatt- und Lagereinrichtungen
machines 30% Apparate und Maschinen zu Produktionszwecken
vehicles 40% Motorfahrzeuge aller Art
office-machines 40% Büromaschinen
it-equipment 40% Datenverarbeitungsanlagen (Hardware und Software)
intangibles 40% Immaterielle Werte; Goodwill
tools 45% Werkzeuge, Werkgeschirr, Geräte, Paletten

The full table (buildings with and without land, tanks, rail sidings, hotel supplies, …) is in quints.closing.MERKBLATT_A1995. A rate above the ceiling is a warning, not a refusal: it is legal bookkeeping, but the excess needs a reason your Steuerverwaltung accepts.

Direct or indirect

By default the charge writes the asset down (direct). Set a depreciation_contra: account on the asset — a Wertberichtigung account from the KMU Kontenrahmen (1509, 1519, 1529, 1539, …) — to book indirectly instead: cost stays visible on the asset, the accumulated depreciation sits next to it, and both roll up to the same Bilanz row (Sachanlagen, KMU 1500–1699). method = "indirect" in quints.toml makes it the default and makes quints warn about any asset that has no contra account.

Keep the books for ten years

The ledger, the documents it links and the statements are your business records. Keep them for ten years after the end of the fiscal year.7 VAT records stay until the tax claim expires, which is ten years after the period ends. Records about real estate take longer.8 They have to stay complete, unaltered and readable for the whole period.9

A quints project is plain text in git, so every change shows up in the history, but anyone with access can rewrite that history. Once the year is closed, fix its state in place:

git add -A && git commit -m "Close fiscal year 2026"
git tag -s fy-2026 -m "Fiscal year 2026, closed"
git archive --format=tar.gz -o books-2026.tar.gz fy-2026
shasum -a 256 books-2026.tar.gz > books-2026.tar.gz.sha256
  1. Commit everything: books, documents/, the statements PDF.
  2. Sign a tag for the closed year. A signed tag is verifiable, and moving it later shows. Its date, though, is whatever the signer's clock said.
  3. Archive the tagged state and its checksum to storage you don't edit day to day, which records when it was stored: a bucket with write-once retention, or a timestamp from a trusted timestamping service on the checksum. Integrity alone isn't enough on modifiable media. The time of storage has to be provable too.9
  4. Write down how the books are kept: who books, who reviews, where the archive lives. The scaffolded AGENTS.md describes the booking procedure and is a starting point.10

Invoices and statements are PDF/A-2a, the archival PDF format, so they render the same in ten years.

Configuration

[close]
depreciation_account = "Expenses:CH:GmbH:Depreciation"   # KMU 6800
method = "direct"                   # or "indirect"
prorata = "full"                    # or "months" in the year of acquisition
receivable_review_days = 90         # open longer at year end → Delkredere review

What quints doesn't do here

  • Book, or file. Every entry is printed for you to review and paste.
  • Close the P&L into equity, or appropriate the profit (the dividend decision of a GmbH/AG, the owner's share of an Einzelfirma).
  • Judgements: tax provisions, Delkredere percentages, and whether to depreciate less than the maximum. Those are yours, or your Treuhänder's. quints computes what follows from the books and the published rates, and says so.
  • A fiscal year that isn't the calendar year, other than an extended first one. Even then, close check and close depreciation work per calendar year (An extended first year).

  1. Bookkeeping and financial-reporting duty: Art. 957 ff. OR, SR 220. An Einzelunternehmen below CHF 500'000 turnover may keep simplified accounts (Art. 957 Abs. 2); quints keeps full double-entry books either way. ↩

  2. Art. 960a OR, fedlex. ↩

  3. Merkblatt A/1995 — Abschreibungen auf dem Anlagevermögen geschäftlicher Betriebe; legal basis Art. 27 Abs. 2 Bst. a, 28 and 62 DBG (SR 642.11). The table lives in quints.closing.MERKBLATT_A1995. ↩

  4. Art. 79 Abs. 3 DBG, SR 642.11: "In jedem Kalenderjahr, ausgenommen im Gründungsjahr, muss ein Geschäftsabschluss mit Bilanz und Erfolgsrechnung erstellt werden." The year after the founding needs a closing, so the first fiscal year ends by 31 December of that year. ↩

  5. Art. 41 Abs. 3 DBG, SR 642.11: a closing "in jeder Steuerperiode"; for a natural person the tax period is the calendar year (Art. 40 Abs. 1). ↩

  6. Kantonales Steueramt Zürich, Steuererklärung juristische Personen, section Steuererklärung im Gründungsjahr: an extended fiscal year "bis maximal 31. Dezember des Folgejahres", to be reported to the Kantonales Steueramt. ↩

  7. Art. 958f Abs. 1 OR: "Die Geschäftsbücher und die Buchungsbelege sowie der Geschäftsbericht und der Revisionsbericht sind während zehn Jahren aufzubewahren. Die Aufbewahrungsfrist beginnt mit dem Ablauf des Geschäftsjahres." fedlex. ↩

  8. Art. 70 Abs. 2 MWSTG (until the absolute limitation period of the tax claim, Art. 42 Abs. 6: ten years after the end of the tax period) and Art. 70 Abs. 3 MWSTG (the longer period for records on real estate, for Einlageentsteuerung and Eigenverbrauch). fedlex. ↩

  9. Geschäftsbücherverordnung (GeBüV), SR 221.431: Art. 3 (integrity: records can't be changed without the change showing), Art. 9 Abs. 1 Bst. b (modifiable media are allowed when a technical procedure such as a digital signature protects integrity, and the time of storage is provable beyond falsification, such as by a timestamp, and the procedure is documented), Art. 10 (records stay readable: migrate them when formats or media age). ↩↩

  10. Art. 4 GeBüV: organisation, responsibilities, processes and the infrastructure of the bookkeeping are documented so the records can be understood. fedlex. ↩