---
title: "Create Contractor"
method: POST
path: "/contractors"
---

# Create Contractor

`POST /contractors`

## Request body

- object
  - `companyID` string, required — Company ID of employer
  - `new_contractors` object[], required — Array of [Contractor Objects](https://docs.zeal.com/reference/contractor-object)
    - `email` string, required — Email of Contractor
    - `working_state` string, required — State that the Contractor is working in
    - `first_name` string, required — First Name of Contractor
    - `middle_name` string — Middle Name of Contractor
    - `last_name` string, required — Last Name of Contractor
    - `ssn` string — The contractor's social security number
    - `dob` string — Date of birth of the contractor
    - `phone_number` string
    - `type` 'individual_sole_proprietor' | 'c_corporation' | 's_corporation' | 'partnership' | 'trust_estate' | 'llc' | 'other' — Holds one of the following values: `individual_sole_proprietor`, `c_corporation`, `s_corporation`, `partnership`, `trust_estate`, `llc`, `other`. If not provided, Zeal will ask for this information during onboarding
    - `llc_tax_classification` 'c_corporation' | 's_corporation' | 'partnership' — The tax classification of the LLC. Holds one of the following values: `c_corporation`, `s_corporation`, `partnership`. Only applicable if `type` is `llc`.
    - `tin_type` 'ssn' | 'ein' — The TIN type of the contractor. Holds one of the following values: `ssn`, `ein`. Only applicable if `type` is `individual_sole_proprietor`. If `ein` is passed, then the `ein` parameter will be required.
    - `ein` string — EIN of the contractor. **(Not applicable if `type` is `individual_sole_proprietor` , unless the `tin_type` is `ein`)**
    - `business_name` string — Business Name of the contractor. **(Not applicable if `type` is `individual_sole_proprietor` )**
    - `address` string
    - `address_line2` string
    - `city` string
    - `state` string
    - `zip` string
    - `onboarded` string — Set to true to onboard contractor. Error will be returned if not all required fields are present to complete onboarding.

## Response `200`

200

- object
  - `success` boolean
  - `data` object[]
    - `contractorID` string
    - `companyID` string
    - `onboarded` boolean
    - `email` string
    - `working_state` string
    - `first_name` string
    - `middle_name` string
    - `last_name` string
    - `type` string
    - `dob` string
    - `business_name` string
    - `ein` string
    - `ssn` string
    - `address` string
    - `address_line2` string
    - `city` string
    - `state` string
    - `zip` string
    - `llc_tax_classification` string
    - `employment_status` string
    - `external_id` string
    - `paycard_requested` boolean
    - `paycard_enabled` boolean
    - `kyc_status` string
    - `ssn_verification_status` string

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