> ## Documentation Index
> Fetch the complete documentation index at: https://docs.conductor.is/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Connect to QuickBooks Desktop via a modern API in 5 minutes.

export const Image = ({src, alt, width, align = "center", noShadow = false, noBorder = false, noZoom = false}) => <img src={`https://mintlify.s3-us-west-1.amazonaws.com/conductor${src}`} alt={alt} style={{
  width: width
}} noZoom={noZoom} className={`rounded-xl ${align === "center" ? "mx-auto" : ""} ${!noBorder ? "border border-gray-200 dark:border-0" : ""} ${!noShadow ? "shadow-md dark:shadow-none" : ""}`} />;

<Image src="/images/quickstart/hero.jpg" alt="Quickstart hero" noBorder noZoom />

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

## Part 1: Set up your Conductor account

<AccordionGroup>
  <Accordion title="1. Create a Conductor account">
    Sign up for a Conductor account [here](https://dashboard.conductor.is/sign-up) with your work email.
  </Accordion>

  <Accordion title="2. Create an organization">
    Create an organization in the Conductor dashboard. This should be the name of your company.

    <Image src="/images/quickstart/create-org.jpg" alt="Create an organization" width={500} />
  </Accordion>

  <Accordion title="3. Select the testing 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.

    <Image src="/images/quickstart/select-project.jpg" alt="Select the testing project" width={600} />
  </Accordion>
</AccordionGroup>

## Part 2: Connect to QuickBooks Desktop

<Note>
  **Important**: A QuickBooks Desktop instance for testing is **required**. If
  you do not have one, you can [create a free test
  instance](/qbd/test-instance).
</Note>

<AccordionGroup>
  <Accordion title="1. Create an end-user">
    After selecting the **"testing"** project in the Conductor dashboard, click the **"Create end user"** button.

    <Tip>
      An end-user represents the user or organization within *your* application for whom we are connecting to their QuickBooks Desktop instance. Each end-user maps to a single QuickBooks Desktop company file because each company file represents an individual legal entity.
    </Tip>

    <Image src="/images/quickstart/create-end-user.jpg" alt="Create an end-user" width={500} />
  </Accordion>

  <Accordion title="2. Complete the authentication flow">
    After creating an end-user in the dashboard, it will automatically create an auth session. Visit this URL 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.

    *Read every step carefully!*

    <Image src="/images/quickstart/auth-flow.jpg" alt="Conductor authentication flow for QuickBooks Desktop" width={600} />
  </Accordion>

  <Accordion title="3. Create an API key">
    In the Conductor dashboard, navigate to the **API Keys** tab and click the **"Create secret key"** button. Be sure to save the secret key in a secure location.

    <Image src="/images/quickstart/create-secret-key.jpg" alt="Create a secret key" width={600} />
  </Accordion>

  <Accordion title="4. Get your end-user ID">
    Navigate to the **End Users** tab and find your end-user's **ID**. You'll need this in Step 6 to identify the end-user in your requests.

    <Image src="/images/quickstart/end-users.jpg" alt="End users table" width={600} />
  </Accordion>

  <Accordion title="5. Install the Conductor SDK">
    <CodeGroup>
      ```sh Node.js theme={"system"}
      # npm
      npm install conductor-node

      # yarn
      yarn add conductor-node

      # pnpm
      pnpm add conductor-node
      ```

      ```sh Python theme={"system"}
      pip install conductor-py
      ```

      ```sh cURL theme={"system"}
      # Continue to the next step to access our REST API directly via `curl`.
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="6. Fetch data from QuickBooks Desktop!">
    Try fetching a list of QBD Customers:

    <CodeGroup>
      ```ts Node.js theme={"system"}
      import Conductor from "conductor-node";
      const conductor = new Conductor({ apiKey: "{{YOUR_SECRET_KEY}}" });

      async function main() {
        const invoices = await conductor.qbd.invoices.list({
          conductorEndUserId: "{{YOUR_END_USER_ID}}",
          limit: 10,
        });
        console.log(invoices.data);
      }

      main();
      ```

      ```py Python theme={"system"}
      from conductor import Conductor

      conductor = Conductor(api_key="{{YOUR_SECRET_KEY}}")

      invoices = conductor.qbd.invoices.list(
        conductor_end_user_id="{{YOUR_END_USER_ID}}",
      )
      print(invoices.data)
      ```

      ```sh cURL theme={"system"}
      curl --request GET \
        --url 'https://api.conductor.is/v1/quickbooks-desktop/customers' \
        --header 'Authorization: Bearer {{YOUR_SECRET_KEY}}' \
        --header 'Conductor-End-User-Id: {{YOUR_END_USER_ID}}'
      ```
    </CodeGroup>

    ```json Example QBD response theme={"system"}
    {
      "objectType": "list",
      "url": "/v1/quickbooks-desktop/customers",
      "data": [
        {
          "id": "80000001-1234567890",
          "objectType": "qbd_customer",
          "createdAt": "2024-10-01T17:34:56.000Z",
          "name": "ABC Corporation",
          "isActive": true,
          // ...
        }
        // ...
      ],
      // ...
    }
    ```
  </Accordion>
</AccordionGroup>
