Pulling data from the Xero Payroll UK API is only the first part of your reporting. You also need to understand the relationships between different endpoints - something that APIs typically fail to convey.
At SYNCHUB, we not only sync your Xero Payroll UK API endpoints down into a reportable format, we also describe their relationships (e.g. in terms of foreign keys) so that you can quickly get a grasp of your data and how it fits together. This page is intended as technical documentation of these relationships.
Our Universal MCP Server lets you query your Xero Payroll UK data using Claude, ChatGPT or your favourite AI tool.
Our Xero Payroll UK Connector connects your Xero Payroll UK data to favourite reporting tools.
We connect to over over 70+ cloud services, letting you manage the data needs of your entire business in a single location.
Browse the data model below, or if you'd prefer, we also have an interactive ERD over here.
Documentation: https://developer.xero.com/documentation/api/payrolluk/settings
Documentation: https://developer.xero.com/documentation/api/payrolluk/earningrates
Documentation: https://developer.xero.com/documentation/api/payrolluk/employees
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| Title | string | - | - |
| NationalInsuranceNumber | string | - | - |
| NiCategory | string | - | - |
| EmployeeNumber | string | - | - |
| EmployeeID | guid | - | - |
| UpdatedDateUTC | datetime | - | - |
| CreatedDateUTC | datetime | - | - |
| FirstName | string | - | - |
| LastName | string | - | - |
| DateOfBirth | datetime | - | - |
| Gender | string | - | - |
| string | - | - | |
| PhoneNumber | string | - | - |
| StartDate | datetime | - | - |
| EndDate | datetime | - | - |
| IsOffPayrollWorker | boolean | - | - |
| AddressLine1 | string | - | - |
| AddressLine2 | string | - | - |
| AddressCity | string | - | - |
| AddressCounty | string | - | - |
| AddressCountryName | string | - | - |
| AddressPostCode | string | - | - |
| PayrollCalendarID | guid | PayrollCalendar → PayrollCalendarID | - |
Documentation: https://developer.xero.com/documentation/api/payrolluk/employeeleave
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| EmployeeRemoteID | string | Employee → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| Description | string | - | - |
| EmployeeID | guid | Employee → EmployeeID | - |
| LeaveID | guid | - | - |
| UpdatedDateUTC | datetime | - | - |
| LeaveTypeID | guid | LeaveType → LeaveTypeID | - |
| StartDate | datetime | - | - |
| EndDate | datetime | - | - |
Documentation: https://developer.xero.com/documentation/api/payrollUK/leavebalances
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| EmployeeRemoteID | string | Employee → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| EmployeeID | guid | Employee → EmployeeID | - |
| LeaveTypeID | guid | LeaveType → LeaveTypeID | - |
| Balance | decimal | - | - |
| TypeOfUnits | string | - | - |
Documentation: https://developer.xero.com/documentation/api/payrollUK/employeeleavetypes
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| EmployeeRemoteID | string | Employee → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| EmployeeID | guid | Employee → EmployeeID | - |
| LeaveTypeID | guid | LeaveType → LeaveTypeID | - |
| ScheduleOfAccrual | string | - | - |
| HoursAccruedAnnually | decimal | - | - |
| MaximumToAccrue | decimal | - | - |
| OpeningBalance | decimal | - | - |
| RateAccruedHourly | decimal | - | - |
Documentation: https://developer.xero.com/documentation/api/payrolluk/salaryandwages
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| EmployeeRemoteID | string | Employee → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| EmployeeID | guid | Employee → EmployeeID | - |
| SalaryAndWagesID | guid | - | - |
| EarningsRateID | guid | EarningsRate → EarningsRateID | - |
| NumberOfUnitsPerWeek | decimal | - | - |
| RatePerUnit | decimal | - | - |
| NumberOfUnitsPerDay | decimal | - | - |
| DaysPerWeek | decimal | - | - |
| EffectiveFrom | datetime | - | - |
| AnnualSalary | decimal | - | - |
| Status | string | - | - |
| PaymentType | string | - | - |
Documentation: https://developer.xero.com/documentation/api/payrollUK/leavetypes
Documentation: https://developer.xero.com/documentation/api/payrollUK/payruns
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| PayRunID | guid | - | - |
| PostedDateTime | datetime | - | - |
| PayrollCalendarID | guid | PayrollCalendar → PayrollCalendarID | - |
| PeriodStartDate | datetime | - | - |
| PeriodEndDate | datetime | - | - |
| PaymentDate | datetime | - | - |
| TotalCost | decimal | - | - |
| TotalPay | decimal | - | - |
| PayRunStatus | string | - | - |
| PayRunType | string | - | - |
| CalendarType | string | - | - |
| PayslipMessage | string | - | - |
Documentation: https://developer.xero.com/documentation/api/payrollUK/payruncalendars
Documentation: https://developer.xero.com/documentation/api/payrolluk/payslips
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| PayRunRemoteID | string | PayRun → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| PayRunID | guid | PayRun → PayRunID | - |
| PayslipID | guid | - | - |
| EmployeeID | guid | Employee → EmployeeID | - |
| LastEdited | datetime | - | - |
| TotalEarnings | decimal | - | - |
| GrossEarnings | decimal | - | - |
| TotalPay | decimal | - | - |
| TotalEmployerTaxes | decimal | - | - |
| TotalEmployeeTaxes | decimal | - | - |
| TotalDeductions | decimal | - | - |
| TotalReimbursements | decimal | - | - |
| TotalCourtOrders | decimal | - | - |
| TotalBenefits | decimal | - | - |
| BacsHash | string | - | - |
| PaymentMethod | string | - | - |
Documentation: https://developer.xero.com/documentation/api/payrolluk/reimbursements
Documentation: https://developer.xero.com/documentation/api/payrollUK/timesheets
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| TimesheetID | guid | - | - |
| UpdatedDateUTC | datetime | - | - |
| PayrollCalendarID | guid | PayrollCalendar → PayrollCalendarID | - |
| EmployeeID | guid | Employee → EmployeeID | - |
| StartDate | datetime | - | - |
| EndDate | datetime | - | - |
| Status | string | - | - |
| TotalHours | decimal | - | - |
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| EmployeeLeaveRemoteID | string | EmployeeLeave → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| LeaveID | guid | EmployeeLeave → LeaveID | - |
| LineNumber | int | - | - |
| PeriodStartDate | datetime | - | - |
| PeriodEndDate | datetime | - | - |
| NumberOfUnits | string | - | - |
| PeriodStatus | string | - | - |
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| PayslipRemoteID | string | Payslip → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| PayslipID | guid | Payslip → PayslipID | - |
| EarningsLineID | guid | - | - |
| EarningsRateID | guid | EarningsRate → EarningsRateID | - |
| DisplayName | string | - | - |
| RatePerUnit | decimal | - | - |
| NumberOfUnits | decimal | - | - |
| FixedAmount | decimal | - | - |
| Amount | decimal | - | - |
| IsLinkedToTimesheet | boolean | - | - |
| IsAverageDailyPayRate | boolean | - | - |
| IsSystemGenerated | boolean | - | - |
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| PayslipRemoteID | string | Payslip → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| PayslipID | guid | Payslip → PayslipID | - |
| LeaveTypeID | guid | - | - |
| NumberOfUnits | decimal | - | - |
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| PayslipRemoteID | string | Payslip → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| PayslipID | guid | Payslip → PayslipID | - |
| PaymentLineID | guid | - | - |
| Amount | decimal | - | - |
| AccountNumber | string | - | - |
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| PayslipRemoteID | string | Payslip → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| Description | string | - | - |
| PayslipID | guid | Payslip → PayslipID | - |
| TaxLineID | guid | - | - |
| Amount | decimal | - | - |
| GlobalTaxTypeID | int | - | - |
| ManualAdjustment | boolean | - | - |
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| PayslipRemoteID | string | Payslip → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| Description | string | - | - |
| PayslipID | guid | Payslip → PayslipID | - |
| TaxLineID | guid | - | - |
| Amount | decimal | - | - |
| GlobalTaxTypeID | int | - | - |
| ManualAdjustment | boolean | - | - |
| Column | Type | Relates to | Notes |
|---|---|---|---|
| RemoteID | string | - | - |
| TimesheetRemoteID | string | Timesheet → RemoteID | - |
| WhenUpsertedIntoDataStore | datetime | - | - |
| MirrorRemoteID | int | - | - |
| IsDeleted | boolean | - | - |
| WhenCreated | datetime | - | - |
| WhenModified | datetime | - | - |
| TimesheetID | guid | Timesheet → TimesheetID | - |
| TimesheetLineID | guid | - | - |
| Date | datetime | - | - |
| EarningsRateID | guid | EarningsRate → EarningsRateID | - |
| TrackingItemID | guid | - |
|
| NumberOfUnits | decimal | - | - |
SYNCHUB lives and breathes APIs and data. Keep exploring using the links below.