Skip to content

QuickBooks Online

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.

CollectorQuickBooks Online, version 1.0.0
ReadsIntuit: QuickBooks Online Accounting API (the vendor's documentation)
FamilyFinance
KindAccounting
Ways to connectOAuth approval
Scopes
  • Read: com.intuit.quickbooks.accounting
Read onlyYes, except: [object Object]
Vendor's API can move moneyNo
Personal dataFinancial, Contact
Hosts it may contactquickbooks.api.intuit.com, sandbox-quickbooks.api.intuit.com, oauth.platform.intuit.com, {host}
Vendor API versionsAccounting API v3, minorversion 75
Lowest engine version0.46.0
  • 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.

  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.

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.
  • 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.
  • 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.
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

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.

DateCollectorEngineVendor APIMethodExpires
10 November 20261.0.00.46.0Accounting API v3, minorversion 75Fixtures only: built, not certifiedNot applicable

From the collector’s last scan on the default branch. What each line means, and what blocks a release: Security posture.

Last scanned10 November 2026
Critical findings0
High findings0
Medium findings0
Low findings0
Info findings0
Release blockedNo
Network allow-list checkPass
Read-only behavioural testPass
SBOM (CycloneDX)Produced
Dependency licencesPass
Scannersbandit 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