---
title: "Create Bulk Employee Checks"
method: POST
path: "/employeeChecks"
---

# Create Bulk Employee Checks

`POST /employeeChecks`

Create a batch of employee checks.

## Request body

- object
  - `companyID` string, required — Company ID of the employer
  - `employeeChecks` object[] — Array of employee check objects
    - `employeeID` string, required — Employee ID of the employee
    - `reportingPeriodID` string, required — The reporting period ID that you want this employee check to belong to. See [Reporting Periods](https://docs.zeal.com/reference/reporting-periods)
    - `check_date` string, date, required — Check date for this employee check. If the `check_date` falls on a weekend/bank holiday, or the current time is after 2PM PST, two days before the `check_date`, adjust the `check_date` to the next valid business day. Zeal will not roll forward this date automatically.
    - `approval_required` boolean — Set to true if this check requires manual approval by the employer. Otherwise, by default, Zeal will automatically process the check on the day before the check date. You can approve the check either in the dashboard, or by using [update check](https://docs.zeal.com/reference/update-employee-check)
    - `disbursement` object — This object includes information regarding how the net pay is disbursed to the employee. Zeal supports Direct Deposit, Download Check, and Prepaid disbursement methods.
      - `method` 'direct_deposit' | 'download_check' | 'physical_check' | 'prepaid' | 'paycard' — The method of disbursement. There are 5 options: `direct_deposit` (Zeal will make a direct deposit to the employee's bank account), `download_check` (Zeal will give you the link to a PDF version of the check), `physical_check` (Zeal will send a physical check to the employee's home address on file), `prepaid` (Zeal will *not* disburse the net pay), and `paycard` (Zeal will instantly transfer funds to the existing paycard)
    - `metadata` object — Custom object you can attach to the employee check object. This is useful for storing additional information about the object in a custom, structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata. [Metadata](https://docs.zeal.com/reference/metadata)
    - `shifts` object[] — Array of shift objects. The set of shifts attached to this employee check describe the work done and the earnings owed to this employee. You can only create shifts by creating an employee check (through this endpoint). However, you can edit and delete shifts that are still pending. Also supports various earning components as objects. See [Shift Object](https://docs.zeal.com/reference/shift-object) for more information.
      - `time` string, date-time, required — ISO-8601 indicating when the shift was completed
      - `hourly` object
        - `hours` number, float, required — Number of regular hours worked in this shift
        - `wage` number, float — Wage for this employee. If not provided, Zeal uses employee's default_wage
        - `custom_name` string — Custom name to be attached to an earning component
    - `idempotency_key` string — Unique key given to a specific employee check object (lasts 24 hours)

## Response `200`

200

- object
  - `data` object
    - `success` boolean
    - `failed_checks` unknown[]
      - unknown
    - `created_checks` object[]
      - `employeeCheckID` string
      - `employerCheckID` unknown
      - `companyID` string
      - `employeeID` string
      - `status` string
      - `is_salary` boolean
      - `approval_required` boolean
      - `approved` boolean
      - `first_name` string
      - `middle_initial` unknown
      - `last_name` string
      - `reportingPeriodID` string
      - `check_date` string
      - `speed` string
      - `metadata` object
        - `newKey` string
      - `disbursement` object
        - `method` string
        - `history` unknown[]
          - unknown
        - `link` unknown
      - `taxes` unknown[]
        - unknown
      - `gross_pay` integer
      - `net_pay` unknown
      - `total_employer_taxes` unknown
      - `total_employee_taxes` unknown
      - `totals` object
        - `gross_earnings` integer
        - `gross_pay` integer
        - `net_pay` integer
        - `employer_taxes` integer
        - `employee_taxes` integer
        - `employee_deductions` integer
        - `employee_garnishments` integer
        - `employer_deductions` integer
        - `company_debit` integer
        - `company_cash_requirement` integer
      - `shifts` object[]
        - `shiftID` string
        - `status` unknown
        - `employeeID` string
        - `employeeCheckID` string
        - `first_name` string
        - `last_name` string
        - `time` string
        - `metadata` object
        - `wcc_code` unknown
        - `workLocationID` unknown
        - `customerAccountID` unknown
        - `flsa_ot_exempt` unknown
        - `hourly` object
          - `hours` integer
          - `wage` integer
      - `deductions` unknown[]
        - unknown
  - `success` boolean
  - `testMode` boolean

## Other responses

- `400` — 400

---

[API](https://skmtc.net/zeal/apis/zeal-api.md) · [All operations](https://skmtc.net/zeal/apis/zeal-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zeal/zeal-api/versions/01346dceb27d/schema)
