---
title: "Create Payroll Event"
method: POST
path: "/companies/{company_id}/payroll/events"
tags: ["payroll"]
---

# Create Payroll Event

`POST /companies/{company_id}/payroll/events`

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

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- PayrollEventIn
  - `employee_id` string, required
  - `event_type` 'hire' | 'exit' | 'unpaid_leave' | 'sickness' | 'accident' | 'military_service' | 'maternity' | 'paternity' | 'birth' | 'other', required: One employee lifecycle/absence event on ``payroll_event``. The allowance types (sickness / accident / military_service / maternity / paternity) may carry a per-calendar-day Taggeld/EO amount that the ``"events"`` run-input provider turns into 1060/1061/1070 lines; hire/exit/unpaid_leave/birth/other never emit lines — they drive the warning-severity ``payroll_event_unhandled`` run check instead.
  - `date_from` string, date, required
  - `date_to` string, date, nullable
  - `daily_allowance_amount` union
    - number
    - string
  - `daily_allowance_wage_type_code` string, nullable
  - `allowance_percent` union
    - number
    - string
  - `eo_payment_route` 'via_employer' | 'direct_to_person'
  - `insurer_case_number` string, nullable
  - `note` string, nullable

## Response `201`

Successful Response

- PayrollEventOut
  - `id` string, required
  - `employee_id` string, required
  - `event_type` 'hire' | 'exit' | 'unpaid_leave' | 'sickness' | 'accident' | 'military_service' | 'maternity' | 'paternity' | 'birth' | 'other', required: One employee lifecycle/absence event on ``payroll_event``. The allowance types (sickness / accident / military_service / maternity / paternity) may carry a per-calendar-day Taggeld/EO amount that the ``"events"`` run-input provider turns into 1060/1061/1070 lines; hire/exit/unpaid_leave/birth/other never emit lines — they drive the warning-severity ``payroll_event_unhandled`` run check instead.
  - `date_from` string, date, required
  - `date_to` string, date, nullable, required
  - `daily_allowance_amount` string, nullable, required
  - `daily_allowance_wage_type_code` string, nullable, required
  - `allowance_percent` string, nullable, required
  - `eo_payment_route` 'via_employer' | 'direct_to_person', required
  - `insurer_case_number` string, nullable, required
  - `note` string, nullable, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `default_wage_type_code` string, 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)
