---
title: "Post Gl Commercial Document"
method: POST
path: "/companies/{company_id}/gl/commercial-documents"
tags: ["gl-actions"]
---

# Post Gl Commercial Document

`POST /companies/{company_id}/gl/commercial-documents`

## 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/commercial-documents`
- Auth: none declared

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- GlCommercialDocCreate
  - `direction` 'payable' | 'receivable', required
  - `counterparty_id` string, nullable
  - `control_account_id` string, required
  - `gl_period_id` string, required
  - `posting_date` string, date, required
  - `currency` string
  - `document_no` string, nullable
  - `due_date` string, date, nullable
  - `service_period_start` string, date, nullable
  - `service_period_end` string, date, nullable
  - `base_lines` GlDocBaseLineIn[], required
    - `account_id` string, required
    - `net_amount` union, required
      - number
      - string
  - `vat_lines` GlDocVatLineIn[]
    - `vat_account_id` string, required
    - `vat_amount` union, required
      - number
      - string
    - `deductible_only` GlDocDeductibleOnlyIn: D11 — input VAT booked at its deductible part only (experts' final review, C27-06).
      - `source_vat_amount` union, required: The invoice's full input VAT, in the document's currency. The VAT line's vat_amount is the deductible part booked; the difference was already expensed on the base line and is not deducted — nor restricted again at settlement.
        - number
        - string
      - `restriction_basis` string, required: What the excluded part is for, e.g. '20 % private use, then 75 % Art. 30 key'. Recorded on the VAT posting as evidence of the restriction already applied.
    - `vat_code_id` string, nullable: The gl_vat_code id this VAT amount is declared under (GET /companies/{company_id}/gl/vat-codes). Required for a document dated on or after 2023-01-01 (the VAT horizon): a VAT amount without a code would reach no VAT return, so the line is refused with 422. A document without VAT sends no VAT line.
  - `customs_assessment` GlCustomsAssessmentIn: F2461 / round 11 D14 — the BAZG customs assessment a supplier document records.
    - `assessment_no` string, required: The assessment's identity (the BAZG Veranlagungsverfügung number). Import VAT is established by the assessment, never by the VAT code alone.
    - `assessed_on` string, date, required: The date of the customs assessment. The document's input VAT is deducted in the VAT period this date falls in (Art. 40(4) MWSTG) — on the collected basis too; the payment date does not move it.
    - `kind` 'assessment' | 'additional': 'assessment' — the original assessment; 'additional' — a genuine additional assessment whose document carries only its increment. A replacement of an earlier assessment is refused (422): reverse the replaced document first.

## Response `201`

Successful Response

- GlCommercialDocOut
  - `id` string, required
  - `company_id` string, required
  - `direction` string, required
  - `doc_type` string, required
  - `counterparty_id` string, nullable
  - `document_no` string, nullable
  - `currency` string, required
  - `net_amount` string, required
  - `vat_amount` string, required
  - `gross_amount` string, required
  - `posting_status` string, required
  - `settlement_status` string, required
  - `journal_entry_id` string, nullable
  - `open_item_id` string, nullable
  - `service_period_start` string, date, nullable
  - `service_period_end` string, date, nullable

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