---
title: "Create Employee Check"
method: POST
path: "/employeeCheck"
---

# Create Employee Check

`POST /employeeCheck`

Create a check for an employee.

## Request body

- object
  - `companyID` string, required — Company ID of the employer
  - `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, Physical Check, Prepaid, Instant Pay and Paycard (Early Access) disbursement methods.
    - `method` 'direct_deposit' | 'download_check' | 'physical_check' | 'prepaid' | 'paycard' | 'instant_pay' — The method of disbursement. There are 6 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), `paycard` (Zeal will instantly transfer funds to the existing paycard), and `instant_pay` (Zeal will send funds to the existing worker's Instant Pay wallet)
  - `shifts` object[], required — 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
  - `flsa_ot_recommendation` boolean — If set to true, we will automatically convert the check to include our OT recommendation at the time of processing **NOTE: Only applicable for FLSA Overtime Policy**
  - `speed` 'two_day' | 'one_day' | 'one_day_no_reserve' | 'zero_day_no_reserve' — The ACH speed of the check, accepts `two_day`, `one_day`,`one_day_no_reserve`, or `zero_day_no_reserve` as values
  - `apply_employee_deductions` boolean — Applies a deduction to this check for each employee deduction template that is effective at the time of the check_date for the employee
  - `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)

## Response `200`

200

- object
  - `success` boolean
  - `data` object
    - `employeeCheckID` string
    - `employerCheckID` unknown
    - `companyID` string
    - `employeeID` string
    - `status` string
    - `is_salary` boolean
    - `first_name` string
    - `middle_initial` unknown
    - `last_name` string
    - `reportingPeriodID` string
    - `check_date` string
    - `approval_required` boolean
    - `approved` boolean
    - `metadata` object
      - `checkCorrelationID` string
    - `disbursement` object
      - `method` string
    - `disbursement_status` string
    - `gross_pay` integer
    - `net_pay` unknown
    - `taxes` 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[]
      - `employeeID` string
      - `shiftID` string
      - `first_name` string
      - `last_name` string
      - `metadata` object
      - `time` string
      - `hourly` object
        - `hours` integer
        - `wage` integer

## 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)
