quickbooks_* — QuickBooks Online

The QuickBooks Online tool namespace — the SQL-like query workhorse, entity CRUD with sync tokens, standard financial reports, and CSV export.

QuickBooks Online (QBO) accounting. The defining feature of this namespace is that most lookups go through quickbooks_query — a SQL-like query against QBO’s queryable tables — not through per-record getters. The mutation tools carry QBO’s sync-token concurrency model, which is the thing that trips people up.

Querying

quickbooks_query

Run a raw QBO SQL-like query. This is the primary read path.

quickbooks_query(query, max_results=None, start_position=None)
ParamTypeNotes
querystringQBO query, e.g. SELECT * FROM Invoice WHERE Balance > '0'
max_resultsintPage size
start_positionint1-indexed pagination offset

QBO’s query dialect is not full SQL — no JOIN, limited functions. Filter on indexed fields and paginate with start_position + max_results.

quickbooks_get

Single record by ID, or a filtered list of an entity type.

quickbooks_get(entity_type, id=None, filters=None)

Note id is a string here (QBO IDs are string-typed).

Mutating (and the sync-token model)

QBO uses optimistic concurrency: every entity carries a SyncToken that must match on update/delete. The tools will fetch the current token for you when you omit it, but passing a stale one explicitly will fail.

quickbooks_create

quickbooks_create(entity_type, data)

quickbooks_update

quickbooks_update(entity_type, id, data, sparse=True, sync_token=None)
ParamDefaultNotes
sparseTrueSparse update — only the fields in data change. Set False for a full replace (must send the complete object).
sync_tokenNoneOmit to use the current token; pass one only if you’re managing concurrency yourself

sparse=True is almost always what you want — it avoids accidentally blanking fields you didn’t include.

quickbooks_delete

quickbooks_delete(entity_type, id, sync_token=None)

Destructive, and subject to the same sync-token rules.

Reports

quickbooks_report

Run a standard QBO financial report (P&L, Balance Sheet, A/R Aging, etc.).

quickbooks_report(report_type, start_date=None, end_date=None, date=None,
                  accounting_method=None, summarize_column_by=None,
                  report_name=None, params=None)
ParamNotes
report_typeRequired — the QBO report endpoint name (e.g. ProfitAndLoss, BalanceSheet, AgedReceivables)
start_date / end_dateDate range for period reports (YYYY-MM-DD)
dateAs-of date for point-in-time reports (e.g. aging)
accounting_methodCash or Accrual
summarize_column_byColumn grouping (e.g. Month, Customer)
paramsEscape hatch for any report-specific query params

quickbooks_export

Export records of an entity type to CSV, paginating automatically.

quickbooks_export(entity_type, filters=None, max_records=1000)

Use this for bulk pulls (reconciliation, analysis) where a single query page isn’t enough. max_records caps the total pulled (default 1000).