How does Conductor work?

Conductor is a web service that securely connects your app to one or more QuickBooks Desktop instances. It provides a RESTful API and fully-typed client libraries that you can use to read and write data to/from QuickBooks Desktop.

Behind the scenes, Conductor uses the QuickBooks Web Connector, which is a Windows SOAP-based program that comes pre-installed with QuickBooks Desktop on your end-users’ computers. This program always runs invisibly in the background, waiting for requests from Conductor. When you send a request to Conductor, it forwards the request to the Web Connector, which then forwards the request to QuickBooks Desktop. The response follows the same path in reverse. Between each of those steps, there are many layers of error handling, validation, and data conversion.

Conductor abstracts away all of the complexity, idiosyncrasies, and fragility of working with QuickBooks Desktop so that interfacing with this criminally outdated technology is as easy and wonderful as using Stripe’s API.

Does Conductor use a cache layer or mirror database between me and my end-users’ QuickBooks Desktop?

No; every Conductor API call is a real-time direct request to/from QuickBooks Desktop. If you make a request when the end-user’s computer is off or QuickBooks Desktop is inaccessible, Conductor will return an error message with instructions for how the end-user can resolve the issue.

By design, Conductor has no cache layer or mirror database because it causes all sorts of problems when data is out-of-sync. E.g., you modify data on one end that has already been removed on the other.

Ideally, the computer running QuickBooks Desktop is always on and accessible. If that is not possible for some end-users, this design has still worked well because if such an end-user triggers a sync while using your app, they likely did some from the same computer as where QuickBooks Desktop is already running.

Does Conductor store any of my end-users’ QuickBooks Desktop data?

No; Conductor does not retain any of your end-users’ QuickBooks Desktop data on a permanent basis. For operational purposes, API request logs are temporarily, securely stored in a SOC 2 and GDPR-compliant log manager for 14 days before permanent deletion. Access to these logs is strictly limited to authorized Conductor engineers, who use them solely for debugging, offering customer support, and service improvement purposes. This approach ensures both the confidentiality of your data and compliance with the highest standards of data protection.

Does Conductor support batch processing?

No; Conductor’s APIs currently only support working with a single object at a time because QuickBooks Desktop itself only resolves requests serially. If you want to create 50 invoices, for example, you will need to call the create-invoice API 50 times. However, you can send multiple requests in parallel; for example, you can use await Promise.all([ ... ]) in JavaScript with multiple requests, but you cannot send multiple requests in a single HTTPS request.