---
title: "List deduction entries for a list of employees"
method: GET
path: "/bulk/people/deduction"
tags: ["Employee Tables"]
---

# List deduction entries for a list of employees

`GET /bulk/people/deduction`

## Request

- Base URL: `https://api.hibob.com/v1`
- URL: `https://api.hibob.com/v1/bulk/people/deduction`
- Auth: one of:
  - HTTP basic
  - HTTP bearer

Returns deduction table entries for all employees or a specific list of employees. Deduction is a multi-current history table: an employee may have multiple deduction types concurrently (for example Childcare vouchers and Health insurance), each with its own effective-date timeline. Responses include timeline fields such as `effectiveDate`, `endEffectiveDate`, and `isCurrent`.<br /> <br /> There is no per-employee GET for this table — use this bulk endpoint with a single `employeeIds` value when you need one employee.<br /> <br /> You can fetch employee IDs using the <a href="https://apidocs.hibob.com/reference/post_people-search" target="_blank">People search</a> endpoint.<br /> <br /> **<b>Required permissions</b>** <br /> People's Data > People's fields > Deduction (Table) > View history (and View on the table or required columns), or View for current-effective rows only.<br /> **For the employees**: People's Data > Access data for > Make sure the employees are in the list. Employees that are not listed and were specifically requested will be listed under `errors` in the response. <br /> <br />
**<b>Pagination</b>** <br /> This endpoint uses cursor-based pagination to handle large number of table entries. To learn more, see <a href="https://apidocs.hibob.com/docs/pagination" target="_blank">Pagination in Bob's API</a>

## Query parameters

- `limit` number
- `cursor` string
- `employeeIds` string
- `includeArchived` boolean

## Response `200`

Deduction table entries.

- BulkDeductionTableResponse: Cursor-paginated bulk response for deduction table entries.
  - `results` object[]: Deduction table entries grouped by employee.
    - `employeeId` string: Employee ID these deduction entries belong to.
    - `values` DeductionEntry[]: Deduction entries for this employee on the current page.
      - `id` integer: The id of the deduction entry. Assigned by the system on create.
      - `effectiveDate` string, date: Start of this timeline step (ISO 8601 date).
      - `endEffectiveDate` string, date: When this step ceased to be effective (next step or end of timeline). Present on reads only.
      - `isCurrent` boolean: Whether this row is the current effective deduction for that deduction type. Present on reads only.
      - `canBeDeleted` boolean: Whether Bob allows delete for this history row. Present on reads only.
      - `deduction` string: Deduction type name (for example `Childcare vouchers`).
      - `amount` CurrencyValue
        - `value` number, double, required
        - `currency` string, required: Three-letter currency code.
      - `endDate` string, date: Optional explicit end date for this deduction period (ISO 8601 date).
      - `customColumns` object: Custom column values for this entry, keyed by column id.
      - `change` object: Details of the last change and the ID of the user who updated this entry. Present on reads only when available.
        - `reason` string: Reason for the last change, when provided.
        - `changedBy` string: Display name of the user who last changed the entry.
        - `changedById` string: Employee ID of the user who last changed the entry.
  - `response_metadata` object: Pagination metadata for the bulk response.
    - `next_cursor` string: Contains a string value if there is a 'next' page of data. `null` if there is no more data. Use this value as the `cursor` parameter for pagination to get the next page.
  - `errors` object[]: Permission errors for employees that were requested but could not be read. In the live JSON payload this is an object keyed by employee ID (`{ "<employeeId>": { "error", "message" } }`); documented as an array of entries (same pattern as other bulk employee-table responses) so the schema stays strict without `additionalProperties`.
    - `employeeId` string: Employee ID that could not be accessed.
    - `error` string: Machine-readable error code.
    - `message` string: Human-readable explanation of the permission error.
  - `restricted_columns` RestrictedColumnsMetadata: Indicates which columns were filtered from the response due to field-level permissions. This object is only present when the service user has partial column permissions. To learn more, see <a href="https://apidocs.hibob.com/docs/employee-data-api-field-level-permissions#detecting-restricted-columns-in-api-responses" target="_blank">Field level permissions</a>.
    - `no_view_permission` string[]: Columns filtered because the service user lacks View permission for these fields.
    - `no_view_history_permission` string[]: Columns filtered because the service user lacks View History permission. Only present for historical tables (work, employment, salaries, lifecycle).

## Other responses

- `400`: Bad request.
- `403`: Forbidden. The service user does not have permissions to access this table or employees. Check the permissions as explained in the endpoint description.

## Changes

- **2026-11-03** `9ac25373a355`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hibob/apis/employee-data-api/changes/bulk/people/deduction/get.md)

---

[API](https://skmtc.dev/hibob/apis/employee-data-api.md) - [All operations](https://skmtc.dev/hibob/apis/employee-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hibob/apis/employee-data-api/revisions/9ac25373a355?raw)
