Employee Tax Setup
Every employee has a set of federal and state tax parameters that must be filled in before payroll can run correctly for them — things like their W-4 filing status, allowances, extra withholding, and exemption flags. Use these two endpoints to read that tax setup and to fill in or change individual parameters.
This section covers employee-level tax setup. For the company-level equivalent — FEIN, state tax account numbers, SUTA rates — see Company Tax Setup.
Get Employee Tax Setup
GET https://api.worklio.com/wep/companies/{CLIENT_ID}/employees/{EMPLOYEE_ID}/taxsetup
Requires a bearer access token (see How to Get API Access). CLIENT_ID is the company identifier returned as id when you create the company. EMPLOYEE_ID is the employee identifier returned as id when you create the employee.
Returns the employee's full tax setup: federal, then one entry per state the employee has tax exposure in (their state of residence, and any additional state they work in). This mirrors the shape of company tax setup, with two differences:
- There's no
sutaarray. State unemployment insurance is registered and rated at the company level, not per employee. - Groups have no
einfield. Employees don't have their own federal or state tax account numbers.
Local taxes (for example, New York City's or Yonkers') don't get their own top-level group. Their parameters — Total Allowances - NYC, Additional Withholding - NYC, Additional Withholding - Yonkers — appear inside the parameters array of the relevant state's entry, alongside that state's own income tax parameters.
Reading the response
Top-level fields:
| Field | Type | Description |
|---|---|---|
effectiveFrom | string (ISO date) | The effective date of this tax setup. |
isComplete | boolean | true only when federal and every entry in state are complete. |
federal | object | Federal tax setup. See "Group fields" below. |
state | array of objects | State income tax and related state/local payroll tax setup (including any city taxes, like NYC's or Yonkers'). One entry per state the employee has tax exposure in. See "Group fields" below. |
Group fields (on federal, and on each entry in state):
| Field | Type | Description |
|---|---|---|
name | string | Human-readable name of this tax group, e.g. "State Tax Setup - NY". |
state | string | Two-letter state code. Present on state entries only, not on federal. |
isComplete | boolean | true when every required parameter (isOptional: false) in this group has a value. |
parameters | array of objects | The individual tax parameters for this group. See "Parameter fields" below. |
Parameter fields (on each entry in parameters):
| Field | Type | Description |
|---|---|---|
taxId | string | Opaque identifier for this specific parameter. Pass it back in the update call (below) to set this parameter's value. Specific to this employee — don't reuse it for another employee. |
compatibleStates | array of strings | States this parameter also applies to. ["FED"] marks a federal-only parameter; ["ALL"] means it applies regardless of state. Unlike company tax setup, this is present on every parameter here. |
parameterType | integer | Controls how value should be interpreted. See "Parameter type values" below. |
name | string | Internal field name, e.g. FILINGSTATUS, _ADDITIONALWH. The same internal name can be reused across different taxes — for example, _IS_EXEMPT_EE_BY_EE appears once per tax the employee can be exempted from, each with its own taxId and caption. Always key off taxId, never name. |
caption | string | Human-readable label, e.g. "Additional Withholding - NYC". |
hint | string | Help text for the parameter, often pointing to the relevant W-4 line (e.g. "W-4, step 4, box 4(c)"). Empty string if there isn't any. |
value | string | The parameter's current value. Only present once the parameter has been set for this employee — the field is omitted entirely otherwise, rather than appearing as an empty string. |
defaultValue | string | Default value for the parameter, if any. Not every parameter has one. |
isOptional | boolean | Whether this parameter is required for the group's isComplete to be true. |
options | array of objects | Present only on parameters with a fixed set of choices (parameterType 5, and some parameterType 1 parameters). Each entry is { caption, description, value } — pass the value of the chosen option as the update payload's value. |
regEx | string | Present only on parameters with format validation (e.g. currency, whole-number allowances). The value must match this pattern. |
warning | string | Present alongside regEx. Message describing the expected format, for display if validation fails. |
isEditableOnlyByAdmin | boolean | Present on some parameters. |
isVisibleOnlyByAdmin | boolean | Present on some parameters. |
Parameter type values:
| Value | Meaning |
|---|---|
| 1 | Boolean (true/false). Sometimes paired with options giving explicit labels for the two values instead of a plain checkbox. |
| 3 | Currency amount. Has a regEx restricting it to a dollar amount with up to 2 decimal places. |
| 4 | Percentage. Has a regEx restricting it to a numeric percentage. |
| 5 | Select — choose one value from options. |
| 6 | Free text — though a regEx may still restrict its format, as with the whole-number allowance fields below. |
These are the values seen in example responses; treat any parameterType not listed here as unrecognized rather than guessing at its format, and check regEx/options/hint for formatting clues.
Example request
require("dotenv").config();
const TOKEN = process.env.API_KEY;
const CLIENT_ID = process.env.CLIENT_ID;
const EMPLOYEE_ID = process.env.EMPLOYEE_ID;
const url = `https://api.worklio.com/wep/companies/${CLIENT_ID}/employees/${EMPLOYEE_ID}/taxsetup`;
async function getEmployeeTaxSetup() {
const response = await fetch(url, {
method: "GET",
headers: {
accept: "application/json",
"api-version": "2.0",
authorization: `Bearer ${TOKEN}`,
"content-type": "application/json",
"x-api-version": "2.0"
},
});
console.log(response.status);
console.log(await response.text());
}
getEmployeeTaxSetup();curl -s -X GET "https://api.worklio.com/wep/companies/$CLIENT_ID/employees/$EMPLOYEE_ID/taxsetup" \
-H "accept: application/json" \
-H "api-version: 2.0" \
-H "authorization: Bearer $API_KEY" \
-H "content-type: application/json" \
-H "x-api-version: 2.0" | jq .Example response
This example is for an employee living and working in New York — that's why the only state entry is NY. An employee with exposure in more states would have one entry per state.
{
"effectiveFrom": "2026-09-11",
"isComplete": false,
"federal": {
"name": "Federal Tax Setup",
"isComplete": true,
"parameters": [
{
"taxId": "soBXw71H0qU0INeV_JRz0wcMp5m7bAkngWqwvIkNP-QLN8W6McpzcGQ@@",
"compatibleStates": ["FED"],
"parameterType": 5,
"name": "FILINGSTATUS",
"caption": "Filing Status",
"hint": "Please select filling status of employee from W-4, step 1, box (c).",
"defaultValue": "S",
"isOptional": false,
"options": [
{ "caption": "Single or Married filing separately", "description": "", "value": "S" },
{ "caption": "Married filing jointly or Qualifying surviving spouse", "description": "", "value": "M" },
{ "caption": "Head of household", "description": "", "value": "H" },
{ "caption": "Non-Resident Alien", "description": "", "value": "NRA" }
]
},
{
"taxId": "AVxescmJpyMLAGKtqzlBy4ly9LjRBTecc1PdvkWeczwH-Wn6WnLiYuTM@",
"compatibleStates": ["FED"],
"parameterType": 3,
"name": "NRA_EXEMPTION_AMT",
"caption": "NRA Exemption Amount",
"hint": "Use this parameter for nonresident alien employees that have filled out IRS Form 8233 and are exempt from a portion of wages earned. For example, if an employee's first $5,000 earned is exempt, you would set the parameter to 5000.",
"defaultValue": "0.0",
"isOptional": false,
"regEx": "^([0-9]+([.][0-9]{0,2})?)$",
"warning": "Please enter valid ($) amount with up to 2 decimal places"
},
{
"taxId": "0LI1-mZgk50Fkstm5gfoOkxzo-0x902d3uzbNTMftZprFSfz-gTvBng@@",
"compatibleStates": ["FED"],
"parameterType": 1,
"name": "TWO_JOBS",
"caption": "Two Jobs",
"hint": "Please select this box according to employees selection in W-4, step 2, box (c).",
"defaultValue": "FALSE",
"isOptional": false,
"options": [
{ "caption": "0", "description": "", "value": "FALSE" },
{ "caption": "1", "description": "", "value": "TRUE" }
]
},
{
"taxId": "MnAFb8hSPPypfarwD3aFLkG2CxwT7WGCIhb6YtyKPA__zSXjReWCxKA@@",
"compatibleStates": ["FED"],
"parameterType": 3,
"name": "DEPENDENTS_AMT",
"caption": "Claim Dependents",
"hint": "Enter a total dollar amount employee claimed for dependents in W-4, step 3, box 3.",
"isOptional": true,
"regEx": "^([0-9]+([.][0-9]{0,2})?)$",
"warning": "Please enter valid ($) amount with up to 2 decimal places"
},
{
"taxId": "ee_f_YPRPnNF0DuBCM77HCOP0DtS1VAsIuXg0UMzd3D7ua94AV_5KuT4@",
"compatibleStates": ["FED"],
"parameterType": 3,
"name": "OTHER_INCOME",
"caption": "Other Income",
"hint": "Enter a dollar amount employee entered in W-4, Step 4, box 4(a).",
"isOptional": true,
"regEx": "^([0-9]+([.][0-9]{0,2})?)$",
"warning": "Please enter valid ($) amount with up to 2 decimal places"
},
{
"taxId": "3184N8g1bj4Kktu8qn1Pa71Zv2XxsoC7aScnseobESfz-gTLShg74xWg@",
"compatibleStates": ["FED"],
"parameterType": 3,
"name": "DEDUCTIONS",
"caption": "Deductions",
"hint": "Enter a dollar amount employee entered in W-4, Step 4, box 4(b).",
"isOptional": true,
"regEx": "^([0-9]+([.][0-9]{0,2})?)$",
"warning": "Please enter valid ($) amount with up to 2 decimal places"
},
{
"taxId": "kx85lJPJmOvDxPLniFoGVSgoBqHswTs_DxTjvd8ECV_5DqiYxRE_wEdU@",
"compatibleStates": [],
"parameterType": 3,
"name": "_FEDADDITIONALWH2",
"caption": "Extra Withholding",
"hint": "Enter a dollar amount employee entered in W-4, step 4, box 4(c).",
"isOptional": true,
"regEx": "^([0-9]+([.][0-9]{0,2})?)$",
"warning": "Please enter valid ($) amount with up to 2 decimal places"
},
{
"taxId": "3184N8g1bjoKltu8qn1Pa71Zv2XxsoC7aScnuZZ_ASfz-gTLSjx3p",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_EE",
"caption": "Exempt From Federal Income Tax",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
},
{
"taxId": "FDtDR0GnLc8AccbtCunYUWFDuCsj0bJJsjMkC_V56lpy4kaorhhDn",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_EE",
"caption": "Exempt From Social Security",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
},
{
"taxId": "i4WuJwz4NvV06zacV7LMjza9BHROlfCtSyNvePOxp3gBX_kOqLyJc",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_ER",
"caption": "Exempt From Federal Unemployment Tax",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"isEditableOnlyByAdmin": true,
"isVisibleOnlyByAdmin": true,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
},
{
"taxId": "i4WuJwz4NvV0xxqcV7LMjza9BHROlfCtSyNvfPeht3gBX_kOqLyJc",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_EE",
"caption": "Exempt From Medicare",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
}
]
},
"state": [
{
"name": "State Tax Setup - NY",
"state": "NY",
"isComplete": false,
"parameters": [
{
"taxId": "dlDj6_zuGc5rcQG2kU3PL_gvr6wPUskgLD6Z8KU_R3d8m6GveAFf3ULI@",
"compatibleStates": ["NE", "NM", "MN", "ID", "KS", "UT", "WI", "ND", "DE", "MT", "CO", "MD", "AS", "GU", "VI", "MP", "OR", "NY"],
"parameterType": 5,
"name": "FILINGSTATUS",
"caption": "Filing Status",
"hint": "Please select filling status of employee",
"defaultValue": "S",
"isOptional": false,
"options": [
{ "caption": "Single", "description": "", "value": "S" },
{ "caption": "Married", "description": "", "value": "M" },
{ "caption": "Married but use single rate", "description": "", "value": "MH" }
]
},
{
"taxId": "6vFtymsudiLE2rEb-4xldzWZ-qjXBUtHzf5zCTvz-girUhg7x1nnmkg@@",
"compatibleStates": ["NY", "NJ", "NC", "GA", "NE", "NM", "MN", "SC", "KY", "AR", "HI", "ID", "IA", "KS", "ME", "UT", "VT", "VA", "WI", "DC", "ND", "OK", "DE", "MO", "MT", "RI", "CO", "MD", "MI", "WV", "AS", "GU", "VI", "MA", "MP", "OH", "OR", "CA"],
"parameterType": 6,
"name": "TOTALALLOWANCES",
"caption": "Total Allowances",
"hint": "Please enter the total number of allowances",
"defaultValue": "0",
"isOptional": false,
"regEx": "^([0-9]+)$",
"warning": "Please enter positive integer"
},
{
"taxId": "8PJeQtMaPMpQZ27ZIaIFcdb0nzFXK73iE3E_09oEy0Z4I8dZw9YOUFw@@",
"compatibleStates": ["NY"],
"parameterType": 6,
"name": "TOTALALLOWANCESNYC",
"caption": "Total Allowances - NYC",
"hint": "Please enter the total number of allowances for New York City tax",
"defaultValue": "0",
"isOptional": false,
"regEx": "^([0-9]+)$",
"warning": "Please enter positive integer"
},
{
"taxId": "91J20nf0Olhjh0wx5wSlMvi_TWMroZITbUPr6hTLShRb31nD1io4cyg@@",
"compatibleStates": ["AZ", "NY", "NJ", "NC", "GA", "CA", "NE", "NM", "IL", "MN", "SC", "KY", "AR", "PA", "HI", "ID", "IA", "KS", "ME", "UT", "VT", "VA", "WI", "CT", "DC", "ND", "OK", "DE", "MO", "MS", "MT", "RI", "AL", "CO", "MD", "MI", "WV", "AS", "GU", "IN", "PR", "VI", "MA", "MP", "OH", "OR"],
"parameterType": 3,
"name": "_ADDITIONALWH",
"caption": "Additional Withholding",
"hint": "Please enter any additional ($) amount employee wants to withhold each pay period for state tax.",
"defaultValue": "0.00",
"isOptional": false,
"regEx": "^([0-9]+([.][0-9]{0,2})?)$",
"warning": "Please enter valid ($) amount with up to 2 decimal places"
},
{
"taxId": "Tc0VD9VXo6HWXV9DOEa5_YomLsJSvKZEd5vVAcdF5aro2xFDP7W-J3Q@@",
"compatibleStates": ["NY"],
"parameterType": 3,
"name": "ADDITIONALWH-NYC",
"caption": "Additional Withholding - NYC",
"hint": "Please enter any additional ($) amount employee wants to withhold each pay period for New York City tax.",
"defaultValue": "0.00",
"isOptional": false,
"regEx": "^([0-9]+([.][0-9]{0,2})?)$",
"warning": "Please enter valid ($) amount with up to 2 decimal places"
},
{
"taxId": "VDfgOwaZLlW2K6kT_Si6zgKeGoi6KAeHtUH7QZWmiMMdIye1mmsVA7-Y@",
"compatibleStates": ["NY"],
"parameterType": 3,
"name": "ADDITIONALWH-YONKERS",
"caption": "Additional Withholding - Yonkers",
"hint": "Please enter any additional ($) amount employee wants to withhold each pay period for Yonkers City tax.",
"defaultValue": "0.00",
"isOptional": false,
"regEx": "^([0-9]+([.][0-9]{0,2})?)$",
"warning": "Please enter valid ($) amount with up to 2 decimal places"
},
{
"taxId": "1znOZw1bbQW2Dvf2QunuqH-DkQX3Ue3e8KcJR0Ptumd1Q4fyCKtSGDvHWeeaS",
"compatibleStates": ["NY"],
"parameterType": 5,
"name": "_COVERED_EE_ZONE",
"caption": "MCTMT Covered Employee Zone - New York MCTMT Employer Payroll Tax - Zone 1",
"hint": "If the employee is a 'covered employee' for MCTMT, please select the zone the payroll expense for this employee is attributable to. The field name contains the phrase Zone 1 but the value applies to the entire tax (the name is generated automatically from a variable referring to the database tag and is misleading). Zone 1 includes the counties of New York (Manhattan), Bronx, Kings (Brooklyn), Queens and Richmond (Staten Island). Zone 2 includes the counties of Rockland, Nassau, Suffolk, Orange, Putnam, Dutchess and Westchester.",
"isOptional": false,
"isEditableOnlyByAdmin": true,
"options": [
{ "caption": "Zone 1", "description": "", "value": "1" },
{ "caption": "Zone 2", "description": "", "value": "2" },
{ "caption": "Not covered", "description": "", "value": "3" }
]
},
{
"taxId": "Hn90y4jz7GUjjZO8nIRRq5R3a-WuJcIvRGPhZYJacuJKyLY8D__NAa8k@",
"compatibleStates": ["AZ", "FL", "NY", "NJ", "TX", "NC", "GA", "CA", "NE", "NV", "NH", "NM", "IL", "MN", "TN", "SC", "KY", "AK", "SD", "WY", "AR", "PA", "HI", "ID", "IA", "KS", "ME", "UT", "VT", "VA", "WI", "CT", "DC", "LA", "ND", "OK", "DE", "MO", "MS", "MT", "RI", "AL", "CO", "MD", "MI", "WV", "AS", "GU", "IN", "PR", "VI", "MA", "MP", "OH", "OR"],
"parameterType": 1,
"name": "_HAS_NON_RES_CERT",
"caption": "Nonresident Certificate",
"hint": "Please select if employee has nonresident certificate for this state",
"isOptional": false,
"options": [
{ "caption": "0", "description": "", "value": "FALSE" },
{ "caption": "1", "description": "", "value": "TRUE" }
]
},
{
"taxId": "0LI1-mZgk5ElptNm5gfoOkxzo-0x902d3uzbGUsz1fYbESuT4gTLShgfizg@@",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_ER",
"caption": "Exempt From New York State Unemployment Tax",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"isEditableOnlyByAdmin": true,
"isVisibleOnlyByAdmin": true,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
},
{
"taxId": "8PJeQtMaPMZwQ2bZIaIFcdb0nzFXK73iE3E___YIqyZ8K8s529YqHD9t2ZA@@",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_EE",
"caption": "Exempt From New York State Tax",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
},
{
"taxId": "FDtDR0GnLcc0Rc7tCunYUWFDuCsj0bJJsjMkD_FlmjYK7krItjwP_80BryQ@@",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_ER",
"caption": "Exempt From New York SDI",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"isEditableOnlyByAdmin": true,
"isVisibleOnlyByAdmin": true,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
},
{
"taxId": "JfO9n0ldy5FC4AXRFX6kn0e55hHeQzR_gQ3iVn7uJsTOKAOf1SXjReWCxKA@@",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_EE",
"caption": "Exempt From New York Family Leave Benefits",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
},
{
"taxId": "VDfgOwaZLlmGI50T_Si6zgKeGoi6KAeHtUH7Te2q6K95XzPVgmsVJ_PeSKg@@",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_ER",
"caption": "Exempt From New York Employer Compensation Expense Tax",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"isEditableOnlyByAdmin": true,
"isVisibleOnlyByAdmin": true,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
},
{
"taxId": "1znOZw1bbT2yJuP2QunuqH-DkQX3Ue3e8KcJTzO5-hd1I_-aHMtKPHe7Jbe2IjhzK",
"compatibleStates": ["ALL"],
"parameterType": 1,
"name": "_IS_EXEMPT_EE_BY_EE",
"caption": "Exempt From New York City Tax",
"hint": "Please specify whether employee is exempt from this tax",
"isOptional": false,
"options": [
{ "caption": "0", "description": "", "value": "false" },
{ "caption": "1", "description": "", "value": "true" }
]
}
]
}
]
}
FILINGSTATUSappears in bothfederaland thestateentry, as two separate parameters with two separatetaxIds and two separate sets ofoptions(federal includes a"NRA"option that NY's doesn't). Set both if the employee needs a filing status for each.
Update Employee Tax Setup
POST https://api.worklio.com/wep/companies/{CLIENT_ID}/employees/{EMPLOYEE_ID}/taxsetup
Requires a bearer access token (see How to Get API Access). CLIENT_ID is the company identifier returned as id when you create the company. EMPLOYEE_ID is the employee identifier returned as id when you create the employee.
Sets the value of one or more tax parameters. This is a targeted update, not a full replacement of the employee's tax setup — send only the parameters you're changing; every other parameter keeps its current value.
Request body:
The request body is a JSON array. Each entry sets one parameter:
| Field | Type | Required | Description |
|---|---|---|---|
taxId | string | Yes | The parameter's taxId, from a Get Employee Tax Setup response. |
value | string | Yes | The new value. If the parameter had a regEx in the GET response, value must match it. If it had options, value must be one of the listed option values. |
Example request
This example fills in the parameters needed to complete the employee's federal and NY state/local tax setup shown above: federal filing status, NY filing status, total allowances (general and NYC), additional withholding (state, NYC, and Yonkers), MCTMT covered employee zone, and the NYC tax exemption flag.
require("dotenv").config();
const TOKEN = process.env.API_KEY;
const CLIENT_ID = process.env.CLIENT_ID;
const EMPLOYEE_ID = process.env.EMPLOYEE_ID;
const url = `https://api.worklio.com/wep/companies/${CLIENT_ID}/employees/${EMPLOYEE_ID}/taxsetup`;
const payload = [
{
taxId: "soBXw71H0qU0INeV_JRz0wcMp5m7bAkngWqwvIkNP-QLN8W6McpzcGQ@@", // Filing Status (federal, W-4)
value: "S"
},
{
taxId: "dlDj6_zuGc5rcQG2kU3PL_gvr6wPUskgLD6Z8KU_R3d8m6GveAFf3ULI@", // Filing Status (NY state)
value: "S"
},
{
taxId: "6vFtymsudiLE2rEb-4xldzWZ-qjXBUtHzf5zCTvz-girUhg7x1nnmkg@@", // Total Allowances
value: "100"
},
{
taxId: "8PJeQtMaPMpQZ27ZIaIFcdb0nzFXK73iE3E_09oEy0Z4I8dZw9YOUFw@@", // Total Allowances - NYC
value: "100"
},
{
taxId: "91J20nf0Olhjh0wx5wSlMvi_TWMroZITbUPr6hTLShRb31nD1io4cyg@@", // Additional Withholding
value: "5"
},
{
taxId: "Tc0VD9VXo6HWXV9DOEa5_YomLsJSvKZEd5vVAcdF5aro2xFDP7W-J3Q@@", // Additional Withholding - NYC
value: "15.50"
},
{
taxId: "VDfgOwaZLlW2K6kT_Si6zgKeGoi6KAeHtUH7QZWmiMMdIye1mmsVA7-Y@", // Additional Withholding - Yonkers
value: "1.5"
},
{
taxId: "1znOZw1bbQW2Dvf2QunuqH-DkQX3Ue3e8KcJR0Ptumd1Q4fyCKtSGDvHWeeaS", // MCTMT Covered Employee Zone - Zone 1
value: "1"
},
{
taxId: "1znOZw1bbT2yJuP2QunuqH-DkQX3Ue3e8KcJTzO5-hd1I_-aHMtKPHe7Jbe2IjhzK", // Exempt From New York City Tax
value: "true"
}
];
async function updateEmployeeTaxSetup() {
const response = await fetch(url, {
method: "POST",
headers: {
accept: "application/json",
"api-version": "2.0",
authorization: `Bearer ${TOKEN}`,
"content-type": "application/json",
"x-api-version": "2.0"
},
body: JSON.stringify(payload)
});
console.log(response.status); // 204 on success
}
updateEmployeeTaxSetup();curl -s -X POST "https://api.worklio.com/wep/companies/$CLIENT_ID/employees/$EMPLOYEE_ID/taxsetup" \
-H "accept: application/json" \
-H "api-version: 2.0" \
-H "authorization: Bearer $API_KEY" \
-H "content-type: application/json" \
-H "x-api-version: 2.0" \
-d '[
{ "taxId": "soBXw71H0qU0INeV_JRz0wcMp5m7bAkngWqwvIkNP-QLN8W6McpzcGQ@@", "value": "S" },
{ "taxId": "dlDj6_zuGc5rcQG2kU3PL_gvr6wPUskgLD6Z8KU_R3d8m6GveAFf3ULI@", "value": "S" },
{ "taxId": "6vFtymsudiLE2rEb-4xldzWZ-qjXBUtHzf5zCTvz-girUhg7x1nnmkg@@", "value": "100" },
{ "taxId": "8PJeQtMaPMpQZ27ZIaIFcdb0nzFXK73iE3E_09oEy0Z4I8dZw9YOUFw@@", "value": "100" },
{ "taxId": "91J20nf0Olhjh0wx5wSlMvi_TWMroZITbUPr6hTLShRb31nD1io4cyg@@", "value": "5" },
{ "taxId": "Tc0VD9VXo6HWXV9DOEa5_YomLsJSvKZEd5vVAcdF5aro2xFDP7W-J3Q@@", "value": "15.50" },
{ "taxId": "VDfgOwaZLlW2K6kT_Si6zgKeGoi6KAeHtUH7QZWmiMMdIye1mmsVA7-Y@", "value": "1.5" },
{ "taxId": "1znOZw1bbQW2Dvf2QunuqH-DkQX3Ue3e8KcJR0Ptumd1Q4fyCKtSGDvHWeeaS", "value": "1" },
{ "taxId": "1znOZw1bbT2yJuP2QunuqH-DkQX3Ue3e8KcJTzO5-hd1I_-aHMtKPHe7Jbe2IjhzK", "value": "true" }
]'Example response
204 No Content
Success returns an empty body. There's no confirmation payload — if you need to see the updated values, call Get Employee Tax Setup again.
Error response
If you leave a required parameter unset — for any state the employee has tax exposure in, or federal — the update fails with a 400 and a message listing every parameter still missing a value, by caption:
{
"status": 0,
"code": "400",
"errorCode": "WEP_BadRequest",
"message": "9/18/2026 - 7:57:40 AM : Filing Status: Value_Required\nAdditional Withholding: Value_Required\nTotal Allowances: Value_Required\nTotal Allowances - NYC: Value_Required\nAdditional Withholding - NYC: Value_Required\nAdditional Withholding - Yonkers: Value_Required\nFiling Status: Value_Required\nMCTMT Covered Employee Zone- New York MCTMT Employer Payroll Tax - Zone 1: Value_Required",
"stackTrace": "",
"pagination": {
"pageNo": 0,
"pageSize": 0,
"totalRecords": 0,
"totalPages": 0,
"dataToken": ""
},
"validationErrors": null
}Updated 29 minutes ago
