This new API is neither stable nor ready for use. We are iterating rapidly. Expect changes to the API and documentation every single day.

Welcome to Conductor’s new QuickBooks Desktop API. It brings the following improvements over the current generation:

  1. Proper HTTP methods: GET for reading, POST for creating or updating. No more POST for everything.
  2. Cleaner URL endpoints: /quickbooks_desktop/invoices instead of /end_users/:id/request/quickbooks_desktop with InvoiceQueryRq in the body.
  3. An OpenAPI spec for the entire API.
  4. Full online documentation of all fields and their types.
  5. API playground in the documentation to test requests and see responses.
  6. Always returns all response fields. Uses null for undefined fields instead of omitting them.
  7. Consistently returns arrays for any nested fields that previously returned a single object for one item and an array for multiple items.
  8. Clean response bodies: No more unwrapping outer objects; e.g., no more InvoiceQueryRs.InvoiceRet.
  9. Proper object wrapper for all list responses: Previously, we returned an array of objects. Now, we return an object with a data field that contains the array of objects.
  10. Pagination for all list endpoints.
  11. Better parameter names instead of QuickBooks Desktop’s unconventional naming. For example:
    • MaxReturnedlimit
    • TimeModifiedupdatedAt
    • DataExtRetcustomFields
  12. Uses camelCase for input and output field names instead of PascalCase.
  13. Simplified request structure. For example:
    • refNumberStartsWith: "REF" instead of RefNumberFilter: { MatchCriterion: "StartsWith", RefNumber: "REF" }
    • accountId: "123" instead of AccountRef: { ListID: "123" }
  14. Correct types for obscure fields: Previously, we inferred types from XML. Now, we define the type of every field to ensure it is always correct.
  15. Better field descriptions: we are using our own descriptions instead of QuickBooks’ descriptions.
  16. Field-specific coercions: better handling of dates and money amounts.
  17. Enforced upper bound on limit of 1000 items to prevent overloading QuickBooks Desktop instances.
  18. Better defaults. For example:
    • includeLineItems is true by default because who wants an empty invoice?
    • ownerId is 0 by default to always include your end-users’ custom fields.


We value your input! If you have suggestions or requests for improvements, changes, field names, documentation, or anything else, please let us know.