---
title: "Delete Gl Fiscal Year"
method: DELETE
path: "/companies/{company_id}/gl/fiscal-years/{fiscal_year_id}"
tags: ["gl"]
---

# Delete Gl Fiscal Year

`DELETE /companies/{company_id}/gl/fiscal-years/{fiscal_year_id}`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/companies/{company_id}/gl/fiscal-years/{fiscal_year_id}`
- Auth: none declared

Delete an **empty, unsealed** fiscal year and its scaffolding (accountant).

ZCT-510, approved by the owner ruling of 2026-09-03 alongside the refusal that stops such
years being opened by accident. Coding one document could open a whole fiscal year as a
side effect, and until this route existed nothing on the fiscal-year surface could remove
the result — the residue simply stayed in the company's calendar and in every year picker.

**Refused unless the year has zero journal entries and is not sealed**, and that gate is
what keeps Swiss retention rules out of scope: a year carrying any posting is untouchable.
Deleting also refuses on any other FY-scoped bookkeeping record (period balances,
provisions, dividend resolutions, fixed-asset activations, journal lines whose account
belongs to the year), naming which one blocked. The year's **seal/unseal history** does
not block (ZCT-807): a year that was sealed and then unsealed is deletable once it is
empty, and that history is kept rather than deleted with it.

What it removes with the year is only what serves the year: its chart of accounts, its
VAT/opening-balance settings, its periods and its sequence counters. 404 for an unknown or
cross-tenant year; 409 for every refusal above.

``MsgResponse``, not 204, because that is what both sibling DELETE routes in this file
answer (``delete_gl_account``, ``delete_gl_journal_entry``) and it is the dominant
convention across the api shell — the four 204 routes are the exception.

## Path parameters

- `company_id` string, required
- `fiscal_year_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `200`

Successful Response

- MsgResponse: The ``{"msg": "..."}`` envelope — the error contract and many successes.
  - `msg` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zeno-works/apis/zeno-api.md) · [All operations](https://skmtc.dev/zeno-works/apis/zeno-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zeno-works/apis/zeno-api/revisions/1eb93dde146c?raw)
