# Xero Payroll UK API

> Xero Payroll UK API on Apizie: 69 endpoints (Retrieves employees, Creates employees, Retrieves specific employees by using a unique employee ID, Updates a specific employee's detail, …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://apizie.tech/v1/finance:xero-payroll-uk/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `finance:xero-payroll-uk`
- Category: Finance
- Status: byok
- Source: https://developer.xero.com
- Page: https://apizie.tech/api/finance/xero-payroll-uk
- OpenAPI: https://apizie.tech/api/finance/xero-payroll-uk/openapi.json

This is the Xero Payroll API for orgs in the UK region.

## Endpoints

### Retrieves employees
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employees` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| filter | string | no | Filter by first name, lastname, and/or whether they are an off-payroll worker |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |

### Creates employees
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-employee` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| body | object | yes | JSON request body |

### Retrieves specific employees by using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |

### Updates a specific employee's detail
`POST https://apizie.tech/v1/finance:xero-payroll-uk/update-employee` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Creates employment detail for a specific employee using a unique employee ID
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-employment` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Retrieves tax records for a specific employee using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-tax` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |

### Retrieves a specific employee's openingbalances using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-opening-balances` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |

### Creates an opening balance for a specific employee
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-employee-opening-balances` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Updates a specific employee's opening balances
`POST https://apizie.tech/v1/finance:xero-payroll-uk/update-employee-opening-balances` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Retrieves a specific employee's leave records using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-leaves` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |

### Creates leave records for a specific employee
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-employee-leave` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Retrieves a specific employee's leave record using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-leave` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |
| LeaveID | string | yes | Leave id for single object |

### Updates a specific employee's leave records
`POST https://apizie.tech/v1/finance:xero-payroll-uk/update-employee-leave` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| LeaveID | string | yes | Leave id for single object |
| body | object | yes | JSON request body |

### Deletes a specific employee's leave record
`POST https://apizie.tech/v1/finance:xero-payroll-uk/delete-employee-leave` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |
| LeaveID | string | yes | Leave id for single object |

### Retrieves a specific employee's leave balances using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-leave-balances` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |

### Retrieves a specific employee's leave balances using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-statutory-leave-balances` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |
| LeaveType | string | no | Filter by the type of statutory leave |
| AsOfDate | string | no | The date from which to calculate balance remaining. If not specified, current date UTC is used. |

### Retrieves a specific employee's summary of statutory leaves using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-statutory-leave-summary` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |
| activeOnly | boolean | no | Filter response with leaves that are currently active or yet to be taken. If not specified, all leaves (past, current, and future… |

### Creates statutory sick leave records
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-employee-statutory-sick-leave` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| body | object | yes | JSON request body |

### Retrieves a statutory sick leave for an employee
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-statutory-sick-leave` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| StatutorySickLeaveID | string | yes | Statutory sick leave id for single object |

### Retrieves a specific employee's leave periods using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-leave-periods` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |
| startDate | string | no | Filter by start date |
| endDate | string | no | Filter by end date |

### Retrieves a specific employee's leave types using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-leave-types` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |

### Creates employee leave type records
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-employee-leave-type` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Retrieves a specific employee's payment method using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-payment-method` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |

### Creates an employee payment method
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-employee-payment-method` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Retrieves a specific employee pay templates using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-pay-template` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |

### Creates an earnings template records for a specific employee
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-employee-earnings-template` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Updates a specific employee's earnings template records
`POST https://apizie.tech/v1/finance:xero-payroll-uk/update-employee-earnings-template` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| PayTemplateEarningID | string | yes | Id for single pay template earnings object |
| body | object | yes | JSON request body |

### Deletes a specific employee's earnings template record
`POST https://apizie.tech/v1/finance:xero-payroll-uk/delete-employee-earnings-template` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |
| PayTemplateEarningID | string | yes | Id for single pay template earnings object |

### Creates multiple earnings template records for a specific employee using a unique employee ID
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-multiple-employee-earnings-template` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Retrieves employee benefits
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-benefits` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |

### Creates a new employee benefit
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-benefit` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| body | object | yes | JSON request body |

### Retrieves a specific benefit by using a unique benefit ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-benefit` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| id | string | yes | Identifier for the benefit |

### Retrieves deductions
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-deductions` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |

### Creates a new deduction
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-deduction` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| body | object | yes | JSON request body |

### Retrieves a specific deduction by using a unique deduction ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-deduction` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| deductionId | string | yes | Identifier for the deduction |

### Retrieves earnings orders
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-earnings-orders` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |

### Retrieves a specific earnings orders by using a unique earnings orders id
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-earnings-order` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| id | string | yes | Identifier for the deduction |

### Retrieves earnings rates
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-earnings-rates` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |

### Creates a new earnings rate
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-earnings-rate` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| body | object | yes | JSON request body |

### Retrieves a specific earnings rates by using a unique earnings rate id
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-earnings-rate` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EarningsRateID | string | yes | Identifier for the earnings rate |

### Retrieves leave types
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-leave-types` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |
| ActiveOnly | boolean | no | Filters leave types by active status. By default the API returns all leave types. |

### Creates a new leave type
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-leave-type` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| body | object | yes | JSON request body |

### Retrieves a specific leave type by using a unique leave type ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-leave-type` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| LeaveTypeID | string | yes | Identifier for the leave type |

### Retrieves reimbursements
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-reimbursements` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |

### Creates a new reimbursement
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-reimbursement` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| body | object | yes | JSON request body |

### Retrieves a specific reimbursement by using a unique reimbursement id
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-reimbursement` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| ReimbursementID | string | yes | Identifier for the reimbursement |

### Retrieves timesheets
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-timesheets` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |
| filter | string | no | Filter by employeeId and/or payrollCalendarId |
| status | string | no | filter results by any timesheets with a matching timesheet status |
| startDate | string | no | filter results by any timesheets with a startDate on or after the provided date |
| endDate | string | no | filter results by any timesheets with a endDate on or before the provided date |
| sort | string | no | sort the order of timesheets returned. The default is based on the timesheets createdDate, sorted oldest to newest. Currently, the only… |

### Creates a new timesheet
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-timesheet` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| body | object | yes | JSON request body |

### Retrieve a specific timesheet by using a unique timesheet ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-timesheet` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| TimesheetID | string | yes | Identifier for the timesheet |

### Deletes a specific timesheet
`POST https://apizie.tech/v1/finance:xero-payroll-uk/delete-timesheet` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| TimesheetID | string | yes | Identifier for the timesheet |

### Creates a new timesheet line for a specific timesheet using a unique timesheet ID
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-timesheet-line` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| TimesheetID | string | yes | Identifier for the timesheet |
| body | object | yes | JSON request body |

### Approves a specific timesheet
`POST https://apizie.tech/v1/finance:xero-payroll-uk/approve-timesheet` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| TimesheetID | string | yes | Identifier for the timesheet |

### Reverts a specific timesheet to draft
`POST https://apizie.tech/v1/finance:xero-payroll-uk/revert-timesheet` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| TimesheetID | string | yes | Identifier for the timesheet |

### Updates a specific timesheet line for a specific timesheet
`POST https://apizie.tech/v1/finance:xero-payroll-uk/update-timesheet-line` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| TimesheetID | string | yes | Identifier for the timesheet |
| TimesheetLineID | string | yes | Identifier for the timesheet line |
| body | object | yes | JSON request body |

### Deletes a specific timesheet line
`POST https://apizie.tech/v1/finance:xero-payroll-uk/delete-timesheet-line` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| TimesheetID | string | yes | Identifier for the timesheet |
| TimesheetLineID | string | yes | Identifier for the timesheet line |

### Retrieves payrun calendars
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-pay-run-calendars` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |

### Creates a new payrun calendar
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-pay-run-calendar` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| body | object | yes | JSON request body |

### Retrieves a specific payrun calendar by using a unique payrun calendar ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-pay-run-calendar` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| PayRunCalendarID | string | yes | Identifier for the payrun calendars |

### Retrieves a specific employee's salary and wages by using a unique employee ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-salary-and-wages` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |

### Creates a salary and wage record for a specific employee
`POST https://apizie.tech/v1/finance:xero-payroll-uk/create-employee-salary-and-wage` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| body | object | yes | JSON request body |

### Retrieves a specific salary and wages record for a specific employee using a unique salary and wage id
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employee-salary-and-wage` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |
| SalaryAndWagesID | string | yes | Id for single pay template earnings object |

### Updates salary and wages record for a specific employee
`POST https://apizie.tech/v1/finance:xero-payroll-uk/update-employee-salary-and-wage` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| Idempotency-Key | string | no | This allows you to safely retry requests without the risk of duplicate processing. 128 character max. |
| EmployeeID | string | yes | Employee id for single object |
| SalaryAndWagesID | string | yes | Id for single pay template earnings object |
| body | object | yes | JSON request body |

### Deletes a salary and wages record for a specific employee
`POST https://apizie.tech/v1/finance:xero-payroll-uk/delete-employee-salary-and-wage` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| EmployeeID | string | yes | Employee id for single object |
| SalaryAndWagesID | string | yes | Id for single salary and wages object |

### Retrieves pay runs
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-pay-runs` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |
| status | string | no | By default get payruns will return all the payruns for an organization. You can add GET… |

### Retrieves a specific pay run by using a unique pay run ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-pay-run` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| PayRunID | string | yes | Identifier for the pay run |

### Retrieves payslips
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-pay-slips` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| page | integer | no | Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. |
| PayRunID | string | yes | PayrunID which specifies the containing payrun of payslips to retrieve. By default, the API does not group payslips by payrun. |

### Retrieves a specific payslip by using a unique payslip ID
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-pay-slip` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |
| PayslipID | string | yes | Identifier for the payslip |

### Retrieves payroll settings
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-settings` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |

### Retrieves tracking categories
`GET https://apizie.tech/v1/finance:xero-payroll-uk/get-tracking-categories` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| Xero-Tenant-Id | string | yes | Xero identifier for Tenant |

## Example
```
curl "https://apizie.tech/v1/finance:xero-payroll-uk/get-employees" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the Xero Payroll UK API?
Create a free Apizie key, then send GET https://apizie.tech/v1/finance:xero-payroll-uk/get-employees with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the Xero Payroll UK API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. Xero Payroll UK itself also needs your own key from xero.

### Can AI agents use the Xero Payroll UK API?
Yes. Add the Apizie MCP server (https://apizie.tech/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key finance:xero-payroll-uk.

### What is the status of the Xero Payroll UK API?
Needs your own provider key (bring your own key)
