---
title: "Create Gl Vat Period"
method: POST
path: "/companies/{company_id}/gl/vat/periods"
tags: ["gl-subledgers"]
---

# Create Gl Vat Period

`POST /companies/{company_id}/gl/vat/periods`

## 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/vat/periods`
- Auth: none declared

Create the VAT period covering a date — accountant (or admin).

Periods are otherwise created lazily by the VAT posting path, which leaves a
company that books **gross** (Saldo/Pauschal — no ``gl_vat_posting`` rows ever)
with none at all, and prepare/settle with nothing to operate on. Idempotent: an
existing window is returned as-is (201 status, ``created: false``), whatever its
status. The window is framed by the company's elected filing cadence unless
``filing_frequency`` overrides it (``doc/pipeline.md §5.5``). ZET-442: a NEW window
that overlaps an existing period, has not started, is not covered by fiscal years or is
not VAT-registered is refused with **422** (``vat.periods.create_vat_period``).

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- GlVatPeriodCreateRequest: Explicit VAT-period create (``doc/pipeline.md §5.5``). Periods are normally created lazily by the posting path, so a company that books **gross** (Saldo/Pauschal — no ``gl_vat_posting`` rows at all) never gets one and the prepare → settle → close surface has nothing to operate on. ``covering_date`` asks for the window containing that date at the company's elected cadence; ``filing_frequency`` overrides the election for a one-off window.
  - `covering_date` string, date, required
  - `filing_frequency` string, nullable

## Response `201`

Successful Response

- GlVatPeriodOut
  - `id` string, required
  - `company_id` string, required
  - `date_from` string, date, required
  - `date_to` string, date, required
  - `filing_frequency` string, required
  - `status` string, required
  - `closed_dirty` boolean
  - `dirty_ack_at` string, date-time, nullable
  - `dirty_ack_by` string, nullable
  - `dirty_reasons` object, nullable
  - `settlement_entry_id` string, nullable
  - `settlement_status` string
  - `filed_at` string, date-time, nullable
  - `paid_at` string, date-time, nullable
  - `corrections` integer
  - `created` boolean, nullable
  - `has_filed_snapshot` boolean, required: Whether the settle transition captured a box-level filing snapshot.

## 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)
