---
title: "Update Payroll Contract"
method: PATCH
path: "/companies/{company_id}/payroll/contracts/{contract_id}"
tags: ["payroll"]
---

# Update Payroll Contract

`PATCH /companies/{company_id}/payroll/contracts/{contract_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}/payroll/contracts/{contract_id}`
- Auth: none declared

PATCH a **future-dated** contract. An in-force one is corrected with
``amend_payroll_contract`` (422 says so).

## Path parameters

- `company_id` string, required
- `contract_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- PayrollContractUpdate: PATCH body — future-dated contracts only (else 422, close-and-insert).
  - `valid_from` string, date, nullable
  - `valid_to` string, date, nullable
  - `workload_percent` union
    - number
    - string
  - `salary_model` 'monthly' | 'hourly'
  - `monthly_salary` union
    - number
    - string
  - `hourly_rate` union
    - number
    - string
  - `hourly_holiday_pay_percent` union
    - number
    - string
  - `thirteenth_salary` boolean, nullable
  - `thirteenth_schedule` 'december' | 'monthly_accrual' | 'half_yearly' | 'quarterly': 13th-salary payout schedule (mirrors SP4's ``ThirteenthSchedule``); default ``december`` = December payout + exit pro-rata (MASTER §7 P2). ``half_yearly`` pays at the end of June and December (+ exit), ``quarterly`` at the end of March, June, September and December (+ exit) — F2681, ``engine/thirteenth.py``.
  - `bvg_plan_id` string, nullable
  - `bvg_declared_annual_salary` union
    - number
    - string
  - `uvg_solution_code` string, nullable
  - `ktg_plan_id` string, nullable
  - `nbu_exempt` boolean, nullable
  - `insurance_policy` object, nullable
  - `cost_center_dimension_value_id` string, nullable
  - `reason` string, nullable

## Response `200`

Successful Response

- PayrollContractOut
  - `id` string, required
  - `employee_id` string, required
  - `valid_from` string, date, required
  - `valid_to` string, date, nullable
  - `workload_percent` string, required
  - `salary_model` 'monthly' | 'hourly', required
  - `monthly_salary` string, nullable
  - `hourly_rate` string, nullable
  - `hourly_holiday_pay_percent` string, nullable
  - `thirteenth_salary` boolean, required
  - `thirteenth_schedule` 'december' | 'monthly_accrual' | 'half_yearly' | 'quarterly', required: 13th-salary payout schedule (mirrors SP4's ``ThirteenthSchedule``); default ``december`` = December payout + exit pro-rata (MASTER §7 P2). ``half_yearly`` pays at the end of June and December (+ exit), ``quarterly`` at the end of March, June, September and December (+ exit) — F2681, ``engine/thirteenth.py``.
  - `bvg_plan_id` string, nullable
  - `bvg_declared_annual_salary` string, nullable
  - `uvg_solution_code` string, nullable
  - `ktg_plan_id` string, nullable
  - `nbu_exempt` boolean, required
  - `insurance_policy` object, nullable
  - `cost_center_dimension_value_id` string, nullable
  - `created_at` string, date-time, 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)
