Explore the Xero Practice Manager data model

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

Pulling data from Xero Practice Manager 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 pull your Xero Practice Manager 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

Cost

Documentation: https://www.workflowmax.com/api/v3/cost-methods

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

JobDetails

Documentation: https://www.workflowmax.com/api/v3/job-methods

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

JobTask

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
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 - -
ActualMinutes decimal - -
Billable boolean - -
Completed boolean - -
StartDate datetime - -
DueDate datetime - -
ContactUUID guid - -
ManagerUUID guid - -
PartnerUUID guid - -

JobTaskAssignee

Column Type Relates to Notes
RemoteID string - -
TaskRemoteID string JobTask → RemoteID -
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 - -
AllocatedMinutes decimal - -

Milestone

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
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 -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
JobID string JobDetails → ID -
Title string - -
Folder string - -
Text string - -
Date datetime - -
CreatedBy string - -

Comment

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

ClientDetails

Documentation: https://www.workflowmax.com/api/v3/client-methods

Column Type Relates to Notes
RemoteID string - -
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 - -
IsProspect string - -
IsArchived string - -
TypeName string - -
TypePaymentTerm string - -
TypeCostMarkup decimal - -
TypePaymentDay int - -
AccountManagerUUID guid Staff → UUID -
AccountManagerName string - -
JobManagerUUID guid Staff → UUID -
JobManagerName string - -
NoteSummary string - -
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 - -

Invoice

Column Type Relates to Notes
RemoteID string - -
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 - -

InvoiceCost

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

InvoiceTask

Documentation: https://www.workflowmax.com/api/v3/invoice-methods

Column Type Relates to Notes
RemoteID string - -
InvoiceRemoteID string Invoice → RemoteID -
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 - -

Category

Documentation: https://www.workflowmax.com/api/v3/category-methods

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

ClientGroupDetails

Documentation: https://www.workflowmax.com/api/v3/client-group-methods

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

Client

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

Lead

Documentation: https://www.workflowmax.com/api/v3/lead-methods

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name string - -
Description string - -
State string - -
EstimatedValue decimal - -
Date datetime - -
DateWonLost string - -
Category string - -
Dropbox string - -
ClientUUID guid ClientDetails → UUID -
ContactUUID guid - -
OwnerUUID guid Staff → UUID -

PurchaseOrderDetails

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
TimeZone string - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID string - -
Description string - -
State string - -
Date datetime - -
DeliveryAddress string - -
Amount decimal - -
AmountTax decimal - -
AmountIncludingTax decimal - -
JobID string JobDetails → ID -
SupplierUUID guid Supplier → UUID -

PurchaseOrderDetailsCost

Column Type Relates to Notes
RemoteID string - -
PurchaseOrderDetailsRemoteID string PurchaseOrderDetails → RemoteID -
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 - -

Staff

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

Time

Documentation: https://www.workflowmax.com/api/v3/time-methods

Column Type Relates to Notes
RemoteID string - -
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. WFM 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

Task

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

Quote

Documentation: https://www.workflowmax.com/api/v3/quote-methods

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
TimeZone string - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
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 - -

CustomFieldDefinition

Documentation: https://www.workflowmax.com/api/v3/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
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 - -
UseSupplier boolean - -
UseJob boolean - -
UseLead boolean - -
UseJobTask boolean - -
UseJobCost boolean - -
UseJobTime boolean - -
ValueElement string - -

Supplier

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid - -
Name 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 - -

JobCustomField

Documentation: https://www.workflowmax.com/api/v3/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
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 - -

LeadCustomField

Documentation: https://www.workflowmax.com/api/v3/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
LeadRemoteID string Lead → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid CustomFieldDefinition → UUID -
Name string - -
LeadUUID guid Lead → 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 - -

CustomFieldDefinitionOption

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

JobAssignee

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

ClientCustomField

Documentation: https://www.workflowmax.com/api/v3/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
ClientDetailsRemoteID string ClientDetails → RemoteID -
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 - -

SupplierCustomField

Documentation: https://www.workflowmax.com/api/v3/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
SupplierRemoteID string Supplier → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UUID guid CustomFieldDefinition → UUID -
Name string - -
SupplierUUID guid Supplier → 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 - -

TimeCustomField

Documentation: https://www.workflowmax.com/api/v3/custom-field-methods

Column Type Relates to Notes
RemoteID string - -
TimeRemoteID string Time → RemoteID -
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 - -

Template

Documentation: https://www.workflowmax.com/api/v3/template-methods

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

JobCost

Documentation: https://www.workflowmax.com/api/v3/job-methods

Column Type Relates to Notes
RemoteID string - -
JobDetailsRemoteID string JobDetails → RemoteID -
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 - -
SupplierUUID guid Supplier → UUID -

JobCostCustomField

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

Column Type Relates to Notes
RemoteID string - -
JobCostRemoteID string JobCost → RemoteID -
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 - -

JobTaskCustomField

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

Column Type Relates to Notes
RemoteID string - -
TaskRemoteID string JobTask → RemoteID -
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 - -

QuoteTask

Column Type Relates to Notes
RemoteID string - -
QuoteRemoteID string Quote → RemoteID -
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 -
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 -
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 - -

Contact

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

ClientDocument

Documentation: https://www.workflowmax.com/api/v3/client-methods

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

Need more?

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