---
title: "Create a payroll"
method: POST
path: "/payrolls (COPY)"
---

# Create a payroll

`POST /payrolls (COPY)`

## Request

- Base URL: `https://sandbox.checkhq.com`
- URL: `https://sandbox.checkhq.com/payrolls (COPY)`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/checkhq/apis/check-api/docs/payrolls%20(COPY)/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a payroll.

## Request body

- object
  - `company` string, required: ID of the company to run payroll for.
  - `period_start` string, date, required: The start of the date range that the payroll covers.
  - `period_end` string, date, required: The end of the date range that the payroll covers.
  - `payday` string, date, required: The date on which employees will be paid for the payroll.
  - `processing_period` string: The processing period of the payroll. <br><br>One of `four_day`, `two_day`, or `one_day`.<br><br>The processing period determines the approval deadline of the payroll. For a payroll with a Friday payday, `four_day` will mean the approval deadline is on Monday, whereas `two_day` will mean the approval deadline is on Wednesday, and `one_day` will mean the approval deadline is on Thursday.<br><br>The possible values for this field are constrained by the processing periods the company is approved for.<br><br>Default: `processing_period` of the company
  - `type` string: Indicates whether the payroll is a regular, [off-cycle](doc:off-cycle-payroll), or amendment payroll.<br><br>One of `regular`,`off_cycle`, or `amendment`.<br><br>Default: `regular`
  - `pay_frequency` string: Frequency by which [employees](ref:the-employee-object) get paid.<br><br>One of `weekly`, `biweekly`, `semimonthly`, `monthly`, `quarterly`, or `annually`.<br><br>Default: `biweekly`
  - `funding_payment_method` string: Payment method for funding the payroll. <br><br>One of `ach`, `wire`, or `parafin`. <br><br>`ach` and `wire` can be set when creating or updating a payroll. `parafin` is set by Check when a payroll advance is accepted and cannot be set or changed via the API. <br><br>Default: `ach`
  - `pay_schedule` string: ID of the [pay schedule](ref:the-pay-schedule-object) that the payroll relates to.
  - `off_cycle_options` object: Additional configuration options controlling `off_cycle` payroll behavior.
    - `force_supplemental_withholding` boolean: Whether to tax all earnings as supplemental earnings.<br><br>Default: `false`
    - `apply_benefits` boolean: Whether to apply [benefit deductions and contributions](ref:the-employee-benefit-object) to the payroll.<br><br>Default: `false`
    - `apply_post_tax_deductions` boolean: Whether to apply [post-tax deductions](ref:the-post-tax-deduction-object) to the payroll.<br><br>Default: `false`
  - `items` object[]: The set of [payroll items](ref:the-payroll-item-object) associated with the payroll.
    - `employee` string, required
    - `payment_method` string
    - `earnings` object[]
      - `type` string: Type of earning. Can be one of the following earning types in <a href="https://docs.checkhq.com/reference/types-of-earnings">Types of earnings</a>
      - `workplace` string, required: ID of the workplace where work for this earning was performed
      - `earning_code` string: The earning code id which will be used to aggregate earnings on the paystub
      - `description` string: Readable description of the earning code that will show up on the paystub
      - `earning_rate` string: The earning rate id which will be used to calculate the gross wage. Required if type is “piece”
      - `amount` string: Amount earned for this earning<br><br>May be negative, for example to reverse or correct a previously reported earning
      - `hours` number, float: Number of hours worked for this earning
      - `piece_units` number, float: Number of units of work produced. Required if type is “piece”
      - `metadata` string, json: Additional loosely structured information to associate with the earning
    - `reimbursements` object[]
      - `amount` string, required: Amount of reimbursement<br><br>Must be greater than or equal to 0 on regular payrolls. Negative values are accepted on external payrolls
      - `description` string: Description for the reimbursement that will show up on the paystub
      - `code` string: Unique code to identify the reimbursement that will be used to aggregate reimbursements on the paystub. Recommended to always be included to have explicit groupings on the paystub.
      - `metadata` string, json: Additional loosely structured information to associate with the reimbursement
    - `benefit_overrides` object[]: The set of benefit override objects associated with this payroll item.
      - `benefit` string, required: ID of the employee benefit that is being overridden for the payroll item
      - `employee_contribution_amount` string: Updated employee contribution amount to use for this payroll only
      - `company_contribution_amount` string: Updated company contribution amount to use for this payroll only
    - `post_tax_deduction_overrides` object[]: The set of post-tax deduction override objects associated with this payroll item.
      - `post_tax_deduction` string, required: ID of the miscellaneous post-tax deduction that is being overridden.
      - `amount` string, required: Updated deduction amount to use for this payroll only
    - `tax_overrides` object[]: The set of tax override objects associated with this payroll item.
      - `tax` string, required: ID of the tax being overridden. Only Federal Income Tax and State Income Taxes are eligible.
      - `amount` string, required: Updated withholding amount to use for this payroll only.
    - `pto_balance_hours` number, float: The employee's remaining PTO hour balance, for display on the paystub
    - `sick_balance_hours` number, float: The employee's remaining sick hour balance, for display on the paystub
    - `state_covid_sick_balance_hours` number, float: The employee's remaining sick hour balance from state COVID relief bills, for display on the paystub
    - `supplemental_tax_calc_method` string: Controls the method used by Check to calculate tax on supplemental earnings. May be flat or aggregate
    - `paper_check_number` string: For accounting. The check number associated with any printed checks. Can be updated even after the associated payroll has been approved. See [Get a paper check](ref:get-a-paper-check) for more details.
    - `metadata` string, json: Additional loosely structured information to associate with the payroll item.
  - `contractor_payments` object[]: The set of [contractor payments](ref:the-contractor-payment-object) associated with the payroll.
    - `contractor` string, required: The id of the contractor being paid
    - `payment_method` string: The way the contractor will be paid, either “direct_deposit” or "manual"
    - `amount` string: The amount the contractor should be paid
    - `reimbursement_amount` string: The amount to reimburse the contractor
    - `paper_check_number` string: For accounting. The check number associated with any printed checks. Can be updated even after the associated payroll has been approved. See Get a paper check for more details.
    - `workplace` string: The Workplace ID associated with this payment.
  - `metadata` string, json: Additional loosely structured information to associate with the payroll. Values must be string.

## Response `200`

200

- object
  - `id` string
  - `company` string
  - `period_start` string
  - `period_end` string
  - `approval_deadline` string
  - `approved_at` string
  - `payday` string
  - `status` string
  - `type` string
  - `pay_frequency` string
  - `funding_payment_method` string
  - `processing_period` string
  - `off_cycle_options` unknown
  - `managed` boolean
  - `totals` object
    - `employee_gross` string
    - `employee_reimbursements` string
    - `employee_taxes` string
    - `employee_benefits` string
    - `post_tax_deductions` string
    - `employee_net` string
    - `contractor_gross` string
    - `contractor_reimbursements` string
    - `contractor_net` string
    - `company_taxes` string
    - `company_benefits` string
    - `liability` string
    - `cash_requirement` string
  - `items` object[]
    - `id` string
    - `payroll` string
    - `employee` string
    - `payment_method` string
    - `net_pay` string
    - `earnings` object[]
      - `amount` string
      - `hours` integer
      - `type` string
      - `workplace` string
      - `code` unknown
      - `description` unknown
    - `reimbursements` unknown[]
      - unknown
    - `taxes` object[]
      - `tax` string
      - `description` string
      - `amount` string
      - `payer` string
    - `benefits` unknown[]
      - unknown
    - `benefit_overrides` unknown[]
      - unknown
    - `post_tax_deductions` unknown[]
      - unknown
    - `post_tax_deduction_overrides` unknown[]
      - unknown
    - `tax_overrides` unknown[]
      - unknown
    - `warnings` unknown[]
      - unknown
  - `contractor_payments` object[]
    - `contractor` string
    - `payment_method` string
    - `amount` string
    - `reimbursement_amount` string
  - `is_void` boolean
  - `metadata` object

## Changes

- **2026-11-03** `5a54f5eb888b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/checkhq/apis/check-api/changes/payrolls%20%28COPY%29/post.md)

---

[API](https://skmtc.dev/checkhq/apis/check-api.md) - [All operations](https://skmtc.dev/checkhq/apis/check-api/llms.txt) - [OpenAPI document](https://skmtc.dev/checkhq/apis/check-api/revisions/5a54f5eb888b?raw)
