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.

How do users set up the QuickBooks Desktop integration with Conductor?

Conductor leverages a program called QuickBooks Web Connector, which comes preinstalled with all versions of QuickBooks Desktop and runs invisibly in the background on the Windows computer to maintain the connection. To connect, the QuickBooks Desktop users will step through Conductor’s authentication flow, which has them download a config file that Conductor generates, open it in the Web Connector, authenticate, and connect to Conductor (and thereby to your applicationo). Here is a demo of the auth flow.

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 product 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.

What is the QuickBooks Web Connector?

The QuickBooks Web Connector is a Windows program that comes pre-installed with QuickBooks Desktop that Conductor uses to securely communicate with QuickBooks Desktop. This program runs invisibly in the background on the end-user’s computer, waiting for requests from Conductor. The only time your end-user should see the Web Connector is when they first set up their QuickBooks Desktop connection with Conductor; other than that, it should be invisible to them.

What is a QuickBooks Desktop “company file”?

In the world of QuickBooks Desktop, a “company file” is the main local file for all the financial data for a specific company. Typically, a QuickBooks Desktop user will have only one company file: the one they use to manage their business. However, some users manage multiple company files on one computer and actively switch between them. For example, an accounting firm might manage the books for multiple clients, each with their own QuickBooks Desktop company file.

Each Conductor connection is tied to a specific company file. If you need to connect to multiple company files, you will need to create multiple EndUsers in Conductor, each with their own connection. See this guide for more information.