> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mygigsters.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update employee (v2)

> Identical to PUT /v1/employees/:employeeId, with one difference: changing the employee's fund identity (usi/smsf), name, gender, date of birth, address, or TFN re-triggers MVR (Member Verification) for this employee — these...

### Update Behavior

* All fields in the request body are optional
* Only provided fields will be updated
* Email uniqueness is validated per client - cannot update to an email that already exists for another employee under the same client
* `memberNumber`, `abn`, `taxFileNumber`, and `employmentPayrollNumber` are also validated for uniqueness per client on update
* Only a genuine change to a verification-relevant field (`usi`/`smsf`, `name`, `gender`, `dob`, `address`, `taxFileNumber`) re-triggers MVR — resending the same value does not

### Use Case

* Update employee super fund details (USI, member number) — this is also how you opt an existing (v1-created) employee into MVR verification
* Correct a member's name, date of birth, address, or TFN after a REJECTED verification
* Change employee address or contact information
* Modify employment/payroll number

### Request Parameters

**employeeId** `string` *required*

Employee ID

### Request Body

**email** `string`

Employee email address (must be valid email format). Must be unique per client - cannot match another employee's email under the same client.

**name** `object`

Employee name

**gender** `string (NOT_STATED, MALE, FEMALE, INDETERMINATE)`

Employee gender. Valid values: NOT\_STATED, MALE, FEMALE, INDETERMINATE

**dob** `object`

Date of birth. The member must be at least 18 years old. Day must be between 1 and 31.

**address** `object`

Employee address

**taxFileNumber** `string`

Tax File Number (TFN). Must be unique per client - cannot match another employee's TFN under the same client.

**usi** `string`

Unique Superannuation Identifier (USI) for the employee's chosen super fund/product. Changing this value (like name, gender, dob, address, or taxFileNumber) re-triggers MVR verification.

**memberNumber** `string`

Member number issued by the superannuation fund for this employee. This will be sent in the Superannuation clearing house member payload and used by the fund to directly match contributions to the member's account. Must be a string; cannot be blank or whitespace-only. Only alphanumeric characters, hyphens, underscores, and spaces are allowed — no other special characters. Must be unique per client - cannot match another employee's member number under the same client.

**employmentPayrollNumber** `string`

Employment / payroll number used by the employer to identify this employee in payroll systems. This will be sent as the employmentPayrollNumber field to Superannuation clearing house. Must be unique per client - cannot match another employee's payroll number under the same client.

**abn** `string`

Australian Business Number (ABN) for the employee (typically contractors). Stored for reference only and **not** sent to Superannuation clearing house APIs. Must be exactly 11 digits, numeric characters only, first digit cannot be zero. Can be presented with or without spaces (e.g., '34623710896' or '34 623 710 896'). Must be unique per client - cannot match another employee's ABN under the same client.

### Responses

| Code | Description |
| - | - |
| `200` | Employee updated successfully |
| `400` | Bad request - Invalid employee data or duplicate email (email addresses must be unique per client) |
| `401` | Unauthorized - Invalid authentication credentials |
| `404` | Employee not found |

### Response fields

**employeeId** `string`

Employee ID

**clientId** `string`

Client ID that this employee belongs to

**email** `string`

Employee email address (optional)

**name** `object`

Employee name

**properties**

**firstName** `string`

First or given name of the fund member as registered with their superannuation fund. Must match the name on the member's fund account for successful contribution allocation.

**lastName** `string`

Last name or surname of the fund member as registered with their superannuation fund. Must match exactly for the contribution to be successfully allocated.

**gender** `string`

Employee gender. Valid values: NOT\_STATED, MALE, FEMALE, INDETERMINATE

**dob** `object`

Date of birth. The member must be at least 18 years old. Day must be between 1 and 31.

**properties**

**year** `number`

Birth year (4 digits). Used along with month and day to verify member identity with the fund. Members must be at least 18 years old.

**month** `string`

Birth month as a full month name (uppercase). Must match the member's date of birth registered with their fund.

**day** `number`

Birth day of the month. Must be between 1 and 31. Ensure this matches the fund's records for successful member identification.

**address** `object`

Employee address

**properties**

**australianAddress** `object`

Australian residential address of the fund member. Used for member identification and correspondence if needed.

**taxFileNumber** `string`

Tax File Number (TFN)

**usi** `string`

Unique Superannuation Identifier (USI) for the employee's chosen super fund/product. Used when building validation and submission payloads to Superannuation clearing house.

**memberNumber** `string`

Member number issued by the superannuation fund for this employee. Sent in the Superannuation clearing house member payload to help the fund match contributions. Must be a string; cannot be blank or whitespace-only. Only alphanumeric characters, hyphens, underscores, and spaces are allowed — no other special characters.

**employmentPayrollNumber** `string`

Employment / payroll number used by the employer to identify this employee in payroll systems. Passed through as employmentPayrollNumber to Superannuation clearing house.

**abn** `string`

Australian Business Number (ABN) for the employee (typically contractors). Stored for reference only and not sent to Superannuation clearing house APIs. Must be exactly 11 digits, numeric characters only, first digit cannot be zero. Can be presented with or without spaces (e.g., '34623710896' or '34 623 710 896').

**mvrStatus** `string`

Current MVR (Member Verification) status for this employee. One of NOT\_APPLICABLE, PENDING, VERIFIED, WARNING, REJECTED, NOT\_SUPPORTED, TIMED\_OUT. If this update changed a verification-relevant field (usi/smsf, name, gender, dob, address, or taxFileNumber), this flips back to PENDING. See the [MVR Verification](https://docs.mygigsters.com/super/guides/member-verification.md) page for what each value means for payment eligibility.

**mvrStatusReason** `string`

Human-readable reason for the current mvrStatus.

**createdAt** `string`

Created timestamp

**updatedAt** `string`

Updated timestamp

> [accordion] Error response fields
>
> **success** `boolean`
>
> Always false for error responses, indicating the operation did not succeed.
>
> **statusCode** `integer`
>
> HTTP status code indicating the type of error. Common values: 400 (Bad Request), 401 (Unauthorized), 404 (Not Found), 500 (Server Error)
>
> **message** `string`
>
> Human-readable error message explaining what went wrong. May include specific details about which field or value caused the error.
>
> **errorCode** `integer`
>
> Superannuation clearing house-specific error code for programmatic error handling. Refer to the error code reference documentation for a complete list of codes.

```bash cURL theme={null}
curl 'https://qa-super.mygigsters.com.au/v2/employees/69536c2640b85eeded2bf2e9' -X PUT \
    -u "apiUsername:apiPassword"  \
    -H "Content-Type: application/json" --data '{"usi":"BTA0287AU","memberNumber":"MEM1001","employmentPayrollNumber":"EMP-000124"}'
```

```javascript Node.js theme={null}
const response = await fetch("https://qa-super.mygigsters.com.au/v2/employees/69536c2640b85eeded2bf2e9", {
  method: "PUT",
  headers: {
    Authorization: "Basic " + Buffer.from("apiUsername:apiPassword").toString("base64"),
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "usi": "BTA0287AU",
    "memberNumber": "MEM1001",
    "employmentPayrollNumber": "EMP-000124"
  }),
});

const data = await response.json();
console.log(data);
```

```python Python theme={null}
import requests

response = requests.put(
    "https://qa-super.mygigsters.com.au/v2/employees/69536c2640b85eeded2bf2e9",
    auth=("apiUsername", "apiPassword"),
    json={
        "usi": "BTA0287AU",
        "memberNumber": "MEM1001",
        "employmentPayrollNumber": "EMP-000124",
    },
)

print(response.json())
```

```ruby Ruby theme={null}
require "net/http"
require "json"
require "uri"

uri = URI("https://qa-super.mygigsters.com.au/v2/employees/69536c2640b85eeded2bf2e9")
request = Net::HTTP::Put.new(uri)
request.basic_auth("apiUsername", "apiPassword")
request["Content-Type"] = "application/json"
request.body = <<~JSON
  {
    "usi": "BTA0287AU",
    "memberNumber": "MEM1001",
    "employmentPayrollNumber": "EMP-000124"
  }
JSON

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts JSON.parse(response.body)
```

```php PHP theme={null}
<?php

$ch = curl_init("https://qa-super.mygigsters.com.au/v2/employees/69536c2640b85eeded2bf2e9");

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "PUT",
    CURLOPT_USERPWD => "apiUsername:apiPassword",
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => <<<'JSON'
{
  "usi": "BTA0287AU",
  "memberNumber": "MEM1001",
  "employmentPayrollNumber": "EMP-000124"
}
JSON,
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
```

```java Java theme={null}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;

public class Example {
    public static void main(String[] args) throws Exception {
        String credentials = Base64.getEncoder()
            .encodeToString("apiUsername:apiPassword".getBytes());

        String body = String.join("\n",
            "{",
            "  \"usi\": \"BTA0287AU\",",
            "  \"memberNumber\": \"MEM1001\",",
            "  \"employmentPayrollNumber\": \"EMP-000124\"",
            "}"
        );

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://qa-super.mygigsters.com.au/v2/employees/69536c2640b85eeded2bf2e9"))
            .header("Authorization", "Basic " + credentials)
            .header("Content-Type", "application/json")
            .method("PUT", HttpRequest.BodyPublishers.ofString(body))
            .build();

        HttpResponse<String> response = HttpClient.newHttpClient()
            .send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
```

```go Go theme={null}
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	body := strings.NewReader(`{
  "usi": "BTA0287AU",
  "memberNumber": "MEM1001",
  "employmentPayrollNumber": "EMP-000124"
}`)

	req, err := http.NewRequest("PUT", "https://qa-super.mygigsters.com.au/v2/employees/69536c2640b85eeded2bf2e9", body)
	if err != nil {
		panic(err)
	}
	req.SetBasicAuth("apiUsername", "apiPassword")
	req.Header.Set("Content-Type", "application/json")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	data, _ := io.ReadAll(res.Body)
	fmt.Println(string(data))
}
```

```csharp .NET theme={null}
using System.Net.Http.Headers;
using System.Text;

using var client = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Put, "https://qa-super.mygigsters.com.au/v2/employees/69536c2640b85eeded2bf2e9");
request.Headers.Authorization = new AuthenticationHeaderValue(
    "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("apiUsername:apiPassword")));
request.Content = new StringContent(@"{
  ""usi"": ""BTA0287AU"",
  ""memberNumber"": ""MEM1001"",
  ""employmentPayrollNumber"": ""EMP-000124""
}", Encoding.UTF8, "application/json");

var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
```

```json 200 theme={null}
{
  "employeeId": "69536c2640b85eeded2bf2e9",
  "clientId": "6944f5bc514fc0a1479bffdb",
  "email": "lisa.brown@email.com",
  "name": {
    "firstName": "Lisa",
    "lastName": "Brown"
  },
  "gender": "FEMALE",
  "dob": {
    "year": 1988,
    "month": "MAY",
    "day": 13
  },
  "address": {
    "australianAddress": {
      "line1": "640 Gordon Street",
      "line2": " ",
      "line3": " ",
      "line4": " ",
      "suburb": "MANLY VALE",
      "postCode": "2093",
      "stateOrTerritory": "NSW",
      "countryCode": "AU"
    }
  },
  "taxFileNumber": "182134556",
  "usi": "BTA0287AU",
  "memberNumber": "MEM1001",
  "employmentPayrollNumber": "EMP-000124",
  "mvrStatus": "PENDING",
  "mvrStatusReason": null,
  "createdAt": "2025-12-19T07:18:39.442Z",
  "updatedAt": "2025-12-19T10:30:00.000Z"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.