Skip to main content

Employee Record API

Create, read, update, and delete employee records using the NetSuite REST API.


Endpoints

MethodEndpointDescription
GET/record/v1/employeeList all employees
GET/record/v1/employee/{id}Get specific employee
POST/record/v1/employeeCreate new employee
PATCH/record/v1/employee/{id}Update existing employee
DELETE/record/v1/employee/{id}Delete employee

Key Fields

Identification

FieldTypeDescriptionRequired
idstringInternal ID (read-only)-
entityIdstringEmployee IDYes (if not auto)
autoNamebooleanAuto-generate IDNo
firstNamestringFirst nameYes
middleNamestringMiddle nameNo
lastNamestringLast nameYes
subsidiaryobjectPrimary subsidiaryYes (if OneWorld)

Contact Information

FieldTypeDescription
emailstringPrimary email address
altEmailstringAlternate email
phonestringWork phone
mobilePhonestringMobile phone
officePhonestringOffice phone

Employment Details

FieldTypeDescription
supervisorobjectSupervisor/manager
departmentobjectDepartment
classobjectClassification
locationobjectLocation
titlestringJob title
hireDatestringHire date (ISO 8601)
releaseDatestringTermination date
employeeTypeobjectEmployee type (Full-time, Part-time, etc.)
employeeStatusobjectEmployment status

Compensation

FieldTypeDescription
laborCostnumberHourly/daily cost rate
purchaseOrderLimitnumberPO approval limit
purchaseOrderApprovalLimitnumberPO dollar limit
approvalLimitnumberExpense approval limit

Access & Permissions

FieldTypeDescription
giveAccessbooleanGrant login access
accessRoleobjectNetSuite role (if giveAccess=true)
isInactivebooleanInactive flag

Payroll (if enabled)

FieldTypeDescription
payFrequencyobjectPay frequency
defaultExpenseReportCurrencyobjectExpense currency
socialSecurityNumberstringSSN (encrypted)

Sublists

FieldTypeDescription
addressBookcollectionEmployee addresses
rolesListcollectionAdditional 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

  • firstName and lastName are always required
  • OneWorld: subsidiary is required
  • System Access: email required if giveAccess=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
  • socialSecurityNumber is stored encrypted
  • Payroll fields require specific permissions

See Also