The contractor object

Represents an individual or a business that receives non-employee compensation from a company.

When including contractors in payroll, Check will automatically file all associated 1099 forms.

{
    "id": "ctr_CyQIKSp6YvU6mBe2a6iq",
    "type": "individual",
    "company": "com_EkIJ9RewumnQLODHv1vl",
    "workplaces": [
        "wrk_ZquJLY48hvpLDSTT6JBn"
    ],
    "primary_workplace": "wrk_ZquJLY48hvpLDSTT6JBn",
    "first_name": "Bruce",
    "middle_name": "Frederick Joseph",
    "last_name": "Springsteen",
    "business_name": null,
    "dob": "1970-05-29",
    "start_date": "2019-03-01",
    "termination_date": null,
    "email": "[email protected]",
    "bank_accounts": ["bnk_rLXONRICxgyyeUaS16"],
    "ssn_last_four": "0000",
    "ssn_validation_status": "validated",
    "ein": null,
    "default_net_pay_split": "nps_lk218jk9082mjkjljT1c",
    "payment_method_preference": null,
    "onboard": {
        "status": "needs_attention",
        "blocking_steps": [],
        "remaining_steps": [
            "payment_method"
        ],
        "payment_method": [
            "payment_method_preference_set",
            "bank_account_exists",
            "bank_account_verified",
        ],
    },
    "address": {
        "line1": "913 Ocean Ave",
        "line2": null,
        "city": "Asbury Park",
        "state": "NJ",
        "postal_code": "07712",
        "country": "US"
    },
    "mailing_address": null,
    "1099_nec_electronic_consent_provided": false,
  	"metadata": {}
}
AttributeDescription
id
string
Unique identifier for the contractor.
type
string
individual if the contractor is a person. business if not a person.
company
string
ID of the company the contractor performs work for.
workplaces
array of strings
IDs of workplaces where the contractor works.
primary_workplace
string
ID of the contractor's primary workplace.
first_name
string
Contractor's first name. If contractor type is business, a primary contact is needed for 1099 filing so use the first name of the business's primary contact.
middle_name
string
Contractor's middle name. If contractor type is business, a primary contact is needed for 1099 filing so use the middle name of the business's primary contact, if it exists.
last_name
string
Contractor's last name. If contractor type is business, a primary contact is needed for 1099 filing so use the last name of the business's primary contact.
business_name
string
Contractor's business name if they are a business entity.
dob
YYYY-MM-DD
Contractor's date of birth.
start_date
YYYY-MM-DD
Most recent start date of contract. To cancel a contractor who never started, see Start and termination dates.
termination_date
YYYY-MM-DD
Most recent termination date of contract. Must be null, or on or after start_date, which must be set. To rehire, send termination_date: null with the new start_date. See Start and termination dates.
email
string
Contractor's email address.
bank_accounts
array of strings
Read only. An array of bank account IDs.
ssn_last_four
string
The last four digits of the contractor’s SSN.
ssn_validation_status
string
The validation status of the contractor's SSN. Either pending indicating validation in progress, validated indicating the SSN passes our validation criteria, or invalid indicating the SSN is not valid. For more details see SSN Validation .
ein
string
Contractor's Employer Identification Number.
default_net_pay_split
string
ID of the net pay split currently active on the contractor.
onboard
object
Structured information about the onboard status of the contractor.
address
object
Legal address of contractor on file with the federal government. If the contractor has a type of business, then you should use the address of the business.
mailing_address
object
Mailing address for paper correspondence. Separate from the contractor's legal address and not used for tax calculations. Pass null to clear.
payment_method_preference
string
Either manual or direct_deposit if the contractor has a linked bank account.
1099_nec_electronic_consent_provided
boolean
Indicates whether the contractor has opted into electronic delivery of Copy B of 1099-NEC.
metadata
object
Additional loosely structured information to associate with the contractor.

Start and termination dates

Starting November 19, 2026, Check enforces these rules on every API version. They apply to Create a contractor, including bulk create, and Update a contractor whenever the request sends start_date or termination_date. A request that sends neither date is not checked against them.

  • A termination date can't be earlier than the start date. The request returns a 400 error on termination_date with the message "Termination date cannot be earlier than the start date.", and nothing in the request is saved. A termination_date on or after the start_date is valid, including a date in the future.
  • To rehire a contractor, clear the old termination date. Send the new start_date with termination_date: null in the same request. If a request moves start_date past the existing termination_date without clearing it, it returns a 400 error on termination_date with the message "To rehire, send termination_date: null with the new start date."
{
    "start_date": "2026-03-02",
    "termination_date": null
}

Before November 19, 2026, Check accepts a termination_date earlier than the start_date with a success response but saves termination_date as null, even when the contractor already had a valid termination date. A request that moves start_date past the existing termination_date also clears it.

To cancel a contractor who never started, send start_date: null. If the contractor has a termination_date, also send termination_date: null, because a termination date requires a start date. This works before and after November 19, 2026.