{
  "ListID": "800000AB-1234567890",
  "Name": "SUNNY GARDENS INC.",
  "FullName": "SUNNY GARDENS INC.",
  "CompanyName": "SUNNY GARDENS INC.",
  "Phone": "555-987-6543",
  "AltPhone": "800-246-1357",
  "Fax": "555-123-4567",
  "Email": "info@sunnygardens.com",
  "IsActive": true,
  "Balance": "5678.92",
  "TotalBalance": "5678.92",
  "TimeCreated": "2021-09-15T14:30:00-05:00",
  "TimeModified": "2023-09-01T09:45:12-05:00",
  "EditSequence": "1987654321",
  "CustomerTypeRef": {
    "ListID": "8000000F-1234567890",
    "FullName": "Wholesale"
  },
  "PriceLevelRef": {
    "ListID": "80000003-1234567890",
    "FullName": "WHOLESALE PRICE LEVEL LIST"
  },
  "SalesTaxCodeRef": {
    "ListID": "80000003-1234567890",
    "FullName": "Taxable"
  },
  "TermsRef": {
    "ListID": "80000007-1234567890",
    "FullName": "Net 60"
  },
  "BillAddress": {
    "Addr1": "SUNNY GARDENS INC.",
    "Addr2": "4321 MAIN STREET",
    "City": "SPRINGFIELD, IL 62701 US, IL 62",
    "State": "IL 62701 US"
  },
  "BillAddressBlock": {
    "Addr1": "SUNNY GARDENS INC.",
    "Addr2": "4321 MAIN STREET",
    "Addr3": "SPRINGFIELD, IL 62701 US, IL 62701"
  },
  "ShipAddress": {
    "Addr1": "SUNNY GARDENS INC.",
    "Addr2": "4321 MAIN STREET",
    "City": "SPRINGFIELD",
    "State": "IL",
    "PostalCode": "62701",
    "Country": "United States"
  },
  "ShipAddressBlock": {
    "Addr1": "SUNNY GARDENS INC.",
    "Addr2": "4321 MAIN STREET",
    "Addr3": "SPRINGFIELD, IL 62701",
    "Addr4": "United States"
  },
  "Sublevel": 0,
  "JobStatus": "None",
  "Notes": "John Smith - Owner\\nMary Smith - Manager"
}
{
  "ListID": "8000000D-1987654321",
  "TimeCreated": "2022-03-01T10:15:00-05:00",
  "TimeModified": "2023-09-01T14:30:00-05:00",
  "EditSequence": 1987654322,
  "Name": "Spring Planting",
  // For jobs, `FullName` is the concatenation of the
  // parent customer's `FullName` and the job's `Name`.
  "FullName": "SUNNY GARDENS INC.:Spring Planting",
  "IsActive": true,
  // `ParentRef` only exists for jobs and points to
  // the parent customer object.
  "ParentRef": {
    "ListID": "800000AB-1234567890",
    "FullName": "SUNNY GARDENS INC."
  },
  "Sublevel": 1,
  "Balance": 1234.56,
  "TotalBalance": 1234.56,
  "JobStatus": "In Progress",
  "PreferredDeliveryMethod": "Email",
  "StartDate": "2022-03-15",
  "ProjectedEndDate": "2022-05-31",
  "JobTypeRef": {
    "ListID": "8000000G-1987654321",
    "FullName": "Landscaping"
  },
  "JobDescription": "Annual spring planting and garden setup for Sunny Gardens Inc.",
  "PrimaryContactRef": {
    "ListID": "8000000H-1987654321",
    "FullName": "Mary Smith"
  }
}

Overview

In QuickBooks Desktop, both “customers” and “jobs” are represented as Customer objects. Jobs are considered a subset of customers and cannot be queried separately. This data model is a quirk of QuickBooks Desktop and is outside of Conductor’s control.

Differences between jobs and customers

A job in QuickBooks Desktop differs from a customer in the following ways:

  1. ParentRef: A job has a ParentRef property that points to the parent customer.

  2. FullName: A job’s FullName property is the concatenation of the parent customer’s FullName and the job’s Name.

    • Example: If the parent customer’s FullName is "Annie's Alligators" and the job’s Name is "Swamp", the job’s FullName will be "Annie's Alligators:Swamp".
  3. Sublevel: A job has a Sublevel property set to 1, while the parent customer’s Sublevel property is set to 0.

Querying customers and jobs

To fetch all customers and jobs for a given end-user, use the following query:

Fetching all customers and jobs
const customersAndJobs = await conductor.qbd.customer.query("{{END_USER_ID}}");

If you’re looking for a specific job in QuickBooks Desktop, you must query for the customer and then filter the results to find the job.

To see all of the request parameters and response fields for , check out our client library’s amazing autocomplete.

Some objects in QuickBooks Desktop, such as SalesOrders, are associated with a customer’s job instead of directly with the customer. In these cases, querying using the EntityFilter.ListID parameter set to a customer’s ListID will return no results.

To fetch objects related to a customer’s jobs, use the EntityFilter.ListIDWithChildren parameter with the customer’s ListID. This will return the objects corresponding to all of the customer’s jobs. For example:

Fetching SalesOrders for all jobs of a customer
const salesOrders = await conductor.qbd.salesOrder.query("{{END_USER_ID}}", {
  EntityFilter: {
    // The `ListID` of the customer whose jobs' SalesOrders you want to fetch.
    ListIDWithChildren: "800000AB-1234567890",
  },
});

By using the ListIDWithChildren parameter, you can effectively query for objects related to a customer’s jobs without having to query for each job individually.

{
  "ListID": "800000AB-1234567890",
  "Name": "SUNNY GARDENS INC.",
  "FullName": "SUNNY GARDENS INC.",
  "CompanyName": "SUNNY GARDENS INC.",
  "Phone": "555-987-6543",
  "AltPhone": "800-246-1357",
  "Fax": "555-123-4567",
  "Email": "info@sunnygardens.com",
  "IsActive": true,
  "Balance": "5678.92",
  "TotalBalance": "5678.92",
  "TimeCreated": "2021-09-15T14:30:00-05:00",
  "TimeModified": "2023-09-01T09:45:12-05:00",
  "EditSequence": "1987654321",
  "CustomerTypeRef": {
    "ListID": "8000000F-1234567890",
    "FullName": "Wholesale"
  },
  "PriceLevelRef": {
    "ListID": "80000003-1234567890",
    "FullName": "WHOLESALE PRICE LEVEL LIST"
  },
  "SalesTaxCodeRef": {
    "ListID": "80000003-1234567890",
    "FullName": "Taxable"
  },
  "TermsRef": {
    "ListID": "80000007-1234567890",
    "FullName": "Net 60"
  },
  "BillAddress": {
    "Addr1": "SUNNY GARDENS INC.",
    "Addr2": "4321 MAIN STREET",
    "City": "SPRINGFIELD, IL 62701 US, IL 62",
    "State": "IL 62701 US"
  },
  "BillAddressBlock": {
    "Addr1": "SUNNY GARDENS INC.",
    "Addr2": "4321 MAIN STREET",
    "Addr3": "SPRINGFIELD, IL 62701 US, IL 62701"
  },
  "ShipAddress": {
    "Addr1": "SUNNY GARDENS INC.",
    "Addr2": "4321 MAIN STREET",
    "City": "SPRINGFIELD",
    "State": "IL",
    "PostalCode": "62701",
    "Country": "United States"
  },
  "ShipAddressBlock": {
    "Addr1": "SUNNY GARDENS INC.",
    "Addr2": "4321 MAIN STREET",
    "Addr3": "SPRINGFIELD, IL 62701",
    "Addr4": "United States"
  },
  "Sublevel": 0,
  "JobStatus": "None",
  "Notes": "John Smith - Owner\\nMary Smith - Manager"
}
{
  "ListID": "8000000D-1987654321",
  "TimeCreated": "2022-03-01T10:15:00-05:00",
  "TimeModified": "2023-09-01T14:30:00-05:00",
  "EditSequence": 1987654322,
  "Name": "Spring Planting",
  // For jobs, `FullName` is the concatenation of the
  // parent customer's `FullName` and the job's `Name`.
  "FullName": "SUNNY GARDENS INC.:Spring Planting",
  "IsActive": true,
  // `ParentRef` only exists for jobs and points to
  // the parent customer object.
  "ParentRef": {
    "ListID": "800000AB-1234567890",
    "FullName": "SUNNY GARDENS INC."
  },
  "Sublevel": 1,
  "Balance": 1234.56,
  "TotalBalance": 1234.56,
  "JobStatus": "In Progress",
  "PreferredDeliveryMethod": "Email",
  "StartDate": "2022-03-15",
  "ProjectedEndDate": "2022-05-31",
  "JobTypeRef": {
    "ListID": "8000000G-1987654321",
    "FullName": "Landscaping"
  },
  "JobDescription": "Annual spring planting and garden setup for Sunny Gardens Inc.",
  "PrimaryContactRef": {
    "ListID": "8000000H-1987654321",
    "FullName": "Mary Smith"
  }
}