2024 is the year of the connector - vote here

Explore the Xero Practice Manager API data model

See how the various Xero Practice Manager endpoints relate to each other, using our handy Entity Relationship Diagram

Pulling data from the Xero Practice Manager 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 Practice Manager 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.

Endpoints

Category

Documentation: https://developer.xero.com/documentation/api/practice-manager/category-methods

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name string - -

ClientCustomField

Documentation: https://developer.xero.com/documentation/api/practice-manager/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
ClientDetailsRemoteID string ClientDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid CustomFieldDefinition → UUID -
Name string - -
ClientUUID guid ClientDetails → UUID -
Date datetime - -
DecimalLocalized string -
  • 31 Aug 2020 The decimal value is separated with commas. We use the following properties to convert it to the correct format.
Decimal decimal - -
Number decimal - -
Boolean boolean - -
Text string - -

ClientDetails

Documentation: https://developer.xero.com/documentation/api/practice-manager/client-methods

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted string - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name string - -
FirstName string - -
LastName string - -
OtherName string - -
Email string - -
Title string - -
Gender string - -
DateOfBirth string - -
Address string - -
City string - -
Region string - -
PostCode string - -
Country string - -
PostalAddress string - -
PostalCity string - -
PostalRegion string - -
PostalPostCode string - -
PostalCountry string - -
Phone string - -
Fax string - -
Website string - -
ReferralSource string - -
ExportCode string - -
IsArchived string -
  • 15 Aug 2024 The client-list endpoint will never return archived clients, however if request a client individually then you can get archived records
TypeName string - -
TypePaymentTerm string - -
TypeCostMarkup decimal - -
TypePaymentDay int - -
AccountManagerUUID guid Staff → UUID -
AccountManagerName string - -
JobManagerUUID guid Staff → UUID -
JobManagerName string - -
BillingClientUUID guid ClientDetails → UUID -
TaxNumber string - -
CompanyNumber string - -
BusinessNumber string - -
BranchNumber string - -
BusinessStructure string - -
GSTRegistered string -
  • 28 Jun 2021 Boolean represented as 'Yes' or 'No'
PrepareGST string -
  • 28 Jun 2021 Boolean represented as 'Yes' or 'No'
SignedTaxAuthority string -
  • 28 Jun 2021 Boolean represented as 'Yes' or 'No'
TaxAgent string - -
AgencyStatus string - -
PrepareActivityStatement string -
  • 28 Jun 2021 Boolean represented as 'Yes' or 'No'
PrepareTaxReturn string -
  • 28 Jun 2021 Boolean represented as 'Yes' or 'No'
ActiveAtoClient string -
  • 28 Jun 2021 Boolean represented as 'Yes' or 'No'
ClientCode string - -
BalanceMonth int - -
BankBSB string - -
BankAccountName string - -
BankAccountNumber string - -

ClientDocument

Documentation: https://developer.xero.com/documentation/api/practice-manager/client-methods

Column Type Relates to Notes
RemoteID string - -
ClientDetailsRemoteID string ClientDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ClientID guid ClientDetails → UUID -
Title string - -
Text string - -
Folder string - -
URL string - -
Date datetime - -
CreatedBy string - -

ClientGroupDetails

Documentation: https://developer.xero.com/documentation/api/practice-manager/client-group-methods

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name string - -
Taxable string - -

Contact

Column Type Relates to Notes
RemoteID string - -
ClientDetailsRemoteID string ClientDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name string - -
Mobile string - -
Email string - -
Phone string - -
Position string - -
Salutation string - -
Addressee string - -
IsPrimary string - -

Cost

Documentation: https://developer.xero.com/documentation/api/practice-manager/cost-methods

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Description string - -
Code string - -
Note string - -
UnitCost decimal - -
UnitPrice decimal - -
IncomeAccount string - -
CostOfSaleAccount string - -

CustomFieldDefinition

Documentation: https://developer.xero.com/documentation/api/practice-manager/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name string - -
Type string - -
LinkUrl string - -
Options string -
  • 22 Apr 2020 Although the field name suggests an array, this is actually a single string with each option separated by a line break
UseClient boolean - -
UseContact boolean - -
UseJob boolean - -
UseJobTask boolean - -
UseJobCost boolean - -
UseJobTime boolean - -
ValueElement string - -

Invoice

Documentation: https://developer.xero.com/documentation/api/practice-manager/invoices

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
ID string -
  • 22 Apr 2020 The ID field is used as the primary identifier when requesting on a per-invoice basis
Type string - -
Status string - -
JobText string - -
Date datetime - -
DueDate datetime - -
Amount decimal - -
AmountTax decimal - -
AmountIncludingTax decimal - -
AmountPaid decimal - -
AmountOutstanding decimal - -
ClientUUID guid ClientDetails → UUID -
ContactUUID guid - -

JobCost

Documentation: https://developer.xero.com/documentation/api/practice-manager/job-methods

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Description string - -
JobID string JobDetails → ID -
Quantity decimal - -
Date datetime - -
Billable boolean - -
Code string - -
Note string - -
UnitCost decimal - -
UnitPrice decimal - -

JobCostCustomField

Documentation: https://api.xero.com/XeroPracticeManager/3.0/job.api/cost/[identifier]/customfield

Column Type Relates to Notes
RemoteID string - -
JobCostRemoteID string JobCost → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Name string - -
CustomFieldDefinitionUUID guid CustomFieldDefinition → UUID -
JobCostUUID guid JobCost → UUID -
Date datetime - -
DecimalLocalized string -
  • 31 Aug 2020 The decimal value is separated with commas. We use the following properties to convert it to the correct format.
Decimal decimal - -
Number decimal - -
Boolean boolean - -
Text string - -

JobCustomField

Documentation: https://developer.xero.com/documentation/api/practice-manager/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid CustomFieldDefinition → UUID -
Name string - -
JobID string JobDetails → ID -
Date datetime - -
DecimalLocalized string -
  • 31 Aug 2020 The decimal value is separated with commas. We use the following properties to convert it to the correct format.
Decimal decimal - -
Number decimal - -
Boolean boolean - -
Text string - -

JobDetails

Documentation: https://developer.xero.com/documentation/api/practice-manager/job-methods

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
ID string - -
Name string - -
Description string - -
ClientUUID guid ClientDetails → UUID -
ClientOrderNumber string - -
Budget decimal - -
State string - -
Type string - -
StartDate datetime - -
DueDate datetime - -
DateCreatedUtc datetime - -
DateModifiedUtc datetime - -
JobContactUUID guid - -
CompletedDate datetime - -
ManagerUUID guid Staff → UUID -
ManagerName string - -
PartnerUUID guid Staff → UUID -
PartnerName string - -
WebUrl string - -
ApprovedQuoteUUID guid Quote → UUID -

JobTaskCustomField

Documentation: https://api.xero.com/XeroPracticeManager/3.0/job.api/task/[identifier]/customfield

Column Type Relates to Notes
RemoteID string - -
TaskRemoteID string JobTask → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Name string - -
CustomFieldDefinitionUUID guid CustomFieldDefinition → UUID -
JobTaskUUID guid JobTask → UUID -
Date datetime - -
DecimalLocalized string -
  • 31 Aug 2020 The decimal value is separated with commas. We use the following properties to convert it to the correct format.
Decimal decimal - -
Number decimal - -
Boolean boolean - -
Text string - -

Quote

Documentation: https://developer.xero.com/documentation/api/practice-manager/quote-methods

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
TimeZone string - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
ID string - -
Name string - -
Description string - -
Type string - -
State string - -
Budget decimal - -
OptionExplanation string - -
Date datetime - -
ValidDate datetime - -
EstimatedCost decimal - -
EstimatedCostTax decimal - -
EstimatedCostIncludingTax decimal - -
Amount decimal - -
AmountTax decimal - -
AmountIncludingTax decimal - -
ClientUUID guid ClientDetails → UUID -
ContactUUID guid - -

Staff

Documentation: https://developer.xero.com/documentation/api/practice-manager/staff

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name string - -
Email string - -
Phone string - -
Mobile string - -
Address string - -
PayrollCode string - -

Task

Documentation: https://developer.xero.com/documentation/api/practice-manager/tasks

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name string - -
Description string - -

Template

Documentation: https://developer.xero.com/documentation/api/practice-manager/template-methods

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name string - -

Time

Documentation: https://developer.xero.com/documentation/api/practice-manager/time-methods

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
ID string - -
JobID string JobDetails → ID -
StaffMemberUUID guid Staff → UUID -
TaskUUID guid JobTask → UUID
  • 4 Nov 2020 The tasks refer to the JobTask, not the tasks from the dedicated /Tasks endpoint itself. XPM has a distinction between these JobTasks and the latter business-level tasks.
Date datetime - -
Minutes int - -
Note string - -
Billable boolean - -
InvoiceUUID guid Invoice → UUID
  • 24 Jun 2020 This field is in the API docs, but we have not seen it come down
InvoiceTaskUUID guid InvoiceTask → UUID
  • 14 Oct 2020 This field is only present in the XML response if it is non-NULL
Start string -
  • 14 Oct 2020 This field is only present in the XML response if it is non-NULL
End string -
  • 14 Oct 2020 This field is only present in the XML response if it is non-NULL

TimeCustomField

Documentation: https://developer.xero.com/documentation/api/practice-manager/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
TimeRemoteID string Time → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid CustomFieldDefinition → UUID -
Name string - -
TimeUUID guid Time → UUID -
Date datetime - -
DecimalLocalized string -
  • 31 Aug 2020 The decimal value is separated with commas. We use the following properties to convert it to the correct format.
Decimal decimal - -
Number decimal - -
Boolean boolean - -
Text string - -

ClientContact

Column Type Relates to Notes
RemoteID string - -
ClientDetailsRemoteID string ClientDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ContactUUID guid Contact → UUID -
ClientDetailsUUID guid ClientDetails → UUID -

ClientNote

Column Type Relates to Notes
RemoteID string - -
ClientDetailsRemoteID string ClientDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ClientDetailsUUID guid ClientDetails → UUID -
NoteNumber int - -
Title string - -
Folder string - -
Text string - -
Date datetime - -
CreatedBy string - -

Client

Column Type Relates to Notes
RemoteID string - -
ClientGroupDetailsRemoteID string ClientGroupDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid ClientDetails → UUID -
ClientGroupUUID guid ClientGroupDetails → UUID -

CustomFieldDefinitionOption

Column Type Relates to Notes
RemoteID string - -
CustomFieldDefinitionRemoteID string CustomFieldDefinition → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
CustomFieldUUID guid CustomFieldDefinition → UUID -
Value string - -

InvoiceTask

Documentation: https://developer.xero.com/documentation/api/practice-manager/invoice-methods

Column Type Relates to Notes
RemoteID string - -
InvoiceRemoteID string Invoice → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid -
  • 5 Nov 2020 This is the InvoiceTask relationship, not a Task.UUID itself
Name string - -
Description string - -
InvoiceID string Invoice → ID -
JobID string JobDetails → RemoteID -
Minutes decimal - -
BillableRate decimal - -
Billable string - -
LineNumber int - -
Amount decimal - -
AmountTax decimal - -
AmountIncludingTax decimal - -

InvoiceCost

Column Type Relates to Notes
RemoteID string - -
InvoiceRemoteID string Invoice → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Description string - -
InvoiceID string Invoice → ID -
JobID string JobDetails → ID -
LineNumber int - -
Quantity decimal - -
UnitCost decimal - -
UnitPrice decimal - -
Amount decimal - -
AmountTax decimal - -
AmountIncludingTax decimal - -
Code string - -
Note string - -
Billable string - -

InvoicePayment

Column Type Relates to Notes
RemoteID string - -
InvoiceRemoteID string Invoice → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
InvoiceID string Invoice → ID -
LineNumber int - -
Date datetime - -
Amount decimal - -
Reference string - -

JobTask

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid -
  • 23 Apr 2020 This is the JobTaskID - not the TaskID
Name string - -
Description string - -
EstimatedMinutes decimal - -
Folder string - -
ActualMinutes decimal - -
Billable boolean - -
Completed boolean - -
StartDate datetime - -
DueDate datetime - -
ContactUUID guid - -
ManagerUUID guid - -
PartnerUUID guid - -

Milestone

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Description string - -
JobID string JobDetails → ID -
Date datetime - -
Completed boolean - -
Folder string - -

Note

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
JobID string JobDetails → ID -
Title string - -
Folder string - -
Text string - -
Date datetime - -
CreatedBy string - -

JobAssignee

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid Staff → UUID -
Name string - -
JobID string JobDetails → ID -
StaffID guid Staff → UUID -

PurchaseOrderDetailsCost

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Description string - -
Note string - -
Code string - -
Quantity decimal - -
UnitCost decimal - -
Amount decimal - -
AmountTax decimal - -
AmountIncludingTax decimal - -
PurchaseOrderID string PurchaseOrderDetails → ID -
LineNumber int - -

QuoteTask

Column Type Relates to Notes
RemoteID string - -
QuoteRemoteID string Quote → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Name string - -
Description string - -
QuoteID string Quote → ID -
TaskNumber int - -
EstimatedMinutes decimal - -
BillableRate decimal - -
Billable string - -
Amount decimal - -
AmountTax decimal - -
AmountIncludingTax decimal - -

QuoteCost

Column Type Relates to Notes
RemoteID string - -
QuoteRemoteID string Quote → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Description string - -
QuoteID string Quote → ID -
CostNumber int - -
Note string - -
Code string - -
Billable string - -
Quantity decimal - -
UnitCost decimal - -
UnitPrice decimal - -
Amount decimal - -
AmountTax decimal - -
AmountIncludingTax decimal - -

QuoteOption

Column Type Relates to Notes
RemoteID string - -
QuoteRemoteID string Quote → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Description string - -
QuoteID string Quote → ID -
OptionNumber int - -
Note string - -
Code string - -
Quantity decimal - -
UnitCost decimal - -
UnitPrice decimal - -
Amount decimal - -
AmountTax decimal - -
AmountIncludingTax decimal - -

JobTaskAssignee

Column Type Relates to Notes
RemoteID string - -
TaskRemoteID string JobTask → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid Staff → UUID
  • 22 Apr 2020 This is the ID of the staff member, not the TaskAssignee relationship
Name string - -
StaffID guid Staff → UUID -
JobTaskID guid JobTask → UUID -
AllocatedMinutes decimal - -

Comment

Column Type Relates to Notes
RemoteID string - -
NoteRemoteID string Note → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Text string - -
Date datetime - -
CreatedBy string - -
NoteUUID guid Note → UUID -

Need more?

SyncHub lives and breathes APIs and data. Keep exploring using the links below.