QuickBooks Online guide
Software Setup
To acquire your own QuickBooks Online instance, we suggest creating an Intuit Developer account and creating a sandbox instance.
Realistic data is provided by the new sandbox instance, which comes with many sample transactions.
Rutter does not provide a QuickBooks Online instance.
Developer Account Setup
Create a QuickBooks Online app and configure it so that you can process accounting data through Rutter.
Create a QuickBooks Online App
- Navigate to your QuickBooks Dashboard and click on “Create an app” on the top right https://developer.intuit.com/app/developer/dashboard. Fill in the app name and be sure to check the accounting scope.

Update Redirect URI
- In the test app, you need to add
https://production.rutterapi.com/quickbooks/proxy/redirect-urlas a redirect URI - You can do this by clicking on Keys & Credentials. Add the redirect URI under Development Settings (if you’re testing with a QuickBooks Sandbox company) or Production Settings (if real company).

Share your QuickBooks Developer client_id and client_secret with Rutter
- First, get the client_id and client_secret from QBO. To do this:
- Then, share these two values to Rutter by entering them in the Dashboard:
- Login to the Rutter Dashboard
- Make sure you’re in Production Mode. Navigate to Platforms, select the Accounting menu, and click on QuickBooks.
- Copy the
client_idandclient_secretinto the text boxes and click Save.
Log in to the Dashboard and Open up the Auth flow
- On the Rutter Dashboard, navigate to Connections on the sidebar. Click Create New Connection on the top right.

- Copy the shareable URL below

- The url will open up the auth flow where you can select QuickBooks
- The merchant connects to QuickBooks by signing into their QuickBooks account to authenticate.

On Completion
- You should see the following screen, indicating a successful connection:

Reference
Sandbox vs Production Caveats
If you are using a QuickBooks Online Sandbox, there are some important pieces to note. The Developer Configuration in your Rutter Dashboard can have the credentials from either a Sandbox instance (your "Development" keys in QBO) or a Production instance (your "Production" keys in QBO). You cannot have both Sandbox and Production connections at the same time in your Rutter instance.
To maintain separate environments for development vs production, you can create two Rutter organizations, one for production and one for staging/testing, to better separate these processes out. One instance can be used with your "Development" QBO keys, and one with your "Production" QBO keys.
To set up your second Rutter instance, just head to Rutter's Sign up page. You'll need to use a different email than on your primary Rutter organization. For example, if you used john.doe@rutterapi.com to sign up for your primary Rutter organization, you could create a new staging organization using the email john.doe+staging@rutterapi.com.
Once done, reach out to your Rutter Success Manager with your staging organization ID to ensure you receive full access to Rutter.
Merge Webhook Events
When two records (for example, duplicate customers or vendors) are merged in QuickBooks Online, QuickBooks eventually hard-deletes the losing record without reporting it as a deletion through its Change Data Capture API. Rutter listens for QuickBooks Merge webhook events to detect these merges and automatically remove the stale losing record from your synced data — after first re-querying QuickBooks (including inactive records) to confirm the record is truly gone.
If your connections use Rutter's QuickBooks app (the default), no action is required — Merge events are already enabled.
If your team uses your own QuickBooks app (a custom OAuth app registered in the Intuit Developer Portal), Merge events must be enabled in your app's webhook configuration for this cleanup layer to work:
- Open your app in the Intuit Developer Portal and navigate to the Webhooks section, under Development or Production Settings depending on your environment.
- Set the webhook Endpoint URL to your organization's Rutter webhook URL. This is shown on the QuickBooks configuration page in the Rutter Dashboard — reach out to Rutter support if you do not see it.
- In the event triggers list, enable the entities you sync through Rutter and check the Merge operation for each entity that supports it (for example Customer, Vendor, and Account).
- Copy the Verifier Token that Intuit generates for your webhook configuration and save it on the QuickBooks configuration page in the Rutter Dashboard. Rutter uses this token to verify webhook signatures, and events that fail verification are rejected.
Without Merge events enabled, your connections still receive standard sync coverage — you only miss the additional merge-cleanup layer, which can leave merged-away records present in synced data until they are removed manually.
FAQ
Does QuickBooks Online have Locations as a tracking category?
Yes. In QuickBooks Online, the tracking dimension shown as "Locations" in the UI corresponds to the Department entity in the QuickBooks API/docs, and Rutter exposes this tracking dimension using the Department terminology.
Which versions of QuickBooks Online are supported?
Rutter supports creating connections for all versions of QuickBooks. However, depending on the version, you may be missing some functionality. For example, the Simple Start and Essentials versions lack support for Inventory. See QuickBooks's Pricing Page for more information.
Additionally, you can only create a sandbox for Plus and Advanced accounts. See QuickBooks's Sandbox FAQs for more information.
Naming Conventions
Accounting platforms can refer to Rutter objects by different names internally.
Bills
Bills are represented in QuickBooks as Bills.
Vendors
Vendors are represented in QuickBooks as Vendors.
Bill Credit Memos
Bill Credit Memos are represented in QuickBooks as Vendor Credits.
Expenses
Expenses are represented in QuickBooks as Purchases.
Departments
Departments are represented in QuickBooks as Department in their documentation, and as Locations in their UI.
