Skip to content

QuickBooks Online

Fetch bank transactions from QuickBooks Online, including deposits, purchases, and transfers.

Create a QuickBooks app at developer.intuit.com and complete the OAuth 2.0 flow. Save your credentials to a JSON file:

{
"client_id": "AB...",
"client_secret": "...",
"access_token": "eyJ...",
"refresh_token": "AB...",
"realm_id": "123456789"
}

VisiGrid automatically refreshes expired access tokens and writes the updated credentials back to the file.

Terminal window
vgrid fetch qbo --credentials qbo-creds.json --account "Business Checking" \
--from 2026-01-01 --to 2026-02-01 --out qbo.csv

Or pass the access token directly (no auto-refresh):

Terminal window
vgrid fetch qbo --access-token eyJ... --realm-id 123456789 \
--account-id 42 --from 2026-01-01 --to 2026-02-01 --out qbo.csv
FlagDescriptionDefault
--fromStart date inclusive (YYYY-MM-DD)required
--toEnd date exclusive (YYYY-MM-DD)required
--credentialsPath to OAuth2 JSON file
--access-tokenDirect access token (requires --realm-id)
--realm-idQBO company realm ID
--accountBank account name (resolved to ID)
--account-idBank account ID directly
--includeEntity types to fetchdeposit,purchase,transfer
--outOutput CSV pathstdout
-q / --quietSuppress progress messagesoff
--sandboxUse QBO sandbox APIoff
QBO entityPaymentTypeCanonical type
Depositdeposit
PurchaseCashwithdrawal
PurchaseCheckcheck
Purchaseany otherexpense
Transfertransfer (signed by direction)

Purchase amounts are negated (outflow). Transfer sign depends on whether your account is the source or destination.

  • effective_dateTxnDate from QuickBooks
  • posted_date — same as effective_date (QBO does not distinguish)

Account resolution. --account performs a query for the bank account name. Apostrophes in account names are escaped automatically. If the name is ambiguous, VisiGrid shows all matching accounts with their fully qualified names.

Client-side account filtering. QBO’s query API does not support filtering deposits and purchases by bank account, so VisiGrid fetches all transactions in the date range and filters client-side by account ID.

--include filter. Comma-separated list of entity types: deposit, purchase, transfer. Defaults to all three.

source_id format. Prefixed with the entity type: deposit:101, purchase:201, transfer:301.

Pagination. Offset-based (STARTPOSITION / MAXRESULTS 1000) ordered by TxnDate ASC, Id ASC.

Sort order. effective_date ascending, then source_id ascending.