Employee Record API
Create, read, update, and delete employee records using the NetSuite REST API.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/employee | List all employees |
GET | /record/v1/employee/{id} | Get specific employee |
POST | /record/v1/employee | Create new employee |
PATCH | /record/v1/employee/{id} | Update existing employee |
DELETE | /record/v1/employee/{id} | Delete employee |
Key Fields
Identification
| Field | Type | Description | Required |
|---|---|---|---|
id | string | Internal ID (read-only) | - |
entityId | string | Employee ID | Yes (if not auto) |
autoName | boolean | Auto-generate ID | No |
firstName | string | First name | Yes |
middleName | string | Middle name | No |
lastName | string | Last name | Yes |
subsidiary | object | Primary subsidiary | Yes (if OneWorld) |
Contact Information
| Field | Type | Description |
|---|---|---|
email | string | Primary email address |
altEmail | string | Alternate email |
phone | string | Work phone |
mobilePhone | string | Mobile phone |
officePhone | string | Office phone |
Employment Details
| Field | Type | Description |
|---|---|---|
supervisor | object | Supervisor/manager |
department | object | Department |
class | object | Classification |
location | object | Location |
title | string | Job title |
hireDate | string | Hire date (ISO 8601) |
releaseDate | string | Termination date |
employeeType | object | Employee type (Full-time, Part-time, etc.) |
employeeStatus | object | Employment status |
Compensation
| Field | Type | Description |
|---|---|---|
laborCost | number | Hourly/daily cost rate |
purchaseOrderLimit | number | PO approval limit |
purchaseOrderApprovalLimit | number | PO dollar limit |
approvalLimit | number | Expense approval limit |
Access & Permissions
| Field | Type | Description |
|---|---|---|
giveAccess | boolean | Grant login access |
accessRole | object | NetSuite role (if giveAccess=true) |
isInactive | boolean | Inactive flag |
Payroll (if enabled)
| Field | Type | Description |
|---|---|---|
payFrequency | object | Pay frequency |
defaultExpenseReportCurrency | object | Expense currency |
socialSecurityNumber | string | SSN (encrypted) |
Sublists
| Field | Type | Description |
|---|---|---|
addressBook | collection | Employee addresses |
rolesList | collection | Additional roles (if giveAccess=true) |
Example: Create Employee
POST /record/v1/employee
Content-Type: application/json
{
"firstName": "Jane",
"lastName": "Doe",
"entityId": "EMP-001",
"subsidiary": {
"id": "1"
},
"email": "jane.doe@company.com",
"phone": "555-0400",
"mobilePhone": "555-0401",
"title": "Sales Manager",
"department": {
"id": "3"
},
"location": {
"id": "1"
},
"supervisor": {
"id": "100"
},
"hireDate": "2025-01-15",
"employeeType": {
"id": "1"
},
"laborCost": 45.00,
"giveAccess": true,
"accessRole": {
"id": "3"
}
}
Response
{
"links": [
{
"rel": "self",
"href": "https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/employee/250"
}
],
"id": "250",
"refName": "Jane Doe",
"entityId": "EMP-001",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@company.com",
"hireDate": "2025-01-15",
"isInactive": false
}
Example: Update Employee
PATCH /record/v1/employee/250
Content-Type: application/json
{
"title": "Senior Sales Manager",
"laborCost": 50.00,
"mobilePhone": "555-0999"
}
Example: Grant System Access
PATCH /record/v1/employee/250
Content-Type: application/json
{
"giveAccess": true,
"accessRole": {
"id": "3"
},
"email": "jane.doe@company.com"
}
Email Required for Access
When giveAccess=true, the employee must have a valid email address. NetSuite will send login credentials to this email.
Example: Terminate Employee
PATCH /record/v1/employee/250
Content-Type: application/json
{
"releaseDate": "2025-12-31",
"isInactive": true,
"giveAccess": false
}
Query Filters
Find Active Employees
GET /record/v1/employee?q=isInactive=false
Find by Department
GET /record/v1/employee?q=department='3'
Find by Supervisor
GET /record/v1/employee?q=supervisor='100'
Find by Hire Date
GET /record/v1/employee?q=hireDate >= '2025-01-01'
Important Notes
Required Fields
firstNameandlastNameare always required- OneWorld:
subsidiaryis required - System Access:
emailrequired ifgiveAccess=true
Employee vs Human Resources
This is the basic employee record. NetSuite SuiteCloud Plus includes an enhanced Human Resources module with additional fields for:
- Benefits
- Performance reviews
- Training
- Certifications
Payroll Integration
If using NetSuite SuiteSuccess or integrated payroll:
- Additional payroll fields become available
socialSecurityNumberis stored encrypted- Payroll fields require specific permissions
See Also
- Expense Report - Employee expense reports
- Department - Department setup
- Location - Location setup