---
title: Create or update user information
slug: api/create-or-update-user-info
description: API reference for POST endpoint: Create or update user information.
docTags: 
createdAt: 2023-11-24T06:25:09.159Z
---

:::hint{type="success"}
<font color="#3b9f0f">**POST**</font>**&#x20;/api/add-edit-staff**
:::

Creates or updates staff information using the user ID in your system (external ID). This endpoint is used for a single staff only.



**Request**

***

<font color="#00a2e9">**Body parameters**</font>

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**customer\_id** <font color="#a7b4c3">integer Required</font>
:::

:::VerticalSplitItem
The unique Marco identifier for your company.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**customer\_system\_id** <font color="#a7b4c3">string Required</font>
:::

:::VerticalSplitItem
The staff's unique identifier in your company's system.

Example: 50
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**customer\_system\_id\_type** <font color="#a7b4c3">string Required</font>
:::

:::VerticalSplitItem
The name of your system.

Example: PS
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**name** <font color="#a7b4c3">string </font><font color="#a7b4c3">Required</font>
:::

:::VerticalSplitItem
The staff's full name.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**system\_email** <font color="#a7b4c3">string </font><font color="#a7b4c3">Required</font>
:::

:::VerticalSplitItem
The staff's email, used to log into Marco.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**country** <font color="#a7b4c3">string </font><font color="#a7b4c3">Required</font>
:::

:::VerticalSplitItem
The staff's country of residence, formatted as an [ISO Alpha-2 code](https://www.iban.com/country-codes).

Example: JP
:::
::::

:::hint{type="info"}
**Note:**
If you are changing the staff's `country`, you must fill in`old_country` and `new_country_effective_date`.
:::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**job\_title** <font color="#a7b4c3">string Required</font>&#x20;
:::

:::VerticalSplitItem
The staff's job title.

Example: HR Manager
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**job\_start\_date** <font color="#a7b4c3">string</font><font color="#a7b4c3"> Required</font>&#x20;
:::

:::VerticalSplitItem
The staff's job start date, formatted as YYYY-MM-DD.

Example: 2020/01/31
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**staff\_type** <font color="#a7b4c3">string</font><font color="#a7b4c3"> Required</font>&#x20;
:::

:::VerticalSplitItem
The staff's service type.

Valid values: System, Payroll, HRO, EOR
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**is\_manager** <font color="#a7b4c3">boolean Optional</font>
:::

:::VerticalSplitItem
Whether the staff is a manager.

Default: False
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**is\_employee** <font color="#a7b4c3">boolean Optional</font>
:::

:::VerticalSplitItem
Whether the staff is an employee.

Default: True
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**is\_intern** <font color="#a7b4c3">boolean Optional</font>
:::

:::VerticalSplitItem
Whether the staff is an intern. Cannot be true if any of the previous boolean values are true.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**birthdate** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's date of birth, formatted as YYYY-MM-DD.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**gender** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's gender.

Valid values: Female, Male
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**highest\_education** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's highest education.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**nationality** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's nationality, formatted as the country's [ISO Alpha-2 code](https://www.iban.com/country-codes).
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**personal\_email** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's personal email.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**phone** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's phone number.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**phone\_country** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The country code for the staff's phone number, formatted as the country's [ISO Alpha-2 code](https://www.iban.com/country-codes).
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**emergency\_name** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The name of the staff's emergency contact.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**emergency\_email** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The email belonging to the staff's emergency contact.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**emergency\_phone** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The phone number belonging to the staff's emergency contact.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**emergency\_phone\_country** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The country code for the staff's emergency contact's phone number, formatted as the country's [ISO Alpha-2 code](https://www.iban.com/country-codes).
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**emergency\_relationship** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's relationship to the emergency contact.


:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**passport\_number** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's passport number.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**passport\_issue\_date** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's passport issue date, formatted as YYYY-MM-DD.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**passport\_issuing\_country** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's passport issuing country, formatted as an [ISO Alpha-2 code](https://www.iban.com/country-codes).
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**passport\_expiry\_date** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's passport expiry date, formatted as YYYY-MM-DD.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**reporting\_officer** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's reporting manager.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**ec\_type** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's employment contract type.

Valid values: Fixed-term, Indefinite
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**ec\_entity\_id** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The unique identifier for the business entity that holds the employment relationship with the staff.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**ec\_entity\_system\_id\_type** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The system that stores the ec\_entity\_id.

Valid values: Marco, Customer
Use "Marco" if the ID is stored in Marco; otherwise use "Customer".
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**ec\_start\_date** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The start date for the staff's employment contract, formatted as YYYY-MM-DD. This may differ from the job start date if multiple contracts have been signed in succession.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**ec\_end\_date** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The end date for the staff's employment contract, formatted as YYYY-MM-DD.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**probation\_end\_date** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's probation end date, formatted as YYYY-MM-DD.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**last\_working\_day** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's last working day, formatted as YYYY-MM-DD.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**offboarding\_reason** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's offboarding reason.

Valid values: Involuntary, Voluntary
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**location** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's work location.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**work\_email** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's work email.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**customer\_data\_type** <font color="#a7b4c3">array\[object\] </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
Additional data specified by your company. These data fields need to be configured in Marco as a Company Data Type before it can be sent via the endpoint.

Example: \[\{"name":"Department","value":"Technology"},\{"name":"Rank","value":"P2"}]
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
customer\_data\_type.**name** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
Custom data field name.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
customer\_data\_type.**value** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's value for the custom field.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**old\_country** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
The staff's previous country of residence, formatted as an [ISO Alpha-2 code](https://www.iban.com/country-codes).

Required only if you are updating the staff's `country`.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**new\_country\_effective\_date** <font color="#a7b4c3">string </font><font color="#a7b4c3">Optional</font>
:::

:::VerticalSplitItem
Effective date of the staff's relocation, formatted as YYYY-MM-DD.

Required only if you are updating the staff's `country`.
:::
::::

***



**Example Requests**

***

::::CodeDrawer{title="Example" isResponseExpanded="true"}
:::CodeblockTabsExamples
```curl
curl -X POST 'https://api.marcopayroll.com/api:benKoCK8/api/add-edit-staff' \
-H 'Content-Type: application/json' \
-H 'Authorization: $AUTH_TOKEN' \
-d '{
  "customer_id": 2,
  "customer_system_id": "50",
  "customer_system_id_type": "PS"
  "name": "Li Lei",
  "system_email": "lilei@mail.com",
  "country": "CN",
  "job_title": "Product Manager",
  "job_start_date": "2020-01-31",
  "staff_type": "Payroll",
  "is_manager": true,
  "is_employee": true,
  "is_intern": false,
  "birthdate": "1980-01-04",
  "gender": "Male",
  "highest_education": "University",
  "nationality": "CN",
  “personal_email”: "ll@mail.com",
  “phone”: "17623453456",
  “phone_country”: "CN",
  “emergency_name”: "Han Meimei",
  “emergency_email”: "hmm@mail.com",
  "emergency_phone": "18876546789",
  "emergency_phone_country": "CN",
  "emergency_relationship": "Mother",
  "passport_number": "EG8213789",
  "passport_issue_date": "2020-01-03",
  "passport_issuing_country": "CN",
  "passport_expiry_date": "2024-01-02",
  "reporting_officer": "Tuan Tuan",
  "ec_type": "Fixed-term",
  "ec_entity_id": "",
  "ec_entity_system_id_type": "",
  "ec_start_date": "2020-01-31",
  "ec_end_date": "2025-07-01",
  "probation_end_date": "2020-07-01",
  "last_working_day": "",
  "offboarding_reason": "",
  "location": "Beijing",
  "work_email": "lilei@mail.com",
  "customer_data_type": [
    {
      "name": "Department",
      "value": "Technology"
    },
    {
      "name": "Rank",
      "value": "P2"
    }
  ]
  "old_country": "",
  "new_country_effective_date": ""
}'
```

```python
import requests

url = "https://api.marcopayroll.com/api/benKoCK8/api/add-edit-staff"

payload={
  "customer_id": 2,
  "customer_system_id": "50",
  "customer_system_id_type": "PS"
  "name": "Li Lei",
  "system_email": "lilei@mail.com",
  "country": "CN",
  "job_title": "Product Manager",
  "job_start_date": "2020-01-31",
  "staff_type": "Payroll",
  "is_manager": true,
  "is_employee": true,
  "is_intern": false,
  "birthdate": "1980-01-04",
  "gender": "Male",
  "highest_education": "University",
  "nationality": "CN",
  “personal_email”: "ll@mail.com",
  “phone”: "17623453456",
  “phone_country”: "CN",
  “emergency_name”: "Han Meimei",
  “emergency_email”: "hmm@mail.com",
  "emergency_phone": "18876546789",
  "emergency_phone_country": "CN",
  "emergency_relationship": "Mother",
  "passport_number": "EG8213789",
  "passport_issue_date": "2020-01-03",
  "passport_issuing_country": "CN",
  "passport_expiry_date": "2024-01-02",
  "reporting_officer": "Tuan Tuan",
  "ec_type": "Fixed-term",
  "ec_entity_id": "",
  "ec_entity_system_id_type": "",
  "ec_start_date": "2020-01-31",
  "ec_end_date": "2025-07-01",
  "probation_end_date": "2020-07-01",
  "last_working_day": "",
  "offboarding_reason": "",
  "location": "Beijing",
  "work_email": "lilei@mail.com",
  "customer_data_type": [
    {
      "name": "Department",
      "value": "Technology"
    },
    {
      "name": "Rank",
      "value": "P2"
    }
  ]
  "old_country": "",
  "new_country_effective_date": ""
}

headers = {
  "accept": "application/json",
  "Authorization": "YOUR_AUTH_TOKEN"
}

response = requests.post(url, headers=headers, data=payload)

print(response.text)
```
:::

:::CodeblockTabsResponses
```javascript
{
  "user": {
    "name": "Li Lei",
    "role": "Staff",
    "system_email": "lilei@mail.com",
    "id": 1348,
    "country": "CN",
    "status": "Regular",
    "offboarding_reason": "",
    "birthdate": "",
    "gender": "Male",
    "highest_education": "University",
    "nationality": "CN",
    "personal_email": "ll@mail.com",
    "phone": "8617623453456",
    "emergency_name": "Han Meimei",
    "emergency_email": "hmm@mail.com",
    "emergency_phone": "8618876546789",
    "emergency_relationship": "Mother",
    "passport_number": "EG8213789",
    "passpost_issue_date": "",
    "passport_issuing_country": "",
    "passport_expiry_date": "",
    "reporting_officer": "Tuan Tuan",
    "job_title": "Product Manager",
    "location": "Beijing",
    "staff_type": "Payroll",
    "work_email": "lilei@mail.com",
    "ec_entity": "",
    "ec_type": "Fixed-term",
    "ec_vendor": "",
    "job_start_date": "2020-01-31",
    "probation_end_date": "2020-07-01",
    "ec_start_date": "2020-01-31",
    "ec_end_date": "2025-07-01",
    "last_working_day": null,
    "host_country": "",
    "host_staff_type": "",
    "host_ec_entity": "",
    "host_ec_vendor": "",
    "host_ec_type": "",
    "host_ec_start_date": "",
    "host_ec_end_date": "",
    "job_scope": "",
    "customer_system_id": "50",
  },
  "message": "Update Successfully",
  "id": 1307
}
```
:::
::::



**Response**

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
[&#x7B;user}](docId:3YuppFLoGbxfCC92BEaYP)**** <font color="#a7b4c3">object</font>
:::

:::VerticalSplitItem
The staff's information.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**message** <font color="#a7b4c3">string</font>
:::

:::VerticalSplitItem
The endpoint response status.

Valid values: Add Successfully, Update Successfully, Permission Denied
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**id** <font color="#a7b4c3">integer</font>
:::

:::VerticalSplitItem
The caller's unique Marco identifier.
:::
::::

***

