The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not. For the other groups they will only be validated and updated if they are included in the request. So as an example you may specify the tax details in the first create and then never submit them again so you would not include the tax group.
Personal Information
The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not.
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
id | Netsuite Internal Id | internalid | if set query will be treated as an update |
salutation | Salutation (Mr, Mrs etc) | salutation | |
firstname | First name of employee | firstname | |
lastname | Last name of employee | lastname | |
jobtitle | Employees's Position or Job Title | custentity_pr_position_title | field will be compared against existing job titles and will be added if not found (e.g Junior Developer) |
will also be populated into email for payslip field | |||
gender | gender | gender | m or f (note: if M or F is sent the field will be set to lower case) |
phone | phone number | phone | |
mobilephone | mobile number | mobilephone | |
hiredate | date of start of employment | hiredate | |
birthdate | date of birth | birthdate | |
subsidiary | subsidiary | subsidiary | NetSuite One World Only |
department | department | department | internal id of the netsuite department |
classification | classification | classification | internalid of the netsuite classification |
location | location | location | internalid of the netsuite location |
address.address1 | first line of residential address | addressbook.addr1 | |
address.address2 | second line of residential address | addressbook.addr2 | |
address.address3 | third line of residential address | addressbook.addr3 | |
address.city | city | city | Sydney, Melbourne, etc |
address.state | state | state | NSW, QLD, SA, NT, TAS, VIC, WA |
address.zip | postcode | zip | 2046 |
address.country | country | country | should be set to AU |
The following example shows a request to create a new employee passing just the personal details
{ "action" : "function", "function" : "syncemployee", "data" : { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" } };
Bank Details Information
The bank details will be used to set the primary bank details for payroll associated to the employee record
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
bankaccount.name | Bank Account Name | custentity_eft_bnk_acct_name | Account Name |
bankaccount.accountnumber | Bank Account Number | custentity_eft_bnk_acct_no | Account Number |
bankaccount.bsbnumber | Bank Account BSB | custentity_eft_bsbno | Account BSB |
bankaccount.paymentdescription | Bank Account Description | custentity_eft_bnk_acct_desc | Description that will appear in payee's statement normally Salary, Wages etc |
"data" : { "bankaccount" : { "name" : "Paul Simmons", "accountnumber" : "12345678", "bsbnumber" : "123456", "paymentdescription" : "Salary" }}
Tax Information
The tax section is used to set the employees TFN, tax scale. The TFN field is mandatory as is one of:
- Specifying the tax scale by name
- Specifying the tax scale by its ID (using the supported additional record type)
- Specifying the answers to the tax scale declarations
The fields required in the section are as follows:
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
tfn | The employees tax file number | custentity_pr_tfn | The tax field number is mandatory if not known it should be populated with a default (000000000 or 111111111) |
leaveloadingpercentage | The leave loading percentage | custentity_pr_pay_leave_loading | |
taxscale | The text description of a tax scale (e.g | custentity_employee_tax_scale | If specified this will attempt to match a tax scale (move to payroll) |
taxscaleid | The netsuite id of a tax scale (e.g. 1) | custentity_employee_tax_scale | the list of tax scales can be obtained using getList on tax scale (move to payroll |
declaration.residentstatus | whether the employee is resident for tax purposes | custentity_pr_resident_status | RESIDENT or NONRESIDENT |
declaration.claimtaxfreethreshold | whether the employee can claim tax free threshold | custentity_pr_claim_tax_free_threshold | True or False |
declaration.claimsenioroffset | whether the employee can claim the senior tax offset | custentity_pr_claim_senior_tax_offset | True or False |
declaration.seniorcouplestatus | if the employee can claim senior tax offset what is their couple status | custentity_pr_senior_couple_status | SINGLE, COUPLE, ILLNESSSEPERATEDCOUPLE, NONE |
declaration.sfss | Whether employee has SFSS Debt | custentity_pr_help_sfss_var | True or False |
declaration.help | Whether employee has HELP Debt | custentity_pr_help_sfss_var | True or False |
declaration.medicareexempt | Status of employee's medicare exemption | custentity_pr_ml_exemption | NONE, FULL or HALF |
declaration.payleaveloading | Whether employee receives leave loading | custentity_pr_pay_leave_loading | True or False |
// Example 1: Setting tax scale based on Tax Scale Name {"data" : { "tax" : { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" } }} // Example 2: Setting tax scale based on Tax Scale Id {"data" : { "tax" : { "tfn" : "12345678", "taxscaleid" : "23" } }} // Example 3: Setting tax scale based on Declaration {"data" : { "tax": { "tfn": '11111111', "declaration": { "claimtaxfreethreshold" : false, "claimsenioroffset" : false, "sfss": false, "help": false, } }, }}
Superfund Information
The super fund information will be used to perform two actions; create a new super fund record if one is not matched with the supplied details, then create or update an employee super fund record.
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
name | the name of the superfund | customrecord_pr_employee_super_funds.custrecord_esf_super_fund | |
membershipno | the membership number of the employee | customrecord_pr_employee_super_funds.custrecord_esf_membership_no | |
smsf | identifies whether the fund is a self managed superfund | custrecord_pr_sf_smsf | true or false |
abn | the ABN of the super fund | custrecord_pr_esf_abn | |
spin | the SPIN of the superfund | custrecord_pr_esf_spin | |
usi | the unique super fund identifier | custrecord_pr_esf_usi | This field is mandatory once superstream is imposed |
esa | the electronic service address | custrecord_pr_esf_esa | This field is mandatory for self managed superfunds |
Superstream
With the full introduction of superstream a number of these fields will become deprecated and changes will be made as to how the superfund is found (proposed to use USI)
Payroll Information
The payroll information will be used to configure the details of how the employee is paid
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
template | Pay template | n/a | (future development) |
country | Pay country | custentity_pr_country | AU |
paytype | Pay type for this employee | custentity_pay_type | SALARY or WAGE |
payrollid | Employees's payroll reference | custentity_pr_payroll_id | ID of employee for payroll purposes |
payfrequency | Pay frequency for this employee | custentity_pay_freq | WEEKLY or FORTNIGHTLY or MONTHLY |
state | The payroll state the employee is taxed within (this can be different from the residential address) | custentity_employee_payroll_state | NSW, QLD, SA, NT, TAS, VIC, WA |
ordinaryweekhours | Enter the number of ordinary hours for an employees normal working week. This field will populate the number of normal time hours for a waged employee and forms the basis for a number of basic payroll calculations such as overtime and accrued annual leave. A company default is set in payroll config. | custentity_pr_standard_week | Set to 0 if employee is pay from netsuite time |
payfromtime | Wages Employees only. Check this box if the employee is paid based on time logged in NetSuite. The employee will need to be wages and have a pay component of 0 hours with an hourly rate complete. | custentity_pr_pay_time | true or false |
accrueleavefromtime | Waged Employees Only - Check this box if the employee accrues leave based on the number of hours paid on the payslip (normal time and paid holiday time, does not include overtime) and NOT based on their standard working week. Do not check if salaried. | custentity_pr_accrue_leave_hours | true or false |
emailforpayslip | The email address used for sending payslips | custentity_pr_email_for_payslips | If empty this will default to the email specified on the employee body |
Note: On create of the employee record payroll fields will be defaulted from the payroll configuration record before the specific fields are specified
{ "data" : { "payroll" : { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } } }
An example of a full submission include bank detail, superfund, tax and payroll is shown below:
{ "action": "function", "function" : "syncemployee", "data": { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "Somewhere", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" }, "bankaccount": { "name": '', "bsb" : '', "accountno" : '' }, "superfund": { "name" : 'Host - plus', "abn" : "", "usi" : "", "esa" : "", "membershipno" : "10052345" }, "tax": { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" }, "payroll": { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } }
Overview
The add and update of employee records is managed by a separate action, rather than an action applied to the employee record, this allows greater granularity in validation, and to provide greater flexibility in how the information is provided and updated. The data submitted for the syncemployee function breaks down into the following groups:
- Personal Information
- Bank Account Information
- Super Fund Information
- Tax Information
- Payroll Information
- Pay Components
- Custom
The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not. For the other groups they will only be validated and updated if they are included in the request. So as an example you may specify the tax details in the first create and then never submit them again so you would not include the tax group.
Personal Information
The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not.
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
id | Netsuite Internal Id | internalid | if set query will be treated as an update |
salutation | Salutation (Mr, Mrs etc) | salutation | |
firstname | First name of employee | firstname | |
lastname | Last name of employee | lastname | |
jobtitle | Employees's Position or Job Title | custentity_pr_position_title | field will be compared against existing job titles and will be added if not found (e.g Junior Developer) |
will also be populated into email for payslip field | |||
gender | gender | gender | m or f (note: if M or F is sent the field will be set to lower case) |
phone | phone number | phone | |
mobilephone | mobile number | mobilephone | |
hiredate | date of start of employment | hiredate | |
birthdate | date of birth | birthdate | |
subsidiary | subsidiary | subsidiary | NetSuite One World Only |
department | department | department | internal id of the netsuite department |
classification | classification | classification | internalid of the netsuite classification |
location | location | location | internalid of the netsuite location |
address.address1 | first line of residential address | addressbook.addr1 | |
address.address2 | second line of residential address | addressbook.addr2 | |
address.address3 | third line of residential address | addressbook.addr3 | |
address.city | city | city | Sydney, Melbourne, etc |
address.state | state | state | NSW, QLD, SA, NT, TAS, VIC, WA |
address.zip | postcode | zip | 2046 |
address.country | country | country | should be set to AU |
The following example shows a request to create a new employee passing just the personal details
{ "action" : "function", "function" : "syncemployee", "data" : { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" } };
Bank Details Information
The bank details will be used to set the primary bank details for payroll associated to the employee record
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
bankaccount.name | Bank Account Name | custentity_eft_bnk_acct_name | Account Name |
bankaccount.accountnumber | Bank Account Number | custentity_eft_bnk_acct_no | Account Number |
bankaccount.bsbnumber | Bank Account BSB | custentity_eft_bsbno | Account BSB |
bankaccount.paymentdescription | Bank Account Description | custentity_eft_bnk_acct_desc | Description that will appear in payee's statement normally Salary, Wages etc |
"data" : { "bankaccount" : { "name" : "Paul Simmons", "accountnumber" : "12345678", "bsbnumber" : "123456", "paymentdescription" : "Salary" }}
Tax Information
The tax section is used to set the employees TFN, tax scale. The TFN field is mandatory as is one of:
- Specifying the tax scale by name
- Specifying the tax scale by its ID (using the supported additional record type)
- Specifying the answers to the tax scale declarations
The fields required in the section are as follows:
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
tfn | The employees tax file number | custentity_pr_tfn | The tax field number is mandatory if not known it should be populated with a default (000000000 or 111111111) |
leaveloadingpercentage | The leave loading percentage | custentity_pr_pay_leave_loading | |
taxscale | The text description of a tax scale (e.g | custentity_employee_tax_scale | If specified this will attempt to match a tax scale (move to payroll) |
taxscaleid | The netsuite id of a tax scale (e.g. 1) | custentity_employee_tax_scale | the list of tax scales can be obtained using getList on tax scale (move to payroll |
declaration.residentstatus | whether the employee is resident for tax purposes | custentity_pr_resident_status | RESIDENT or NONRESIDENT |
declaration.claimtaxfreethreshold | whether the employee can claim tax free threshold | custentity_pr_claim_tax_free_threshold | True or False |
declaration.claimsenioroffset | whether the employee can claim the senior tax offset | custentity_pr_claim_senior_tax_offset | True or False |
declaration.seniorcouplestatus | if the employee can claim senior tax offset what is their couple status | custentity_pr_senior_couple_status | SINGLE, COUPLE, ILLNESSSEPERATEDCOUPLE, NONE |
declaration.sfss | Whether employee has SFSS Debt | custentity_pr_help_sfss_var | True or False |
declaration.help | Whether employee has HELP Debt | custentity_pr_help_sfss_var | True or False |
declaration.medicareexempt | Status of employee's medicare exemption | custentity_pr_ml_exemption | NONE, FULL or HALF |
declaration.payleaveloading | Whether employee receives leave loading | custentity_pr_pay_leave_loading | True or False |
// Example 1: Setting tax scale based on Tax Scale Name {"data" : { "tax" : { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" } }} // Example 2: Setting tax scale based on Tax Scale Id {"data" : { "tax" : { "tfn" : "12345678", "taxscaleid" : "23" } }} // Example 3: Setting tax scale based on Declaration {"data" : { "tax": { "tfn": '11111111', "declaration": { "claimtaxfreethreshold" : false, "claimsenioroffset" : false, "sfss": false, "help": false, } }, }}
Superfund Information
The super fund information will be used to perform two actions; create a new super fund record if one is not matched with the supplied details, then create or update an employee super fund record.
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
name | the name of the superfund | customrecord_pr_employee_super_funds.custrecord_esf_super_fund | |
membershipno | the membership number of the employee | customrecord_pr_employee_super_funds.custrecord_esf_membership_no | |
smsf | identifies whether the fund is a self managed superfund | custrecord_pr_sf_smsf | true or false |
abn | the ABN of the super fund | custrecord_pr_esf_abn | |
spin | the SPIN of the superfund | custrecord_pr_esf_spin | |
usi | the unique super fund identifier | custrecord_pr_esf_usi | This field is mandatory once superstream is imposed |
esa | the electronic service address | custrecord_pr_esf_esa | This field is mandatory for self managed superfunds |
Superstream
With the full introduction of superstream a number of these fields will become deprecated and changes will be made as to how the superfund is found (proposed to use USI)
Payroll Information
The payroll information will be used to configure the details of how the employee is paid
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
template | Pay template | n/a | (future development) |
country | Pay country | custentity_pr_country | AU |
paytype | Pay type for this employee | custentity_pay_type | SALARY or WAGE |
payrollid | Employees's payroll reference | custentity_pr_payroll_id | ID of employee for payroll purposes |
payfrequency | Pay frequency for this employee | custentity_pay_freq | WEEKLY or FORTNIGHTLY or MONTHLY |
state | The payroll state the employee is taxed within (this can be different from the residential address) | custentity_employee_payroll_state | NSW, QLD, SA, NT, TAS, VIC, WA |
ordinaryweekhours | Enter the number of ordinary hours for an employees normal working week. This field will populate the number of normal time hours for a waged employee and forms the basis for a number of basic payroll calculations such as overtime and accrued annual leave. A company default is set in payroll config. | custentity_pr_standard_week | Set to 0 if employee is pay from netsuite time |
payfromtime | Wages Employees only. Check this box if the employee is paid based on time logged in NetSuite. The employee will need to be wages and have a pay component of 0 hours with an hourly rate complete. | custentity_pr_pay_time | true or false |
accrueleavefromtime | Waged Employees Only - Check this box if the employee accrues leave based on the number of hours paid on the payslip (normal time and paid holiday time, does not include overtime) and NOT based on their standard working week. Do not check if salaried. | custentity_pr_accrue_leave_hours | true or false |
emailforpayslip | The email address used for sending payslips | custentity_pr_email_for_payslips | If empty this will default to the email specified on the employee body |
Note: On create of the employee record payroll fields will be defaulted from the payroll configuration record before the specific fields are specified
{ "data" : { "payroll" : { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } } }
An example of a full submission include bank detail, superfund, tax and payroll is shown below:
{ "action": "function", "function" : "syncemployee", "data": { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "Somewhere", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" }, "bankaccount": { "name": '', "bsb" : '', "accountno" : '' }, "superfund": { "name" : 'Host - plus', "abn" : "", "usi" : "", "esa" : "", "membershipno" : "10052345" }, "tax": { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" }, "payroll": { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } }
Overview
The add and update of employee records is managed by a separate action, rather than an action applied to the employee record, this allows greater granularity in validation, and to provide greater flexibility in how the information is provided and updated. The data submitted for the syncemployee function breaks down into the following groups:
- Personal Information
- Bank Account Information
- Super Fund Information
- Tax Information
- Payroll Information
- Pay Components
- Custom
The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not. For the other groups they will only be validated and updated if they are included in the request. So as an example you may specify the tax details in the first create and then never submit them again so you would not include the tax group.
Personal Information
The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not.
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
id | Netsuite Internal Id | internalid | if set query will be treated as an update |
salutation | Salutation (Mr, Mrs etc) | salutation | |
firstname | First name of employee | firstname | |
lastname | Last name of employee | lastname | |
jobtitle | Employees's Position or Job Title | custentity_pr_position_title | field will be compared against existing job titles and will be added if not found (e.g Junior Developer) |
will also be populated into email for payslip field | |||
gender | gender | gender | m or f (note: if M or F is sent the field will be set to lower case) |
phone | phone number | phone | |
mobilephone | mobile number | mobilephone | |
hiredate | date of start of employment | hiredate | |
birthdate | date of birth | birthdate | |
subsidiary | subsidiary | subsidiary | NetSuite One World Only |
department | department | department | internal id of the netsuite department |
classification | classification | classification | internalid of the netsuite classification |
location | location | location | internalid of the netsuite location |
address.address1 | first line of residential address | addressbook.addr1 | |
address.address2 | second line of residential address | addressbook.addr2 | |
address.address3 | third line of residential address | addressbook.addr3 | |
address.city | city | city | Sydney, Melbourne, etc |
address.state | state | state | NSW, QLD, SA, NT, TAS, VIC, WA |
address.zip | postcode | zip | 2046 |
address.country | country | country | should be set to AU |
The following example shows a request to create a new employee passing just the personal details
{ "action" : "function", "function" : "syncemployee", "data" : { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" } };
Bank Details Information
The bank details will be used to set the primary bank details for payroll associated to the employee record
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
bankaccount.name | Bank Account Name | custentity_eft_bnk_acct_name | Account Name |
bankaccount.accountnumber | Bank Account Number | custentity_eft_bnk_acct_no | Account Number |
bankaccount.bsbnumber | Bank Account BSB | custentity_eft_bsbno | Account BSB |
bankaccount.paymentdescription | Bank Account Description | custentity_eft_bnk_acct_desc | Description that will appear in payee's statement normally Salary, Wages etc |
"data" : { "bankaccount" : { "name" : "Paul Simmons", "accountnumber" : "12345678", "bsbnumber" : "123456", "paymentdescription" : "Salary" }}
Tax Information
The tax section is used to set the employees TFN, tax scale. The TFN field is mandatory as is one of:
- Specifying the tax scale by name
- Specifying the tax scale by its ID (using the supported additional record type)
- Specifying the answers to the tax scale declarations
The fields required in the section are as follows:
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
tfn | The employees tax file number | custentity_pr_tfn | The tax field number is mandatory if not known it should be populated with a default (000000000 or 111111111) |
leaveloadingpercentage | The leave loading percentage | custentity_pr_pay_leave_loading | |
taxscale | The text description of a tax scale (e.g | custentity_employee_tax_scale | If specified this will attempt to match a tax scale (move to payroll) |
taxscaleid | The netsuite id of a tax scale (e.g. 1) | custentity_employee_tax_scale | the list of tax scales can be obtained using getList on tax scale (move to payroll |
declaration.residentstatus | whether the employee is resident for tax purposes | custentity_pr_resident_status | RESIDENT or NONRESIDENT |
declaration.claimtaxfreethreshold | whether the employee can claim tax free threshold | custentity_pr_claim_tax_free_threshold | True or False |
declaration.claimsenioroffset | whether the employee can claim the senior tax offset | custentity_pr_claim_senior_tax_offset | True or False |
declaration.seniorcouplestatus | if the employee can claim senior tax offset what is their couple status | custentity_pr_senior_couple_status | SINGLE, COUPLE, ILLNESSSEPERATEDCOUPLE, NONE |
declaration.sfss | Whether employee has SFSS Debt | custentity_pr_help_sfss_var | True or False |
declaration.help | Whether employee has HELP Debt | custentity_pr_help_sfss_var | True or False |
declaration.medicareexempt | Status of employee's medicare exemption | custentity_pr_ml_exemption | NONE, FULL or HALF |
declaration.payleaveloading | Whether employee receives leave loading | custentity_pr_pay_leave_loading | True or False |
// Example 1: Setting tax scale based on Tax Scale Name {"data" : { "tax" : { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" } }} // Example 2: Setting tax scale based on Tax Scale Id {"data" : { "tax" : { "tfn" : "12345678", "taxscaleid" : "23" } }} // Example 3: Setting tax scale based on Declaration {"data" : { "tax": { "tfn": '11111111', "declaration": { "claimtaxfreethreshold" : false, "claimsenioroffset" : false, "sfss": false, "help": false, } }, }}
Superfund Information
The super fund information will be used to perform two actions; create a new super fund record if one is not matched with the supplied details, then create or update an employee super fund record.
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
name | the name of the superfund | customrecord_pr_employee_super_funds.custrecord_esf_super_fund | |
membershipno | the membership number of the employee | customrecord_pr_employee_super_funds.custrecord_esf_membership_no | |
smsf | identifies whether the fund is a self managed superfund | custrecord_pr_sf_smsf | true or false |
abn | the ABN of the super fund | custrecord_pr_esf_abn | |
spin | the SPIN of the superfund | custrecord_pr_esf_spin | |
usi | the unique super fund identifier | custrecord_pr_esf_usi | This field is mandatory once superstream is imposed |
esa | the electronic service address | custrecord_pr_esf_esa | This field is mandatory for self managed superfunds |
Superstream
With the full introduction of superstream a number of these fields will become deprecated and changes will be made as to how the superfund is found (proposed to use USI)
Payroll Information
The payroll information will be used to configure the details of how the employee is paid
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
template | Pay template | n/a | (future development) |
country | Pay country | custentity_pr_country | AU |
paytype | Pay type for this employee | custentity_pay_type | SALARY or WAGE |
payrollid | Employees's payroll reference | custentity_pr_payroll_id | ID of employee for payroll purposes |
payfrequency | Pay frequency for this employee | custentity_pay_freq | WEEKLY or FORTNIGHTLY or MONTHLY |
state | The payroll state the employee is taxed within (this can be different from the residential address) | custentity_employee_payroll_state | NSW, QLD, SA, NT, TAS, VIC, WA |
ordinaryweekhours | Enter the number of ordinary hours for an employees normal working week. This field will populate the number of normal time hours for a waged employee and forms the basis for a number of basic payroll calculations such as overtime and accrued annual leave. A company default is set in payroll config. | custentity_pr_standard_week | Set to 0 if employee is pay from netsuite time |
payfromtime | Wages Employees only. Check this box if the employee is paid based on time logged in NetSuite. The employee will need to be wages and have a pay component of 0 hours with an hourly rate complete. | custentity_pr_pay_time | true or false |
accrueleavefromtime | Waged Employees Only - Check this box if the employee accrues leave based on the number of hours paid on the payslip (normal time and paid holiday time, does not include overtime) and NOT based on their standard working week. Do not check if salaried. | custentity_pr_accrue_leave_hours | true or false |
emailforpayslip | The email address used for sending payslips | custentity_pr_email_for_payslips | If empty this will default to the email specified on the employee body |
Note: On create of the employee record payroll fields will be defaulted from the payroll configuration record before the specific fields are specified
{ "data" : { "payroll" : { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } } }
An example of a full submission include bank detail, superfund, tax and payroll is shown below:
{ "action": "function", "function" : "syncemployee", "data": { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "Somewhere", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" }, "bankaccount": { "name": '', "bsb" : '', "accountno" : '' }, "superfund": { "name" : 'Host - plus', "abn" : "", "usi" : "", "esa" : "", "membershipno" : "10052345" }, "tax": { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" }, "payroll": { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } }
Overview
The add and update of employee records is managed by a separate action, rather than an action applied to the employee record, this allows greater granularity in validation, and to provide greater flexibility in how the information is provided and updated. The data submitted for the syncemployee function breaks down into the following groups:
- Personal Information
- Bank Account Information
- Super Fund Information
- Tax Information
- Payroll Information
- Pay Components
- Custom
The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not. For the other groups they will only be validated and updated if they are included in the request. So as an example you may specify the tax details in the first create and then never submit them again so you would not include the tax group.
Personal Information
The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not.
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
id | Netsuite Internal Id | internalid | if set query will be treated as an update |
salutation | Salutation (Mr, Mrs etc) | salutation | |
firstname | First name of employee | firstname | |
lastname | Last name of employee | lastname | |
jobtitle | Employees's Position or Job Title | custentity_pr_position_title | field will be compared against existing job titles and will be added if not found (e.g Junior Developer) |
will also be populated into email for payslip field | |||
gender | gender | gender | m or f (note: if M or F is sent the field will be set to lower case) |
phone | phone number | phone | |
mobilephone | mobile number | mobilephone | |
hiredate | date of start of employment | hiredate | |
birthdate | date of birth | birthdate | |
subsidiary | subsidiary | subsidiary | NetSuite One World Only |
department | department | department | internal id of the netsuite department |
classification | classification | classification | internalid of the netsuite classification |
location | location | location | internalid of the netsuite location |
address.address1 | first line of residential address | addressbook.addr1 | |
address.address2 | second line of residential address | addressbook.addr2 | |
address.address3 | third line of residential address | addressbook.addr3 | |
address.city | city | city | Sydney, Melbourne, etc |
address.state | state | state | NSW, QLD, SA, NT, TAS, VIC, WA |
address.zip | postcode | zip | 2046 |
address.country | country | country | should be set to AU |
The following example shows a request to create a new employee passing just the personal details
{ "action" : "function", "function" : "syncemployee", "data" : { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" } };
Bank Details Information
The bank details will be used to set the primary bank details for payroll associated to the employee record
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
bankaccount.name | Bank Account Name | custentity_eft_bnk_acct_name | Account Name |
bankaccount.accountnumber | Bank Account Number | custentity_eft_bnk_acct_no | Account Number |
bankaccount.bsbnumber | Bank Account BSB | custentity_eft_bsbno | Account BSB |
bankaccount.paymentdescription | Bank Account Description | custentity_eft_bnk_acct_desc | Description that will appear in payee's statement normally Salary, Wages etc |
"data" : { "bankaccount" : { "name" : "Paul Simmons", "accountnumber" : "12345678", "bsbnumber" : "123456", "paymentdescription" : "Salary" }}
Tax Information
The tax section is used to set the employees TFN, tax scale. The TFN field is mandatory as is one of:
- Specifying the tax scale by name
- Specifying the tax scale by its ID (using the supported additional record type)
- Specifying the answers to the tax scale declarations
The fields required in the section are as follows:
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
tfn | The employees tax file number | custentity_pr_tfn | The tax field number is mandatory if not known it should be populated with a default (000000000 or 111111111) |
leaveloadingpercentage | The leave loading percentage | custentity_pr_pay_leave_loading | |
taxscale | The text description of a tax scale (e.g | custentity_employee_tax_scale | If specified this will attempt to match a tax scale (move to payroll) |
taxscaleid | The netsuite id of a tax scale (e.g. 1) | custentity_employee_tax_scale | the list of tax scales can be obtained using getList on tax scale (move to payroll |
declaration.residentstatus | whether the employee is resident for tax purposes | custentity_pr_resident_status | RESIDENT or NONRESIDENT |
declaration.claimtaxfreethreshold | whether the employee can claim tax free threshold | custentity_pr_claim_tax_free_threshold | True or False |
declaration.claimsenioroffset | whether the employee can claim the senior tax offset | custentity_pr_claim_senior_tax_offset | True or False |
declaration.seniorcouplestatus | if the employee can claim senior tax offset what is their couple status | custentity_pr_senior_couple_status | SINGLE, COUPLE, ILLNESSSEPERATEDCOUPLE, NONE |
declaration.sfss | Whether employee has SFSS Debt | custentity_pr_help_sfss_var | True or False |
declaration.help | Whether employee has HELP Debt | custentity_pr_help_sfss_var | True or False |
declaration.medicareexempt | Status of employee's medicare exemption | custentity_pr_ml_exemption | NONE, FULL or HALF |
declaration.payleaveloading | Whether employee receives leave loading | custentity_pr_pay_leave_loading | True or False |
// Example 1: Setting tax scale based on Tax Scale Name {"data" : { "tax" : { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" } }} // Example 2: Setting tax scale based on Tax Scale Id {"data" : { "tax" : { "tfn" : "12345678", "taxscaleid" : "23" } }} // Example 3: Setting tax scale based on Declaration {"data" : { "tax": { "tfn": '11111111', "declaration": { "claimtaxfreethreshold" : false, "claimsenioroffset" : false, "sfss": false, "help": false, } }, }}
Superfund Information
The super fund information will be used to perform two actions; create a new super fund record if one is not matched with the supplied details, then create or update an employee super fund record.
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
name | the name of the superfund | customrecord_pr_employee_super_funds.custrecord_esf_super_fund | |
membershipno | the membership number of the employee | customrecord_pr_employee_super_funds.custrecord_esf_membership_no | |
smsf | identifies whether the fund is a self managed superfund | custrecord_pr_sf_smsf | true or false |
abn | the ABN of the super fund | custrecord_pr_esf_abn | |
spin | the SPIN of the superfund | custrecord_pr_esf_spin | |
usi | the unique super fund identifier | custrecord_pr_esf_usi | This field is mandatory once superstream is imposed |
esa | the electronic service address | custrecord_pr_esf_esa | This field is mandatory for self managed superfunds |
Superstream
With the full introduction of superstream a number of these fields will become deprecated and changes will be made as to how the superfund is found (proposed to use USI)
Payroll Information
The payroll information will be used to configure the details of how the employee is paid
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
template | Pay template | n/a | (future development) |
country | Pay country | custentity_pr_country | AU |
paytype | Pay type for this employee | custentity_pay_type | SALARY or WAGE |
payrollid | Employees's payroll reference | custentity_pr_payroll_id | ID of employee for payroll purposes |
payfrequency | Pay frequency for this employee | custentity_pay_freq | WEEKLY or FORTNIGHTLY or MONTHLY |
state | The payroll state the employee is taxed within (this can be different from the residential address) | custentity_employee_payroll_state | NSW, QLD, SA, NT, TAS, VIC, WA |
ordinaryweekhours | Enter the number of ordinary hours for an employees normal working week. This field will populate the number of normal time hours for a waged employee and forms the basis for a number of basic payroll calculations such as overtime and accrued annual leave. A company default is set in payroll config. | custentity_pr_standard_week | Set to 0 if employee is pay from netsuite time |
payfromtime | Wages Employees only. Check this box if the employee is paid based on time logged in NetSuite. The employee will need to be wages and have a pay component of 0 hours with an hourly rate complete. | custentity_pr_pay_time | true or false |
accrueleavefromtime | Waged Employees Only - Check this box if the employee accrues leave based on the number of hours paid on the payslip (normal time and paid holiday time, does not include overtime) and NOT based on their standard working week. Do not check if salaried. | custentity_pr_accrue_leave_hours | true or false |
emailforpayslip | The email address used for sending payslips | custentity_pr_email_for_payslips | If empty this will default to the email specified on the employee body |
Note: On create of the employee record payroll fields will be defaulted from the payroll configuration record before the specific fields are specified
{ "data" : { "payroll" : { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } } }
An example of a full submission include bank detail, superfund, tax and payroll is shown below:
{ "action": "function", "function" : "syncemployee", "data": { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "Somewhere", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" }, "bankaccount": { "name": '', "bsb" : '', "accountno" : '' }, "superfund": { "name" : 'Host - plus', "abn" : "", "usi" : "", "esa" : "", "membershipno" : "10052345" }, "tax": { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" }, "payroll": { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } }
Overview
The add and update of employee records is managed by a separate action, rather than an action applied to the employee record, this allows greater granularity in validation, and to provide greater flexibility in how the information is provided and updated. The data submitted for the syncemployee function breaks down into the following groups:
- Personal Information
- Bank Account Information
- Super Fund Information
- Tax Information
- Payroll Information
- Pay Components
- Custom
The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not. For the other groups they will only be validated and updated if they are included in the request. So as an example you may specify the tax details in the first create and then never submit them again so you would not include the tax group.
Personal Information
The personal information should always be included in the create and subsequent updates and the values are compared against the existing record to decide whether to update or not.
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
id | Netsuite Internal Id | internalid | if set query will be treated as an update |
salutation | Salutation (Mr, Mrs etc) | salutation | |
firstname | First name of employee | firstname | |
lastname | Last name of employee | lastname | |
jobtitle | Employees's Position or Job Title | custentity_pr_position_title | field will be compared against existing job titles and will be added if not found (e.g Junior Developer) |
will also be populated into email for payslip field | |||
gender | gender | gender | m or f (note: if M or F is sent the field will be set to lower case) |
phone | phone number | phone | |
mobilephone | mobile number | mobilephone | |
hiredate | date of start of employment | hiredate | |
birthdate | date of birth | birthdate | |
subsidiary | subsidiary | subsidiary | NetSuite One World Only |
department | department | department | internal id of the netsuite department |
classification | classification | classification | internalid of the netsuite classification |
location | location | location | internalid of the netsuite location |
address.address1 | first line of residential address | addressbook.addr1 | |
address.address2 | second line of residential address | addressbook.addr2 | |
address.address3 | third line of residential address | addressbook.addr3 | |
address.city | city | city | Sydney, Melbourne, etc |
address.state | state | state | NSW, QLD, SA, NT, TAS, VIC, WA |
address.zip | postcode | zip | 2046 |
address.country | country | country | should be set to AU |
The following example shows a request to create a new employee passing just the personal details
{ "action" : "function", "function" : "syncemployee", "data" : { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" } };
Bank Details Information
The bank details will be used to set the primary bank details for payroll associated to the employee record
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
bankaccount.name | Bank Account Name | custentity_eft_bnk_acct_name | Account Name |
bankaccount.accountnumber | Bank Account Number | custentity_eft_bnk_acct_no | Account Number |
bankaccount.bsbnumber | Bank Account BSB | custentity_eft_bsbno | Account BSB |
bankaccount.paymentdescription | Bank Account Description | custentity_eft_bnk_acct_desc | Description that will appear in payee's statement normally Salary, Wages etc |
"data" : { "bankaccount" : { "name" : "Paul Simmons", "accountnumber" : "12345678", "bsbnumber" : "123456", "paymentdescription" : "Salary" }}
Tax Information
The tax section is used to set the employees TFN, tax scale. The TFN field is mandatory as is one of:
- Specifying the tax scale by name
- Specifying the tax scale by its ID (using the supported additional record type)
- Specifying the answers to the tax scale declarations
The fields required in the section are as follows:
Request Field | Description | NetSuite ID | Memo |
---|---|---|---|
tfn | The employees tax file number | custentity_pr_tfn | The tax field number is mandatory if not known it should be populated with a default (000000000 or 111111111) |
leaveloadingpercentage | The leave loading percentage | custentity_pr_pay_leave_loading | |
taxscale | The text description of a tax scale (e.g | custentity_employee_tax_scale | If specified this will attempt to match a tax scale (move to payroll) |
taxscaleid | The netsuite id of a tax scale (e.g. 1) | custentity_employee_tax_scale | the list of tax scales can be obtained using getList on tax scale (move to payroll |
declaration.residentstatus | whether the employee is resident for tax purposes | custentity_pr_resident_status | RESIDENT or NONRESIDENT |
declaration.claimtaxfreethreshold | whether the employee can claim tax free threshold | custentity_pr_claim_tax_free_threshold | True or False |
declaration.claimsenioroffset | whether the employee can claim the senior tax offset | custentity_pr_claim_senior_tax_offset | True or False |
declaration.seniorcouplestatus | if the employee can claim senior tax offset what is their couple status | custentity_pr_senior_couple_status | SINGLE, COUPLE, ILLNESSSEPERATEDCOUPLE, NONE |
declaration.sfss | Whether employee has SFSS Debt | custentity_pr_help_sfss_var | True or False |
declaration.help | Whether employee has HELP Debt | custentity_pr_help_sfss_var | True or False |
declaration.medicareexempt | Status of employee's medicare exemption | custentity_pr_ml_exemption | NONE, FULL or HALF |
declaration.payleaveloading | Whether employee receives leave loading | custentity_pr_pay_leave_loading | True or False |
// Example 1: Setting tax scale based on Tax Scale Name {"data" : { "tax" : { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" } }} // Example 2: Setting tax scale based on Tax Scale Id {"data" : { "tax" : { "tfn" : "12345678", "taxscaleid" : "23" } }} // Example 3: Setting tax scale based on Declaration {"data" : { "tax": { "tfn": '11111111', "declaration": { "claimtaxfreethreshold" : false, "claimsenioroffset" : false, "sfss": false, "help": false, } }, }}
Superfund Information
The super fund information will be used to perform two actions; create a new super fund record if one is not matched with the supplied details, then create or update an employee super fund record.
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
name | the name of the superfund | customrecord_pr_employee_super_funds.custrecord_esf_super_fund | |
membershipno | the membership number of the employee | customrecord_pr_employee_super_funds.custrecord_esf_membership_no | |
smsf | identifies whether the fund is a self managed superfund | custrecord_pr_sf_smsf | true or false |
abn | the ABN of the super fund | custrecord_pr_esf_abn | |
spin | the SPIN of the superfund | custrecord_pr_esf_spin | |
usi | the unique super fund identifier | custrecord_pr_esf_usi | This field is mandatory once superstream is imposed |
esa | the electronic service address | custrecord_pr_esf_esa | This field is mandatory for self managed superfunds |
Superstream
With the full introduction of superstream a number of these fields will become deprecated and changes will be made as to how the superfund is found (proposed to use USI)
Payroll Information
The payroll information will be used to configure the details of how the employee is paid
Request Field | Description | Netsuite ID | Memo |
---|---|---|---|
template | Pay template | n/a | (future development) |
country | Pay country | custentity_pr_country | AU |
paytype | Pay type for this employee | custentity_pay_type | SALARY or WAGE |
payrollid | Employees's payroll reference | custentity_pr_payroll_id | ID of employee for payroll purposes |
payfrequency | Pay frequency for this employee | custentity_pay_freq | WEEKLY or FORTNIGHTLY or MONTHLY |
state | The payroll state the employee is taxed within (this can be different from the residential address) | custentity_employee_payroll_state | NSW, QLD, SA, NT, TAS, VIC, WA |
ordinaryweekhours | Enter the number of ordinary hours for an employees normal working week. This field will populate the number of normal time hours for a waged employee and forms the basis for a number of basic payroll calculations such as overtime and accrued annual leave. A company default is set in payroll config. | custentity_pr_standard_week | Set to 0 if employee is pay from netsuite time |
payfromtime | Wages Employees only. Check this box if the employee is paid based on time logged in NetSuite. The employee will need to be wages and have a pay component of 0 hours with an hourly rate complete. | custentity_pr_pay_time | true or false |
accrueleavefromtime | Waged Employees Only - Check this box if the employee accrues leave based on the number of hours paid on the payslip (normal time and paid holiday time, does not include overtime) and NOT based on their standard working week. Do not check if salaried. | custentity_pr_accrue_leave_hours | true or false |
emailforpayslip | The email address used for sending payslips | custentity_pr_email_for_payslips | If empty this will default to the email specified on the employee body |
Note: On create of the employee record payroll fields will be defaulted from the payroll configuration record before the specific fields are specified
{ "data" : { "payroll" : { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } } }
An example of a full submission include bank detail, superfund, tax and payroll is shown below:
{ "action": "function", "function" : "syncemployee", "data": { "salutation": "Mr", "firstname": "Test", "lastname": "Person", "email": "test@infinetcloud.com", "hiredate": "2013-05-05", "birthdate": "1976-01-12", "subsidiary": "2", "address": { "address1": "2 Kings Park Circuit", "address2": "Five Dock", "address3": "Somewhere", "city": "Sydney", "state": "NSW", "zip": "2046", "country": "AU" }, "bankaccount": { "name": '', "bsb" : '', "accountno" : '' }, "superfund": { "name" : 'Host - plus', "abn" : "", "usi" : "", "esa" : "", "membershipno" : "10052345" }, "tax": { "tfn" : "12345678", "taxscale" : "No tax-free threshold (1a) with HELP debt" }, "payroll": { "country" : "AU", "paytype" : "SALARY", "payrollid" : "PR12345", "payfrequency" : "FORTNIGHTLY", "state" : "QLD", "ordinaryweekhours" : "38", "payfromtime" : True, "accrueleavefromtime" : "False", "emailforpayslip" : "personalemail@gmail.com" } }