---
title: "Get the salary items that can be added to an employee's payslip."
method: GET
path: "/core/v1/payroll/employees/{employeeId}/addable-salary-items"
tags: ["Payroll"]
---

# Get the salary items that can be added to an employee's payslip.

`GET /core/v1/payroll/employees/{employeeId}/addable-salary-items`

## Request

- Base URL: `https://api.klara.ch`
- URL: `https://api.klara.ch/core/v1/payroll/employees/{employeeId}/addable-salary-items`
- Auth: one of:
  - API key in header `X-API-KEY`
  - HTTP bearer

Resolves the employee's main (latest) contract and its editable payslip, then returns the salary-item types that can be added to that payslip as blank templates (numeric value fields cleared, distinct by <code>code</code>), together with the resolved <code>contractId</code> and <code>payslipId</code> so the response can be chained into the add-salary-item call. <strong>Prerequisite:</strong> call <code>GET /employees/short-info</code> first to resolve the <code>employeeId</code> path parameter from the returned entries' <code>id</code> field. When <code>month</code> is provided that month's payslip is used; when it is omitted the employee's current payslip is used. An employee who has left (inactive) is rejected with <code>400</code>. This call does not recalculate or create payslips, with one exception: the current payslip may be created on first access. A month whose payslip is already sealed (paid) is rejected with <code>400</code>, and a month for which no payslip exists (e.g. a future month) returns <code>404</code>. The tenant and company are derived from the authenticated token; the caller must hold the <code>COMPENSATION</code> permission on that company.

## Path parameters

- `employeeId` integer, required

## Query parameters

- `month` string

## Headers

- `Accept-Language` string

## Response `200`

Successful operation

- AddablePayslipSalaryItems: The salary items that can be added to an employee's editable payslip, plus the resolved contract/payslip to chain into the add-salary-item call.
  - `employeeId` integer: Id of the employee the addable salary items were resolved for.
  - `contractId` integer: Id of the employee's resolved main (latest) contract. Pass this to the add-salary-item call.
  - `payslipId` integer: Id of the resolved editable payslip. Pass this to the add-salary-item call.
  - `periodFrom` string, date-time: Month (first day) of the resolved payslip (yyyy-MM-ddT00:00:00Z).
  - `salaryItems` AddableSalaryItem[]: Addable salary items as blank templates (value fields cleared), distinct by code.
    - `code` string: Salary-type code. Send this as the salary item code when adding it to the payslip.
    - `name` string: Canonical (non-localized) name of the salary item.
    - `description` string: Localised description/label of the salary item (localised via the Accept-Language header).
    - `editableFields` string: Comma-separated list of the value fields that can be provided when adding this salary item (baseValue, rate, quantity, value). The GUI implementation must base on this list to only show input box for fields that exist in this list.
    - `duplicatable` boolean: Whether more than one instance of this salary item can be added to the same payslip. When false, only one instance of this salary item can be added, try to add another one will result in an error.
    - `showOnPayslip` boolean: Whether the salary item is shown on the payslip.
    - `employerRelated` boolean: Whether the salary item is employer-related (as opposed to employee-related).
    - `paymentTypeSit` 'BANK' | 'PAYINSLIP' | 'CASH': How the salary item is paid out. Allowed values: BANK, PAYINSLIP, CASH.
    - `salaryItemTypeId` integer: Id of the underlying salary-item type definition.
    - `accountingGroup` string: Accounting group the salary item belongs to.
    - `printSequence` integer: Print/order sequence of the salary item on the payslip.

## Other responses

- `400`: Data invalid<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `401`: No Authorization header found or invalid token<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `403`: The current user is not allowed to access this company data<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `404`: Resource not found<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `429`: API rate limit exceeded<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `500`: Something went wrong on our side while processing the request. Please kindly contact our support.<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.

---

[API](https://skmtc.dev/klara/apis/klara-public-api.md) · [All operations](https://skmtc.dev/klara/apis/klara-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/klara/apis/klara-public-api/revisions/490b1a879fc2?raw)
