Getting started

Welcome! 👋 Follow the instructions below to learn how to connect your QuickBooks Desktop instance and start working with your data in just a few minutes. Fetch, create, and update any object type in real-time with our modern APIs and SDKs.

1. Getting your API keys

1

Create a Conductor account

Sign up for a Conductor account here.

2

Create an organization

Create an organization in the Conductor dashboard. This should be the name of your company.

3

Select a project

In the organization you created, let’s select the “testing” project. An organization can have multiple projects, but we’ll use this one for now.

4

Find your project's API keys

In the project you selected, navigate to the API Keys tab and find your project’s Secret Key and Publishable Key. You’ll need these to authenticate your requests.

2. Connecting Conductor to QuickBooks Desktop

Required: A QuickBooks Desktop instance for testing. If you do not have one, you can create a free test instance.

1

Install a Conductor library (optional)

2

Create an EndUser and save its ID to your database

An EndUser is a user of your application for whom we are creating an IntegrationConnection. Each EndUser can represent an individual or an entire company/organization of multiple users within your application.

After you create your EndUser, you must save the EndUser’s id to your database for sending requests to their IntegrationConnections in the future.

For example, if your database has a users table, you can store the id in a column like conductor_end_user_id.

Either create the EndUser via the web dashboard or use the following server-side code to create an EndUser programmatically:

This API call will return the newly created EndUser object, for example:

Example EndUser response
{
  // ❗❗ Save this `id` to your database!
  "id": "end_usr_1234567abcdefg",
  "objectType": "end_user",
  "createdAt": "2022-11-16 23:51:08.996+00",
  "companyName": "Big Construction Co.",
  "sourceId": "12345678-abcd-abcd-example-1234567890ab",
  "email": "bob@bigconstruction.com",
  "integrationConnections": []
}
3

Create an AuthSession

Before you can read/write data to/from an EndUser’s IntegrationConnection, your EndUser must complete the connection authentication flow. The following operation creates a session and returns a URL to redirect your end-user.

Example AuthSession response
{
  "id": "auth_sess_1234567abcdefg",
  "endUserId": "end_usr_1234567abcdefg",
  "clientSecret": "auth_sess_client_secret_1234567abcdefg",
  "expiresAt": "2022-11-16 23:51:08.996+00",
  // 👇 Visit this URL from the response to launch the authentication flow.
  "authFlowUrl": "https://connect.conductor.is/qbd/auth_sess_client_secret_1234567abcdefg?key={{YOUR_PUBLISHABLE_KEY}}"
}
4

Complete the authentication flow

Visit the returned authSession.authFlowUrl in your browser on the same computer or instance as your QuickBooks Desktop installation. This authentication flow will guide you through connecting your QuickBooks Desktop instance to Conductor.

5

You're done!

After completing the authentication flow, you can access your QuickBooks Desktop instance through the Conductor library. The following example fetches a list of invoices from your QuickBooks Desktop instance.

Example QBD response
{
  "objectType": "list",
  "url": "/v1/quickbooks-desktop/invoices",
  "data": [
    {
      "id": "123ABC-1234567890",
      "objectType": "qbd_invoice",
      "createdAt": "2021-10-01T17:34:56.000Z",
      "updatedAt": "2021-10-01T20:45:30.000Z",
      "revisionNumber": "1721172183",
      "customer": {
        "id": "80000001-1234567890",
        "fullName": "Acme Corporation"
      },
      "lines": [
        {
          "id": "456DEF-1234567890",
          "objectType": "qbd_invoice_line",
          "item": {
            "id": "80000010-1234567890",
            "fullName": "Widget A"
          },
          "description": "High-quality widget with custom engraving",
          "quantity": 5,
          "amount": "1000.00",
          // ... more fields omitted
        }
      ],
      // ... more fields omitted
    },
    // ... more invoices omitted
  ],
  "nextCursor": "12345678-abcd-abcd-example-1234567890ab",
  "remainingCount": 10,
  "hasMore": true
}