---
title: "Replaces every updatable field of a contractor (BF-7493)."
method: PUT
path: "/v{version}/Users/contractors/{contractorId}"
tags: ["Users"]
---

# Replaces every updatable field of a contractor (BF-7493).

`PUT /v{version}/Users/contractors/{contractorId}`

Full replace. Required, and a 400 naming each one when missing or null: firstName, lastName,
emailAddress, isElectronicDelivery, is1099, isSickTimeEnabled, isVacationTimeEnabled,
isHealthInsuranceEnabled. Every other updatable field that is absent or null is cleared -
including socialSecurityNumber, dateOfBirth, routingNumber and accountNumber; to change only
some fields use PATCH. Field names are those of GET: merge data.contractorData and
data.contractorUserProfile into one object and send it back. Keys that are not updatable
(isActive, userId, atsSyncId, userName, ...) are ignored; isActive is never written.
customFields changes only the fields listed, as [{ customFieldName, customFieldItemName }];
an empty customFieldItemName clears one; absent or null leaves custom fields alone. Rules
such as zip code, phone or SSN format apply only to values that change. A contractorId in
the body must equal the route. When every value equals the stored one nothing is written.
dateOfBirth must be a calendar date yyyy-MM-dd; a changed value with a time zone (Z or an
offset) is a 400. Error messages never repeat personal values, except that custom-field
errors name the custom field and list item.

## Path parameters

- `contractorId` integer, required
- `version` string, required

## Headers

- `company-id` string, required

## Request body

- UsersContractsCommandsPutContractorCommand
  - `companyId` string, uuid
  - `contractorId` integer
  - `firstName` string, nullable
  - `middleName` string, nullable
  - `lastName` string, nullable
  - `title` string, nullable
  - `emailAddress` string, nullable
  - `phone` string, nullable
  - `phoneExt` string, nullable
  - `isElectronicDelivery` boolean, nullable
  - `address1` string, nullable
  - `address2` string, nullable
  - `city` string, nullable
  - `zipCode` string, nullable
  - `stateCode` string, nullable
  - `stateWorking` string, nullable
  - `stateSubjectToTax` string, nullable
  - `socialSecurityNumber` string, nullable
  - `dateOfBirth` string, date-time, nullable
  - `gender` string, nullable
  - `routingNumber` string, nullable
  - `accountNumber` string, nullable
  - `federalFilingStatusId` integer, nullable
  - `stateFilingStatusId` integer, nullable
  - `stateFilingCode` string, nullable
  - `federalAllowance` number, double, nullable
  - `stateAllowance` number, double, nullable
  - `additionalFederalWithholdings` number, double, nullable
  - `additionalStateWithholdings` number, double, nullable
  - `otherIncomeAmount` number, double, nullable
  - `otherDeductionAmount` number, double, nullable
  - `totalDependentClaimAmount` number, double, nullable
  - `isFederalTaxExempt` boolean, nullable
  - `isStateTaxExempt` boolean, nullable
  - `isHasTwoJobs` boolean, nullable
  - `isI9OnFile` boolean, nullable
  - `paycheckDeliveryId` integer, nullable
  - `paycheckDeliveryAccountTypeId` integer, nullable
  - `is1099` boolean, nullable
  - `contractorCompany` string, nullable
  - `isSickTimeEnabled` boolean, nullable
  - `isVacationTimeEnabled` boolean, nullable
  - `isHealthInsuranceEnabled` boolean, nullable
  - `customFields` UsersContractsCommandsContractorCustomFieldValue[], nullable
    - `customFieldName` string, nullable
    - `customFieldItemName` string, nullable

## Response `200`

Success

- UsersContractsCommandsUpdateContractorResponse
  - `isValid` boolean
  - `errors` string[], nullable
  - `warnings` string[], nullable
  - `info` string[], nullable
  - `message` string, nullable
  - `data` UsersContractsCommandsUpdatedContractorResponse
    - `contractorId` integer

---

[API](https://skmtc.dev/bilflo/apis/bilflo-api.md) · [All operations](https://skmtc.dev/bilflo/apis/bilflo-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bilflo/apis/bilflo-api/revisions/5063eab95b17?raw)
