Collect QuickBooks invoices in Google BigQuery
Load QuickBooks invoices, payments and customers into your own BigQuery project with a custom OWOX connector: one table per endpoint, readable columns, a refresh on a schedule. Receivables then join to Shopify orders and ad spend.
QuickBooks Endpoints
26 QuickBooks endpoints you can import. Each lands in its own table in your data warehouse.
A/P Aging Summary report
A/P Aging Summary as of report_date (window end): one row per vendor with aging buckets.
11 fieldsTime seriesA/R Aging Summary report
A/R Aging Summary as of report_date (window end): one row per customer with Current, 1-30, 31-60, 61-90, 91+ and Total columns.
11 fieldsTime seriesAccounts
Chart of accounts, active and inactive.
20 fieldsBalance Sheet report
Balance Sheet as of the run window end (Assets, Liabilities, Equity by account).
12 fieldsTime seriesBill payments
Payments against vendor bills; joins to Bill through Line[].LinkedTxn.
23 fieldsBills
Vendor bills (payables).
25 fieldsCash Flow report
Statement of Cash Flows for the run window.
12 fieldsTime seriesCompany info
One row per company: names, country, fiscal-year start.
15 fieldsCredit memos
Credits issued to customers (reduce receivables; negative revenue in reconciliations).
23 fieldsCustomers
Customers, including inactive ones and sub-customers, with open balance and a flattened billing address.
28 fieldsDeposits
Bank deposits, including the ones that group undeposited customer payments.
21 fieldsGeneral Ledger Detail report
General Ledger: every posting line per account for the run window, with opening balance and totals.
12 fieldsTime seriesInvoice changes (CDC, incl. deletes)
Change data capture for Invoice: every invoice created, updated or deleted since the run window start, full payload, deleted ones with status = Deleted.
9 fieldsTime seriesInvoices
Invoices with header amounts, customer and Line[] as JSON (SalesItemLineDetail.ItemRef, Qty, UnitPrice, Amount).
36 fieldsItems
Products and services with price, purchase cost and the three account links.
25 fieldsJournal entries
Manual and adjusting journal entries; the postings the transaction tables miss.
15 fieldsPayments
Customer payments.
21 fieldsPreferences
One row per company: home currency, multi-currency flag, fiscal-year and tracking settings.
17 fieldsProfit and Loss report
Profit and Loss per run window, one column per month (summarize_column_by=Month), rows nested by account group.
12 fieldsTime seriesPurchases
Expenses paid directly (cash, check, card) without a bill.
26 fieldsRefund receipts
Money refunded to customers.
26 fieldsSales by Customer report
Sales by Customer Summary for the run window.
12 fieldsTime seriesSales receipts
Sales paid at the time of sale (no receivable).
27 fieldsTransfers
Money moved between balance-sheet accounts.
16 fieldsVendor Expenses report
Expenses by Vendor for the run window.
12 fieldsTime seriesVendors
Vendors, including inactive ones, with open payable balance.
19 fields
Why join QuickBooks receivables with sales and ad data
Ask what revenue was last month and QuickBooks answers with what was invoiced. Shopify answers with what was ordered, and the ad platforms with what was spent. To see where they differ, all of it has to sit in one warehouse.
- Reconcile invoiced revenue with orders in one query
- Separate billed from paid with the payments table beside the invoices
- Set daily billing beside daily ad spend
Step 1: Connect QuickBooks and pick the fields
Create a Data Mart, choose QuickBooks as the source and authorize QuickBooks Online with OAuth. Add the company (realm) id, open an endpoint and tick only the fields you need.
- Invoices alone carries customer, dates, amounts, balance and tax
- A custom connector: the credential and company id are yours
Step 2: Load QuickBooks into Google BigQuery
Each endpoint becomes its own table, and refresh settings are set in the Data Mart. Run it and the first load lands as a table in a dataset of your own Google BigQuery project. The location is pre-filled from your storage, and you can change it.
- Each endpoint gets its own table, not one table for the books
- Every run is logged in Run History
Step 3: Get a business-friendly QuickBooks output schema
After the first run you get the output schema: every field with its type and, for key fields, a plain description. Your quality checks can read it too.
- id and realm_id together identify a record, and the schema says so
- txn_date, due_date and balance are typed columns, ready for ageing buckets
Step 4: Keep the QuickBooks tables linked
Customers, invoices and payments stay separate tables, joined by customer_id. Together they become one QuickBooks model, ready to join to orders and ad spend.
- Invoices carry customer_id; payments carry it too
- Add Shopify orders and ad platforms to the same model
Step 5: Schedule the QuickBooks refresh and backfill history
Set it once. A daily scheduled refresh keeps the tables current, and a manual backfill loads any past period. The connector reads by last_updated_time, so edits to old invoices are picked up, and deleted invoices come through Invoice changes (CDC).
- Daily runs with no pipeline to maintain
- Backfill the invoice history the first time you connect
Step 6: Reuse the same QuickBooks table everywhere
One table feeds your model, , , assistants and scheduled insights in Slack or email.
- Define billed and paid once
- Every report reads the same table
- 0.41.0Rotating a warehouse key is one change: Storages share reusable Credentials
- 0.41.0Dates from Google Sheets arrive as dates, not text
- 0.41.0Shared SQL logic stays in one place: build a Data Mart on top of another
- 0.41.0Rotating a connector key is one change: Sources share reusable Credentials
- 0.40.0Connecting a plan from Google Sheets takes fewer guesses
Why OWOX for QuickBooks in Google BigQuery
QuickBooks reports, hand-built API scripts or a generic ETL tool each get the invoices out. OWOX also keeps them yours, readable and ready to join to sales and spend.
- You own the data. It lands in your own data warehouse, in tables you control.
- A custom connector, built to be extended. The QuickBooks connector is made in OWOX Data Marts, so a field or an endpoint can be added when the books need it.
- Ready for a data model. Separate tables per endpoint, joined by ids, built to connect to orders, ad spend and web analytics.
- One place to fix. When Intuit changes its API, you fix one connector, not a pile of scripts.
You are booked. The invitation is on its way to , with the calendar invite and the meeting link.