---
title: "List Pay Items"
method: GET
path: "/v1/pay-items"
tags: ["Pay Items"]
---

# List Pay Items

`GET /v1/pay-items`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/pay-items`
- Auth: one of:
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `https://gateway.remote.com/company.manage`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `pay_item:read`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `all:read`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `all:write`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `pay_item:read`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `all:read`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `all:write`
  - HTTP bearer

Lists pay items for a company with optional filtering by employment, legal entity, date range, and pagination.
Neither recurring pay items nor the payments generated from them are included.
Remote still pays those payments, and a one-off pay item is paid in addition to the payments generated for the same period.

## Authentication

This endpoint accepts any one of the following token types:

- **Company-scoped access token** (`OAuth2AuthorizationCode`) — obtained by a company manager through the Authorization Code flow or the Refresh Token flow. See [Authentication for partners](https://developer.remote.com/docs/authentication-for-partners).
- **Company-scoped access token (assertion)** (`OAuth2CompanyManagerAssertion`) — obtained through the `urn:ietf:params:oauth:grant-type:jwt-bearer` grant for a company manager. See [OAuth Assertion](https://developer.remote.com/docs/authorization-method-oauth-assertion).
- **Customer API token** (`CustomerAPIToken`) — generated by the customer on their Integration Settings page, with the scopes they choose there. See [Authorization for customers](https://developer.remote.com/docs/authorization-for-customers).

## Scopes

Any one of the scopes in a token type's row is enough. `all:read` and `all:write` work too.

| Token type | Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|---|
| Company-scoped access token | Manage payroll runs (`payroll`) | View pay items (`pay_item:read`) | Manage pay items (`pay_item:write`) |
| Company-scoped access token (assertion) | Manage payroll runs (`payroll`) | View pay items (`pay_item:read`) | Manage pay items (`pay_item:write`) |
| Customer API token | Manage payroll runs (`payroll`) | View pay items (`pay_item:read`) | Manage pay items (`pay_item:write`) |

## Query parameters

- `employment_slug` string, uuid: A unique identifier in UUID v4 format.
- `legal_entity_id` string, uuid: A unique identifier in UUID v4 format.
- `effective_from` string, date: UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
- `effective_to` string, date: UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
- `partner_external_id` string
- `page` integer
- `page_size` integer

## Response `200`

Success

- ListPayItemsResponse
  - `data` object, required
    - `current_page` integer, required: Current page number
    - `pay_items` PayItem[], required: List of pay items
      - `amount` integer, required: Value of the pay item. Its unit depends on the `type` of the pay code (see GET /v1/companies/:company_id/legal-entities/:legal_entity_id/pay-codes): `amount` in cents, `percentage` in basis points, `unit` as a raw count, `hours` as a whole number of hours, `duration` in seconds.
      - `code` string, required: Pay item type code
      - `custom_configuration` PayItemCustomConfiguration, nullable: The pay item custom configuration values for pay codes that use one, such as the employee's company car. The pay code's `custom_configuration` (GET …/pay-codes) gives the `key` and the JSON Schema of the `values`. On PATCH, `values` are merged onto the stored ones: nested objects merge, and `null` removes a field at any level. Send `null` for the whole `custom_configuration` to remove the stored values.
        - `key` string, required: The pay code's `custom_configuration.key`
        - `values` object, required: Values matching the pay code's `custom_configuration.schema`
      - `effective_date` string, date, required: Date the pay item is applied on (YYYY-MM-DD) — the day worked, the day a correction was submitted, or the first day of a leave period.
      - `employment_id` string, uuid, required: Employment UUID
      - `end_date` string, date, nullable, required: Last day of a leave period, inclusive (YYYY-MM-DD). Only for Leave-of-absence pay codes; Leave empty for other pay codes.
      - `id` string, uuid, required: Pay item's unique identifier. Editing `amount` or `effective_date` creates a new version with a new `id`; every `id` this API returned for a pay item edited through `PATCH` keeps working on `PATCH` and `DELETE` and resolves to the current version, except for a payment generated from a recurring pay item, which returns 422.
      - `partner_external_id` string, nullable: A reference code for the pay item record in the calling integration's own system. Private to that integration — no other integration can read or overwrite it. Null when the integration has not set one. See [Your own IDs on Remote records](https://developer.remote.com/docs/your-own-ids-on-remote-records).
      - `provider_data` PayItemProviderData, required
        - `correction_effective_date` string, date: Set this only on a correction: the original working day being corrected (YYYY-MM-DD). Its presence is what marks the pay item as a correction rather than an original submission.
        - `hourly_rate` integer: Hourly rate in cents
        - `hourly_rate_currency_code` string: Currency code in [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format.
        - `pay_rate` number: Overtime rate multiplier (e.g. 1.5)
        - `shift_code` string: Shift identifier from partner system
        - `work_day_duration` integer: Expected work day duration in seconds
      - `replaced_ids` string[], required: Earlier `id`s of this pay item, oldest first; empty if it has never been edited. Each of them still resolves to the current version on `PATCH` and `DELETE`, so tracking them is strongly advised but not necessary.
    - `total_count` integer, required: Total number of pay items
    - `total_pages` integer, required: Total number of pages

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity

---

[API](https://skmtc.dev/remote-com/apis/pay-compensation.md) - [All operations](https://skmtc.dev/remote-com/apis/pay-compensation/llms.txt) - [OpenAPI document](https://skmtc.dev/remote-com/apis/pay-compensation/revisions/ec29f1865c5e?raw)
