QuickBooks Online and Looker integration
QuickBooks Online holds your invoices, bills, expenses, and general ledger. Looker turns data into dashboards and reports. Connecting them brings live accounting metrics and trends into your business intelligence platform so finance teams, operations, and leadership can see the state of payables, receivables, and profitability without re-exporting data each month. ml-connector polls QuickBooks Online on a schedule you set and lands the records into Looker's query engine, ready for modeling and visualization.
What moves between them
Data flows from QuickBooks Online into Looker. ml-connector polls QuickBooks Online for invoices, bills, vendors, customers, journal entries, and accounts on a schedule you define, then loads those records into Looker via the query API or via webhook delivery to a data warehouse that Looker models. The sync is pull-only from QuickBooks Online; Looker acts as a consumer, not a source. Bill payment history and GL posting details refresh at the same cadence as invoices and bills, so your P&L and balance-sheet dashboards reflect the latest transactional state.
How ml-connector handles it
ml-connector manages two separate OAuth2 token cycles: QuickBooks Online (hourly refresh) and Looker (hourly re-login). It accepts the realm_id per QuickBooks Online customer, since the realm_id identifies the company within Intuit's multi-tenant platform. On the QuickBooks Online side, ml-connector uses the CDC endpoint for polling when available, with a 30-day lookback, and can also subscribe to webhooks if the customer enables them; webhook payloads trigger a full record fetch via GET to ensure all fields are captured. Because webhook payloads may arrive out-of-order or duplicated, ml-connector de-duplicates by entity ID and SyncToken. For Looker, it either posts records via the query API into a target table (if Looker's warehouse connection permits writes) or stages them for a Scheduled Plan to retrieve via S3 or SFTP. QuickBooks Online enforces SyncToken on every update, so ml-connector tracks the token and includes it on any write attempt; if a token is stale, the write fails and must be retried with the current token. Looker token expiration at 1 hour means ml-connector re-authenticates before every batch of queries, ensuring no mid-batch token timeout.
A real-world example
A 50-person product-services firm uses QuickBooks Online for billing and expense management and maintains a data warehouse connected to Looker for finance and operations dashboards. Previously, the finance team exported the P&L and aging reports from QuickBooks Online each week as CSVs and manually uploaded them to the warehouse for Looker to model. Now, with QuickBooks Online and Looker connected via ml-connector, new invoices, bill payments, and GL transactions flow into the warehouse on a daily schedule, Looker models refresh automatically, and the finance dashboards show real-time payables, receivables, and cash position without any manual export or upload step.
What you can do
- Poll QuickBooks Online invoices, bills, vendors, customers, and journal entries on a schedule and deliver them to Looker for modeling and dashboards.
- Manage separate OAuth2 token cycles for QuickBooks Online (1-hour expiry) and Looker (1-hour re-login) with automatic refresh.
- Handle QuickBooks Online SyncToken requirements for concurrency control and retry failed updates with the latest token.
- De-duplicate QuickBooks Online webhook payloads and fetch full records to ensure all fields are captured.
- Stage accounting records for Looker Scheduled Plans to deliver into S3, SFTP, or email with cron-driven frequency.
Questions
- Does ml-connector write data back to QuickBooks Online from Looker?
- No. The sync is pull-only from QuickBooks Online into Looker. Looker acts as a consumer for analytics and reporting, not a source for updates to QuickBooks Online. If you need to update QuickBooks Online records, that goes through a separate integration.
- How does ml-connector handle QuickBooks Online's OAuth2 token expiration and realm ID management?
- ml-connector refreshes QuickBooks Online access tokens (1-hour expiry) before they expire and stores the realm_id per customer since QuickBooks Online is multi-tenant. It also tracks SyncToken on all records to satisfy QuickBooks Online's concurrency control requirement on updates. If a SyncToken becomes stale, ml-connector fetches the current token and retries.
- What if QuickBooks Online webhook delivery is not available or unreliable?
- ml-connector falls back to polling the QuickBooks Online CDC endpoint, which maintains 30 days of change history. Scheduled polling ensures records are captured even if webhooks are delayed or lost, and the deduplication logic handles any overlapping webhook and polling data.
Related integrations
More QuickBooks Online integrations
Other systems that connect to Looker
Connect QuickBooks Online and Looker
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started