Manage employee addresses
Create, update, and retrieve employee home and work addresses
When onboarding a new employee, you must provide two addresses to ensure accurate tax calculations during payroll processing:
-
Home address: The employeeβs primary residence, used to determine state and local tax obligations.
-
Work address: The location where employees perform their job, which also impacts payroll tax withholdings.
Home address
An employeeβs home address is used to determine applicable tax obligations. Gusto geocodes the address on create and update to ensure accuracy and location-based compliance.
The home address supports effective dating and courtesy withholding, allowing for precise tax handling even when an employee moves.
Create an employeeβs home address
Create an employeeβs home address when an employee first onboards to determine the tax by calling the POST /v1/employees/{employee_id}/home_addresses endpoint.
The effective_date signifies when the employee began living at this location. βcourtesy_withholdingβ: true indicates there is an active courtesy withholding at this location.
What is courtesy withholding?
Federal law prevents the same wages from being taxed by more than one state. If an employee lives in one state and works in another, some states have reciprocal agreements so the employee only pays income tax to one stateβusually the employeeβs home state.
Employers can choose courtesy withholding, electing that Gusto withholds and pays an employee's home state taxes instead.
Learn more about reciprocity and courtesy withholdings here.
Sample request:
curl --request POST \
--url https://api.gusto-demo.com/v1/employees/employee_id/home_addresses \
--header 'X-Gusto-API-Version: 2024-04-01' \
--header 'accept: application/json' \
--header 'authorization: Bearer {access_token}' \
--header 'content-type: application/json' \
--data '
{
"street_1": "300 3rd Street",
"city": "San Francisco",
"state": "CA",
"zip": "94107",
"effective_date": "2022-01-31",
"courtesy_withholding": false
}
'
Sample response:
{
"uuid": "{employee_address_uuid}",
"version": "{version}",
"employee_uuid": "{employee_uuid}",
"street_1": "300 3rd Street",
"street_2": "",
"city": "San Francisco",
"state": "CA",
"zip": "94107",
"country": "USA",
"active": true,
"effective_date": "1970-01-01",
"courtesy_withholding": false
}
Update an employeeβs home address
Employees may relocate during their time with a company, requiring updates to their home or work addresses. These changes can affect both employee and employer tax responsibilities. To stay compliant, always use effective dating when recording address changes. This ensures accurate tax setup and helps prevent issues such as payroll reversals or last-minute corrections due to late address updates.
If an employee moves or their home address changes, you can update their existing address using the PUT /v1/home_addresses/{home_address_uuid} endpoint.
Sample request:
curl --request PUT \
--url https://api.gusto-demo.com/v1/home_addresses/{home_address_uuid} \
--header 'X-Gusto-API-Version: 2024-04-01' \
--header 'accept: application/json' \
--header 'authorization: Bearer {access_token}' \
--header 'content-type: application/json' \
--data '
{
"version": "94b4d50fbc8f9c0fdcda677f136cca0f",
"street_1": "1234 Milky Way",
"city": "Albany",
"state": "NY"
}
'
Sample response:
{
"uuid": "{employee_address_uuid}",
"version": "{version}",
"employee_uuid": "{employee_uuid}",
"street_1": "1234 Milky Way",
"street_2": "",
"city": "Albany",
"state": "NY",
"zip": "94107",
"country": "USA",
"active": true,
"effective_date": "2022-01-31",
"courtesy_withholding": false
}
Get an employeeβs home address
Check whether the employeeβs home address has been created or updated by using the GET /v1/employees/{employee_id}/home_addresses endpoint.
Sample request:
curl --request GET \
--url https://api.gusto-demo.com/v1/employees/employee_id/home_addresses \
--header 'X-Gusto-API-Version: {version}' \
--header 'accept: application/json' \
--header 'authorization: Bearer {access_token}' \
Sample response:
[
{
"uuid": "{employee_address_uuid}",
"version": "{version}",
"employee_uuid": "{employee_uuid}",
"street_1": "300 3rd Street",
"street_2": "",
"city": "San Francisco",
"state": "CA",
"zip": "94107",
"country": "USA",
"active": false,
"effective_date": "1970-01-01",
"courtesy_withholding": false
},
{
"uuid": "{employee_address_uuid}",
"version": "{version}",
"employee_uuid": "{employee_uuid}",
"street_1": "1234 Milky Way",
"street_2": "",
"city": "Albany",
"state": "NY",
"zip": "94107",
"country": "USA",
"active": true,
"effective_date": "2022-01-31",
"courtesy_withholding": false
}
]
Work address
The work address of an employee will determine a companyβs state tax liability. The effective_date signifies when the employee began working at a given location.
Create an employeeβs work address
When an employee first onboards, create an employeeβs work address by using the POST /v1/employees/{employee_id}/work_addresses endpoint.
The address must first exist at the company level to create an employee's work address. If it does not, youβll need to create a company location by calling the POST /v1/companies/{company_id}/locations endpoint.
Sample request:
curl --request POST \
--url https://api.gusto-demo.com/v1/employees/employee_id/work_addresses \
--header 'X-Gusto-API-Version: 2024-04-01' \
--header 'accept: application/json' \
--header 'authorization: Bearer {access_token}' \
--header 'content-type: application/json' \
--data '
{
"location_uuid": "{company_location_uuid}",
"effective_date": "2023-05-15"
}
'
Sample response:
{
"uuid": "{work_address_uuid}",
"employee_uuid": "{employee_uuid}",
"location_uuid": "{location_uuid}",
"effective_date": "2020-01-31",
"active": true,
"version": "{version}",
"street_1": "977 Marks Viaduct",
"street_2": "Apt. 958",
"city": "Pink Hill",
"state": "NC",
"zip": "28572",
"country": "USA"
}
Update an employeeβs work address
If a company relocates, each employee's work address must be updated to reflect the new company location by using the PUT /v1/work_addresses/{work_address_uuid} endpoint.
Keeping work addresses up to date is important for accurate tax calculations and compliance. Use the
effective_dateparameter to ensure changes are applied at the correct time.
Sample request:
curl --request PUT \
--url https://api.gusto-demo.com/v1/work_addresses/work_address_uuid \
--header 'X-Gusto-API-Version: {version}' \
--header 'accept: application/json' \
--header 'authorization: Bearer {access_token}' \
--header 'content-type: application/json' \
--data '
{
"version": "{version}",
"location_uuid": "{location_uuid}",
"effective_date": "2023-05-15"
}
'
Sample response:
{
"uuid": "{work_address_uuid}",
"employee_uuid": "{employee_uuid}",
"location_uuid": "{location_uuid}",
"effective_date": "2020-01-31",
"active": true,
"version": "{version}",
"street_1": "977 Marks Viaduct",
"street_2": "Apt. 958",
"city": "Pink Hill",
"state": "NC",
"zip": "28572",
"country": "USA"
}
Get an employeeβs work address
Get the employeeβs work address by using the GET /v1/work_addresses/{work_address_uuid} endpoint.
The address with the status "active": true, is the employeeβs current active work address.
Sample request:
curl --request GET \
--url https://api.gusto-demo.com/v1/employees/employee_id/work_addresses \
--header 'X-Gusto-API-Version: {version}' \
--header 'accept: application/json' \
--header 'authorization: Bearer {access_token}' \
Sample response:
[
{
"uuid": "{work_address_uuid}",
"employee_uuid": "{employee_uuid}",
"location_uuid": "{location_uuid}",
"effective_date": "2021-01-01",
"active": false,
"version": "{version}",
"street_1": "91678 Farrell Meadow",
"street_2": "Apt. 835",
"city": "Phoenix",
"state": "AZ",
"zip": "85016",
"country": "USA"
},
{
"uuid": "{work_address_uuid}",
"employee_uuid": "{employee_uuid}",
"location_uuid": "{location_uuid}",
"effective_date": "2022-01-01",
"active": false,
"version": "{version}",
"street_1": "800 Adolfo Gardens",
"street_2": "Suite 419",
"city": "Bremen",
"state": "AL",
"zip": "35033",
"country": "USA"
}
]
Delete an employeeβs work address
Use the DELETE /v1/work_addresses/{work_address_uuid} endpoint to delete an employeeβs work address. An employeeβs active work address cannot be deleted so youβll need to designate another work address to be active first.
curl --request DELETE
--url <https://api.gusto-demo.com/v1/work_addresses/{work_address_uuid}>
--header 'accept: application/json'
--header 'authorization: Bearer access_token'
Updated 20 days ago