Collect QuickBooks balance sheets in AWS Athena
Keep every QuickBooks balance sheet and profit and loss snapshot as a table that AWS Athena queries. A custom OWOX connector saves the statements on each run, so the position of the books at any date a run captured is a query away.
AWS AthenaRealmReportReportDaily 09:00QuickBooks 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 keep QuickBooks statements as snapshots over time
QuickBooks rebuilds a balance sheet each time you run it, so last quarter's version is whatever the books say today. Snapshots stored in a warehouse keep the report as it was and let you compare it with the result of the same period.
- Compare the position at two dates without rerunning anything
- Read the balance sheet beside the profit and loss for the same period
- Keep Cash and Accrual views apart with report_basis
Your data warehouseQuickBooksBudgetSalesJoined by idPeriod closedResult reviewedOne query reads the snapshot as it was.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.
- Balance Sheet is one of 8 report snapshots among the 26 endpoints
- A custom connector: the credential and company id are yours
Step 2: Load QuickBooks into AWS Athena
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 the database you choose in AWS Athena. The location is pre-filled from your storage, and you can change it.
- Each run stores the report with its period, basis and time
- Every run is logged in Run History
DestinationDatabasequickbooksTablereport_balance_sheetRun
Tablequickbooks.report_balance_she…Step 3: Get a business-friendly QuickBooks output schema
After the first run you get the output schema: the report's period, basis and currency as columns, and the rows and column metadata kept as JSON to unnest in SQL.
- report_rows holds nested sections and data rows
- report_columns is index-aligned with every row
quickbooks.report_balance_sheetOutput schemaFieldDescriptionstart_periodFirst day of the reporting…end_periodLast day of the reporting period.report_basisCash or Accrual (absent on…currencyCurrency code the report…report_rowsNested Section/Data rows as…Step 4: Keep the QuickBooks tables linked
The Balance Sheet and Profit and Loss snapshots share the company in realm_id. Together with Company info they become the statements part of one QuickBooks model.
- Each statement carries realm_id and its period
- Add a budget table to compare plan with fact
Step 5: Schedule the QuickBooks refresh and backfill history
Set it once. A daily scheduled refresh adds a fresh snapshot, and a manual backfill loads statements for earlier periods.
- Daily runs add one more dated snapshot
- Backfill the statements for past closes
Step 6: Reuse the same QuickBooks table everywhere
One table feeds your model, , , assistants and scheduled insights in Slack or email.
- Define the position once
- Every report reads the same snapshot
- 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 AWS Athena
A balance sheet printed from QuickBooks is a picture of today. OWOX keeps each one in your own data warehouse so the past stays queryable.
- You own the data. It lands in your own data warehouse, in tables you control.
- History kept as it was run. The statements are stored as they were run, with their basis.
- Query it where you already do. AWS Athena reads the tables directly.
- One place to fix. When QuickBooks's API changes, you publish one new connector version.
You are booked. The invitation is on its way to , with the calendar invite and the meeting link.