If the employee with the specified ID already exists, update it. Otherwise, create a new employee.

An employee may be created with a status of 'Incomplete' by specifying at least the minimum fields; firstName, surname, startDate, employmentType, address details, gender, legalStatus, nationality, coveredByEmploymentAct.
For an employee record to be considered 'Complete' the following groups of data are required:

  • Basic Details (Name, Start Date, Date of Birth, Gender and Address Details)
  • Pay Run Defaults (Default Pay Category, Pay Cycle and Location)
  • Locations (at least one)
  • Bank Account/s (at least one)
  • National Registration Identity (including Nationality, Legal Status)
  • Request

    POST https://apisg.yourpayroll.io/api/v2/business/{businessId}/employee/unstructured

    Path parameters

    Parameter name Value Description Additional
    businessId string Required

    Request body

    The request body takes a complete SgUnstructuredEmployeeModel resource, containing the following writable properties:

    {
        "anniversaryDate": "date-time",
        "applyFullCpfRate": "boolean",
        "automaticallyPayEmployee": "string",
        "bankAccount1_AccountName": "string",
        "bankAccount1_AccountNumber": "string",
        "bankAccount1_AllocatedPercentage": "double",
        "bankAccount1_BankSwift": "string",
        "bankAccount1_BranchCode": "string",
        "bankAccount1_FixedAmount": "double",
        "bankAccount2_AccountName": "string",
        "bankAccount2_AccountNumber": "string",
        "bankAccount2_AllocatedPercentage": "double",
        "bankAccount2_BankSwift": "string",
        "bankAccount2_BranchCode": "string",
        "bankAccount2_FixedAmount": "double",
        "bankAccount3_AccountName": "string",
        "bankAccount3_AccountNumber": "string",
        "bankAccount3_AllocatedPercentage": "double",
        "bankAccount3_BankSwift": "string",
        "bankAccount3_BranchCode": "string",
        "bankAccount3_FixedAmount": "double",
        "coveredByEmploymentAct": "string",
        "cpfExempt": "boolean",
        "dateCreated": "date-time",
        "dateOfBirth": "date-time",
        "emailAddress": "string",
        "emergencyContact1_Address": "string",
        "emergencyContact1_AlternateContactNumber": "string",
        "emergencyContact1_ContactNumber": "string",
        "emergencyContact1_Name": "string",
        "emergencyContact1_Relationship": "string",
        "emergencyContact2_Address": "string",
        "emergencyContact2_AlternateContactNumber": "string",
        "emergencyContact2_ContactNumber": "string",
        "emergencyContact2_Name": "string",
        "emergencyContact2_Relationship": "string",
        "employeeGroup": "string",
        "employingEntityId": "string",
        "employingEntityUen": "string",
        "employmentType": "string",
        "endDate": "date-time",
        "ethnicity": "string",
        "externalId": "string",
        "firstName": "string",
        "gender": "string",
        "homePhone": "string",
        "hoursPerDay": "double",
        "hoursPerWeek": "double",
        "id": "int32",
        "isEnabledForTimesheets": "string",
        "jobTitle": "string",
        "leaveAccrualStartDateType": "string",
        "leaveTemplate": "string",
        "leaveYearStart": "date-time",
        "legalStatus": "string",
        "locations": "string",
        "middleName": "string",
        "mobilePhone": "string",
        "nationalRegistrationIdentityExpiryDate": "date-time",
        "nationalRegistrationIdentityNumber": "string",
        "nationality": "string",
        "obtainedResidencyDate": "date-time",
        "overrideTemplateRate": "string",
        "payConditionRuleSet": "string",
        "payRateTemplate": "string",
        "paySchedule": "string",
        "paySlipNotificationType": "string",
        "postalAddressLine2": "string",
        "postalAddressLine3": "string",
        "postalAddressType": "string",
        "postalBlockNumber": "string",
        "postalCountry": "string",
        "postalLevelNumber": "string",
        "postalPostCode": "string",
        "postalState": "string",
        "postalStreetAddress": "string",
        "postalStreetName": "string",
        "postalSuburb": "string",
        "postalUnitNumber": "string",
        "preferredName": "string",
        "primaryLocation": "string",
        "primaryPayCategory": "string",
        "rate": "double",
        "rateUnit": "string",
        "religion": "string",
        "residentialAddressLine2": "string",
        "residentialAddressLine3": "string",
        "residentialAddressType": "string",
        "residentialBlockNumber": "string",
        "residentialCountry": "string",
        "residentialLevelNumber": "string",
        "residentialPostCode": "string",
        "residentialState": "string",
        "residentialStreetAddress": "string",
        "residentialStreetName": "string",
        "residentialSuburb": "string",
        "residentialUnitNumber": "string",
        "rosteringNotificationChoices": "string",
        "sdlExempt": "boolean",
        "startDate": "date-time",
        "status": "string",
        "surname": "string",
        "tags": "string",
        "terminationReason": "string",
        "tieredLeaveTemplate": "string",
        "title": "string",
        "workPhone": "string",
        "workTypes": "string"
    }

    Properties

    Name Type Description
    anniversaryDate date-time Nullable
    applyFullCpfRate boolean Nullable
    automaticallyPayEmployee string String
    bankAccount1_AccountName string String
    bankAccount1_AccountNumber string String
    bankAccount1_AllocatedPercentage double Nullable
    bankAccount1_BankSwift string String
    bankAccount1_BranchCode string String
    bankAccount1_FixedAmount double Nullable
    bankAccount2_AccountName string String
    bankAccount2_AccountNumber string String
    bankAccount2_AllocatedPercentage double Nullable
    bankAccount2_BankSwift string String
    bankAccount2_BranchCode string String
    bankAccount2_FixedAmount double Nullable
    bankAccount3_AccountName string String
    bankAccount3_AccountNumber string String
    bankAccount3_AllocatedPercentage double Nullable
    bankAccount3_BankSwift string String
    bankAccount3_BranchCode string String
    bankAccount3_FixedAmount double Nullable
    coveredByEmploymentAct string String
    cpfExempt boolean Nullable
    dateCreated date-time DateTime
    dateOfBirth date-time Nullable
    emailAddress string String
    emergencyContact1_Address string String
    emergencyContact1_AlternateContactNumber string String
    emergencyContact1_ContactNumber string String
    emergencyContact1_Name string String
    emergencyContact1_Relationship string String
    emergencyContact2_Address string String
    emergencyContact2_AlternateContactNumber string String
    emergencyContact2_ContactNumber string String
    emergencyContact2_Name string String
    emergencyContact2_Relationship string String
    employeeGroup string String
    employingEntityId string String
    employingEntityUen string String
    employmentType string String
    endDate date-time Nullable
    ethnicity string String
    externalId string String
    firstName string String
    gender string String
    homePhone string String
    hoursPerDay double Nullable
    hoursPerWeek double Nullable
    id int32 Int32
    isEnabledForTimesheets string String
    jobTitle string String
    leaveAccrualStartDateType string Nullable

    Possible values are:

    • EmployeeStartDate
    • SpecifiedDate
    leaveTemplate string String
    leaveYearStart date-time Nullable
    legalStatus string String
    locations string String
    middleName string String
    mobilePhone string String
    nationalRegistrationIdentityExpiryDate date-time Nullable
    nationalRegistrationIdentityNumber string String
    nationality string String
    obtainedResidencyDate date-time Nullable
    overrideTemplateRate string String
    payConditionRuleSet string String
    payRateTemplate string String
    paySchedule string String
    paySlipNotificationType string String
    postalAddressLine2 string String
    postalAddressLine3 string String
    postalAddressType string Nullable

    Possible values are:

    • LocalAddress
    • ForeignAddress
    • LocalCareOfAddress
    postalBlockNumber string String
    postalCountry string String
    postalLevelNumber string String
    postalPostCode string String
    postalState string String
    postalStreetAddress string String
    postalStreetName string String
    postalSuburb string String
    postalUnitNumber string String
    preferredName string String
    primaryLocation string String
    primaryPayCategory string String
    rate double Nullable
    rateUnit string String
    religion string String
    residentialAddressLine2 string String
    residentialAddressLine3 string String
    residentialAddressType string AddressTypeEnum

    Possible values are:

    • LocalAddress
    • ForeignAddress
    • LocalCareOfAddress
    residentialBlockNumber string String
    residentialCountry string String
    residentialLevelNumber string String
    residentialPostCode string String
    residentialState string String
    residentialStreetAddress string String
    residentialStreetName string String
    residentialSuburb string String
    residentialUnitNumber string String
    rosteringNotificationChoices string String
    sdlExempt boolean Nullable
    startDate date-time Nullable
    status string EmployeeStatusEnum

    Possible values are:

    • Active
    • Terminated
    • Incomplete
    surname string String
    tags string String
    terminationReason string String
    tieredLeaveTemplate string String
    title string String
    workPhone string String
    workTypes string String

    Response

    The following HTTP status codes may be returned, optionally with a response resource.

    Status code Description Resource
    200 OK

    OK

    EmployeeUpdateResponseModel