---
title: "Bulk Create Pay Items"
method: POST
path: "/v1/pay-items/bulk"
tags: ["Pay Items"]
---

# Bulk Create Pay Items

`POST /v1/pay-items/bulk`

Bulk creates pay items for employments. Supports up to 500 items per request.
Integration-specific fields (shift code, currency, pay amount, etc.) go in the `provider_data` object.
Only Global Payroll employments are supported. Non-GP employments are returned as `employment_not_global_payroll`.


## Scopes

| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage payroll runs (`payroll`) | - | Manage pay items (`pay_item:write`) |

## Request body

- BulkCreatePayItemsParams
  - `pay_items` PayItemParams[], required
    - `amount` integer, required — Duration in seconds
    - `code` string, required — Pay item type code
    - `effective_date` string, date, required — Working day date (YYYY-MM-DD)
    - `employment_id` string, uuid, required — Identifier of the employment being terminated.
    - `provider_data` PayItemProviderData
      - `adjustment_effective_date` string, date — Correction date for a previously submitted day (YYYY-MM-DD)
      - `hourly_rate` integer — Hourly rate in cents
      - `hourly_rate_currency_code` string, nullable — Currency code of the SWIFT fee. Only present when processing_fee is set.
      - `is_deduction` boolean — Whether payout_amount should be considered a deduction
      - `pay_rate` number — Overtime rate multiplier (e.g. 1.5)
      - `payout_amount` integer — Associated payout or deduction in cents
      - `payout_currency_code` string, nullable — Currency code of the SWIFT fee. Only present when processing_fee is set.
      - `shift_code` string — Shift identifier from partner system
      - `work_day_duration` integer — Expected work day duration in seconds

## Response `200`

Success

- BulkCreatePayItemsResponse
  - `data` object, required
    - `failures` PayItemBulkCreateFailures[], required
      - `error` union — Failure reason. Includes `employment_not_global_payroll` when the provided employment is not Global Payroll.
        - string
        - union
          - object
            - `errors` object, required
          - object
            - `message` union, required
              - …
      - `row_number` integer
    - `successes` PayItemBulkCreateSuccesses[], required
      - `pay_item` PayItem, required
        - `amount` integer, required — Value of the pay item (e.g. duration in seconds, amount in cents)
        - `code` string, required — Pay item type code
        - `effective_date` string, date, required — Working day date (YYYY-MM-DD)
        - `employment_id` string, uuid, required — Identifier of the employment being terminated.
        - `provider_data` PayItemProviderData, required
          - `adjustment_effective_date` string, date — Correction date for a previously submitted day (YYYY-MM-DD)
          - `hourly_rate` integer — Hourly rate in cents
          - `hourly_rate_currency_code` string, nullable — Currency code of the SWIFT fee. Only present when processing_fee is set.
          - `is_deduction` boolean — Whether payout_amount should be considered a deduction
          - `pay_rate` number — Overtime rate multiplier (e.g. 1.5)
          - `payout_amount` integer — Associated payout or deduction in cents
          - `payout_currency_code` string, nullable — Currency code of the SWIFT fee. Only present when processing_fee is set.
          - `shift_code` string — Shift identifier from partner system
          - `work_day_duration` integer — Expected work day duration in seconds
      - `row_number` integer, required

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `409` — Conflict
- `422` — Unprocessable Entity
- `429` — Unprocessable Entity

---

[API](https://skmtc.net/remote-com/apis/remote.md) · [All operations](https://skmtc.net/remote-com/apis/remote/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/remote-com/remote/revisions/7e6a0c61ac82/schema)
