> ## Documentation Index
> Fetch the complete documentation index at: https://university.triggr-app.com/llms.txt
> Use this file to discover all available pages before exploring further.

# QuickBooks Online

> Connect QuickBooks Online to Triggr with an Intuit Developer app that a QuickBooks admin authorizes for each company.

Triggr works with QuickBooks Online customers, invoices, payments, bills, items, accounts and vendors, and can query any type of record. Each configuration connects to one company: the Base Configuration is usually your own, and each client's configuration is that client's company.

## Set up QuickBooks Online

<Steps>
  <Step title="Create an Intuit app">
    In the [Intuit Developer Portal](https://developer.intuit.com), go to **My Hub > App dashboard**, select the card with a +, name the app `Triggr` and select the `com.intuit.quickbooks.accounting` scope.
  </Step>

  <Step title="Get production keys">
    In **Keys and credentials > Production**, fill in App Details and complete the Compliance questionnaire. Intuit releases the keys once it approves the questionnaire.
  </Step>

  <Step title="Add Triggr's redirect URI">
    In **Settings > Redirect URIs**, select Production, click Add URI and enter `https://app.triggr-app.com/oauth/callback` exactly.
  </Step>

  <Step title="Copy the credentials">
    In Keys and credentials > Production, turn on Show credentials and copy the Client ID and Client secret.
  </Step>

  <Step title="Find each company ID">
    In each company, select the Settings gear, then **Additional info**, and copy the company ID (digits only).
  </Step>
</Steps>

See Intuit's guides to [creating an app](https://developer.intuit.com/app/developer/qbo/docs/get-started/start-developing-your-app), [going live](https://developer.intuit.com/app/developer/qbo/docs/go-live/publish-app), [redirect URIs](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/set-redirect-uri) and [finding your company ID](https://quickbooks.intuit.com/learn-support/en-global/help-article/customer-company-settings/find-quickbooks-online-company-id/L7lp8O9yU_ROW_en).

## Connect it in Triggr

<Steps>
  <Step title="Open the configuration">
    Go to **Integrations > QuickBooks Online** and click **Configure** on the Base Configuration card.

    <Frame>
      <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/integrations-common/base-configuration.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=bb81acb082055015f91beda7b4876f35" alt="The Base Configuration card with Status Not Configured, Admin Consent Not Required and a Configure button." width="2272" height="330" data-path="images/integrations-common/base-configuration.png" />
    </Frame>
  </Step>

  <Step title="Enter the app and company">
    Enter the production Client ID and Client Secret and the Company ID (realm ID), then click Save Configuration.

    <Frame>
      <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/quickbooks-online/configure.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=fb9b078a97ba9e5929f84928278c879d" alt="The QuickBooks Online configuration window with Client ID, Client Secret and Company ID (realm ID) fields, an Allow insecure TLS switch under Advanced, and a Save Configuration button." width="1344" height="1386" data-path="images/quickbooks-online/configure.png" />
    </Frame>
  </Step>

  <Step title="Authorize">
    Click **Authorize**, sign in to Intuit as a primary admin or company admin, choose the company whose ID you entered and approve.
  </Step>
</Steps>

Authorize again if someone disconnects the app in QuickBooks, or you change the credentials or company ID.

## Set up each client

Per-client integrations never fall back to the Base Configuration. On the Per-Client Configuration card, click **Configure** on the client's row, enter the same app credentials with that client's company ID, save, then click Authorize on the row.

<Frame>
  <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/integrations-common/per-client-configuration.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=11464b4946bea0b580c73330d9114a41" alt="The Per-Client Configuration card listing Acme Corp and Globex, each Not Configured with Admin Consent Not Required and a Configure button." width="2272" height="646" data-path="images/integrations-common/per-client-configuration.png" />
</Frame>

## Use it in workflows

* Run Query lists any type of record with a QuickBooks query, such as `select * from Customer where Active = true`.
* Update Customer and Update Invoice need the record's `Id`, its current `SyncToken` and `"sparse": true` in `jsonBody`. Read the record first with Get Customer or Get Invoice.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Intuit shows a redirect URI error">
    Add `https://app.triggr-app.com/oauth/callback` under Production in Settings > Redirect URIs, exactly as shown, then click Authorize again.
  </Accordion>

  <Accordion title="Authorization fails or steps return 401 or 403">
    Use the app's Production credentials, not its Development keys. Check the app is still connected in QuickBooks and the company ID matches the company you chose, then click Authorize again.
  </Accordion>

  <Accordion title="no QuickBooks Online integration is configured for this client">
    Configure and authorize the client on the Per-Client Configuration card.
  </Accordion>

  <Accordion title="Update fails with a Stale Object error (5010)">
    Run Get Customer or Get Invoice again and use the `SyncToken` it returns.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.