# QuickBooks Online

> QuickBooks Online: what the collector reads, how to connect it, its permissions, its certification by Atlantic Agentic Labs and its security posture.

Built, not certified Built and tested against recorded and synthetic responses (version 1.0.0, 10 November 2026). Not yet run against the vendor's sandbox or a client environment.

Reads a QuickBooks Online company’s accounts, customers, vendors, invoices, bills, payments, bill payments, journal entries and reports, so finance agents can answer from the books. It only reads. It reads in place, in your deployment; only ids, hashes and counts reach LightHouse.

## At a glance

| Collector                   | QuickBooks Online, version `1.0.0`                                                                                                                                     |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Reads                       | Intuit: QuickBooks Online Accounting API ([the vendor's documentation](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account)) |
| Family                      | Finance                                                                                                                                                                |
| Kind                        | Accounting                                                                                                                                                             |
| Ways to connect             | OAuth approval                                                                                                                                                         |
| Scopes                      | - Read: `com.intuit.quickbooks.accounting`                                                                                                                             |
| Read only                   | Yes, except: \[object Object]                                                                                                                                          |
| Vendor's API can move money | No                                                                                                                                                                     |
| Personal data               | Financial, Contact                                                                                                                                                     |
| Hosts it may contact        | `quickbooks.api.intuit.com`, `sandbox-quickbooks.api.intuit.com`, `oauth.platform.intuit.com`, `{host}`                                                                |
| Vendor API versions         | Accounting API v3, minorversion 75                                                                                                                                     |
| Lowest engine version       | `0.46.0`                                                                                                                                                               |

## What it reads

- **Company information.**
- **Accounts, customers, vendors, invoices, bills, payments, bill payments and journal entries**, each with its amounts and currency (the company’s home currency where a record names none).
- **Reports:** profit and loss, balance sheet, aged receivables, aged payables.
- The first read queries each entity in pages of 1,000. Later reads ask change data capture (`/cdc`) for what changed since the last pull; a record marked `Deleted` is removed. CDC looks back at most 30 days, so a cursor older than 29 days reads everything again.

It does not read attachments, payroll or inventory.

## How to connect

1. In Intuit’s developer portal, make your own app and connect your company to it, giving the `com.intuit.quickbooks.accounting` scope.
2. In LightHouse, open **Setup and admin, Connectors** and choose **QuickBooks Online**.
3. Paste the client id, client secret and refresh token, and give the company’s id (`realm_id`) and the environment (`production` or `sandbox`). Your browser seals it to your deployment; LightHouse never sees it.

The credential is JSON in the variable the source names (`AAL_QUICKBOOKS` by default): `client_id`, `client_secret`, `refresh_token`, `realm_id`, `environment`.

## Permissions

This collector is **read-only** in what it does: `GET` requests (queries, change data capture and reports), and one `POST` to Intuit’s token endpoint (`/oauth2/v1/tokens/bearer`). Its read-only test proves it on every change.

- **The scope is not read-only.** Intuit offers one accounting scope, `com.intuit.quickbooks.accounting`, which can write; there is no read-only variant. The code cannot narrow it, and it does not refuse it: the health check states it as `Intuit's com.intuit.quickbooks.accounting scope can write and has no read-only variant; this connector only reads`. What stops a write is that the collector never sends one.
- **Refused by the code:** nothing, by scope.
- **Not a funds-moving system:** QuickBooks records payments in the ledger; its API does not move money.
- **Refresh token:** Intuit rolls it; the new one is written back to your own secret store in your deployment at once (not to Intuit), and the previous one lapses a day later.
- **Hosts:** `quickbooks.api.intuit.com` or `sandbox-quickbooks.api.intuit.com`, and `oauth.platform.intuit.com` for the token, over https.

## Limits

- Accounting API v3 at `minorversion=75`.
- Requests are paced (0.15 s apart) and retried on 429 and 5xx; Intuit allows 500 a minute per company.
- `realm_id` must be digits, and `environment` `production` or `sandbox`.
- Reports are as Intuit gives them: amounts as text.

## Data handling

- Customers, vendors, invoices and bills hold personal and financial data. Documents carry the `label` you give the source (default `confidential`).
- Content is read in place, in your deployment. LightHouse receives ids, hashes and counts, never the records, and never opens the credential.
- Errors carry a status and fixed text, never a provider’s body.
- The data is audit-ready for your own agents; nothing here certifies anyone against any regulation.

## Troubleshooting

| What you see                                                        | What it means                                   | What to do                                     |
| ------------------------------------------------------------------- | ----------------------------------------------- | ---------------------------------------------- |
| `QuickBooks answered HTTP 401 (the app or its consent was refused)` | The client, secret or refresh token was refused | Check the app, or consent again                |
| `realm_id is the company's id, digits`                              | `realm_id` is not numeric                       | Use the company id from Intuit                 |
| `environment is production or sandbox`                              | The environment is something else               | Correct it                                     |
| `QuickBooks answered HTTP 429`                                      | Rate limit                                      | Nothing; the collector backs off and continues |
| `QuickBooks answered HTTP 403`                                      | The app or user lacks access to the company     | Reconnect the company to the app               |

## Certification

Each entry is a run by Atlantic Agentic Labs, newest first. Only a run against the vendor’s sandbox or a client environment certifies a collector; a certification lasts six months, or less if the vendor publishes an API version the collector does not list. See [How collectors are certified](/collectors/certification/).

| Date             | Collector | Engine   | Vendor API                         | Method                              | Expires        |
| ---------------- | --------- | -------- | ---------------------------------- | ----------------------------------- | -------------- |
| 10 November 2026 | `1.0.0`   | `0.46.0` | Accounting API v3, minorversion 75 | Fixtures only: built, not certified | Not applicable |

## Security posture

From the collector’s last scan on the default branch. What each line means, and what blocks a release: [Security posture](/collectors/security/).

| Last scanned               | 10 November 2026                                                                                                                                                                                                      |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Critical findings          | 0                                                                                                                                                                                                                     |
| High findings              | 0                                                                                                                                                                                                                     |
| Medium findings            | 0                                                                                                                                                                                                                     |
| Low findings               | 0                                                                                                                                                                                                                     |
| Info findings              | 0                                                                                                                                                                                                                     |
| Release blocked            | No                                                                                                                                                                                                                    |
| Network allow-list check   | Pass                                                                                                                                                                                                                  |
| Read-only behavioural test | Pass                                                                                                                                                                                                                  |
| SBOM (CycloneDX)           | Produced                                                                                                                                                                                                              |
| Dependency licences        | Pass                                                                                                                                                                                                                  |
| Scanners                   | bandit 1.9.4, semgrep 1.181.1, pip-audit 2.10.1, osv-scanner 2.7.0, cyclonedx-py 7.5.0, pip-licenses 5.5.5, gitleaks repository job aal-secrets, hosts_check tools/hosts_check.py, read-only test pytest -m read_only |

Source: https://docs.atlanticagenticlabs.com/collectors/catalogue/quickbooks/
