---
title: "Confirm Legacy Insurance"
method: POST
path: "/companies/{company_id}/payroll/insurance-confirmation"
tags: ["payroll"]
---

# Confirm Legacy Insurance

`POST /companies/{company_id}/payroll/insurance-confirmation`

## 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}/payroll/insurance-confirmation`
- Auth: none declared

Confirm the insurance of every legacy contract in one operation (F2702).

``policy`` (branch → undated ``not_required`` / ``not_contracted`` + reason; a dated or
referenced state is refused with 422 — set those per contract) is recorded on the EMPTY
branches of each legacy contract; a contract with an empty branch the policy does not
cover is skipped and listed, so the operation never makes a contract block. Each
confirmation is an audited amend with the mandatory ``reason``. ``dry_run`` reports what
would change and writes nothing.

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- PayrollInsuranceConfirm: Bulk "confirm insurance" for the legacy contracts of one company (F2702). ``policy`` is applied to the EMPTY branches of every legacy contract (a branch with a plan is insured and needs no entry) and may carry only UNDATED ``not_required`` / ``not_contracted`` entries: a waiver, a suspension or a manual determination is judged against each run period, so one written onto contracts of different spans could make a contract that only warned block — those are set per contract with Insurance setup. A contract with an empty branch ``policy`` does not cover is skipped and reported, and a legacy contract whose three plans are all set is confirmed with no entry at all.
  - `policy` object
  - `reason` string, required: Why the contracts are confirmed (audited).
  - `dry_run` boolean

## Response `200`

Successful Response

- PayrollInsuranceConfirmOut
  - `dry_run` boolean, required
  - `confirmed` integer, required
  - `contracts` PayrollInsuranceConfirmContractOut[], required
    - `contract_id` string, required
    - `employee_id` string, required
    - `employee_no` string, required
    - `display_name` string, required
    - `valid_from` string, date, required
    - `valid_to` string, date, nullable
    - `branches` string[], required
  - `skipped` PayrollInsuranceConfirmSkipped[], required
    - `contract_id` string, required
    - `employee_id` string, required
    - `employee_no` string, required
    - `display_name` string, required
    - `uncovered_branches` 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)
