
Reports Run
CertifiedRun a QuickBooks report
Reports Run
Run a QuickBooks report
Runs a report of the QuickBooks Reports API and flattens its rows into rows (or an Ion file with fetchType: STORE). The untouched response is returned in raw when includeRaw is true.
type: io.kestra.plugin.quickbooks.reports.RunExamples
Run the Profit and Loss report for the quarter
id: qbo_profit_and_loss
namespace: company.finance
tasks:
- id: pnl
type: io.kestra.plugin.quickbooks.reports.Run
clientId: "{{ secret('QBO_CLIENT_ID') }}"
clientSecret: "{{ secret('QBO_CLIENT_SECRET') }}"
refreshToken: "{{ secret('QBO_REFRESH_TOKEN') }}"
realmId: "{{ secret('QBO_REALM_ID') }}"
report: ProfitAndLoss
startDate: "2026-01-01"
endDate: "2026-03-31"
Run the Aged Receivables report on an accrual basis for one customer
id: qbo_aged_receivables
namespace: company.finance
tasks:
- id: aged_receivables
type: io.kestra.plugin.quickbooks.reports.Run
clientId: "{{ secret('QBO_CLIENT_ID') }}"
clientSecret: "{{ secret('QBO_CLIENT_SECRET') }}"
refreshToken: "{{ secret('QBO_REFRESH_TOKEN') }}"
realmId: "{{ secret('QBO_REALM_ID') }}"
report: AgedReceivables
customer: "58"
accountingMethod: ACCRUAL
Store a large General Ledger report in internal storage and keep the raw response
id: qbo_general_ledger
namespace: company.finance
tasks:
- id: general_ledger
type: io.kestra.plugin.quickbooks.reports.Run
clientId: "{{ secret('QBO_CLIENT_ID') }}"
clientSecret: "{{ secret('QBO_CLIENT_SECRET') }}"
refreshToken: "{{ secret('QBO_REFRESH_TOKEN') }}"
realmId: "{{ secret('QBO_REALM_ID') }}"
report: GeneralLedger
startDate: "2026-01-01"
endDate: "2026-12-31"
fetchType: STORE
includeRaw: true
Properties
clientId *string
QuickBooks Client ID
The OAuth2 Client ID for your QuickBooks application
clientSecret *string
QuickBooks Client Secret
The OAuth2 Client Secret for your QuickBooks application
realmId *string
QuickBooks Realm ID
The Realm ID (Company ID) for the QuickBooks account. Digits only, checked after rendering.
refreshToken *string
QuickBooks Refresh Token
A valid OAuth2 refresh token. Kestra will automatically rotate and persist it in the KV Store. Note: Token rotation is not cross-worker concurrency safe, and failed KV store writes may result in lost tokens.
report *string
Report
The report to run. Case-insensitive, one of AgedReceivables, AgedReceivableDetail, AgedPayables, ProfitAndLoss, BalanceSheet, GeneralLedger, CustomerBalance, TrialBalance or CashFlow.
accountingMethod string
CASHACCRUALAccounting method
CASH or ACCRUAL (uppercase, case-sensitive). Sent to QuickBooks as Cash or Accrual in accounting_method; QuickBooks uses the company preference when unset.
assets
Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.
io.kestra.core.models.assets.AssetsDeclaration
IGNOREFAILWARNAsset failure behavior
Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.
Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.
The assets consumed as inputs.
io.kestra.core.models.assets.AssetIdentifier
1The assets produced as outputs.
io.kestra.plugin.ee.assets.Dataset
1150{}1150io.kestra.plugin.ee.assets.File
1150{}1150io.kestra.plugin.ee.assets.Table
1150{}1150io.kestra.plugin.ee.assets.VM
1150{}1150io.kestra.core.models.assets.External
1150{}1150io.kestra.core.models.assets.Custom
11501Custom asset type
{}1150authUrl string
https://oauth.platform.intuit.com/oauth2/v1/tokens/bearerAuthentication URL
The OAuth2 token endpoint. Must be an intuit.com domain.
baseUrl string
https://quickbooks.api.intuit.comBase URL
The Base URL for QuickBooks API. Must be an intuit.com domain. Defaults to production.
customer string
Customer
Restricts the report to this customer id, sent as customer.
endDate string
End date
Last day of the report period (yyyy-MM-dd). Sent as end_date; QuickBooks applies its own default when unset.
fetchType string
FETCHSTOREFETCHFETCH_ONENONEThe way to consume the report rows
FETCH returns the flattened rows in the rows output (fine for small reports). STORE writes them to an internal storage Ion file returned as uri, which is safer for a GeneralLedger or TrialBalance over a long period. NONE returns neither, only size. FETCH_ONE is not supported.
includeRaw booleanstring
falseInclude the raw response
When true, the untouched QuickBooks response is also returned in the raw output. It is off by default because it repeats the data of rows and doubles the size of the execution outputs.
minorVersion integerstring
75Minor Version
The minor version of the QuickBooks API to use. Must be 1 or more, checked after rendering.
parameters object
Additional report parameters
Any other query parameter of the report, for example department or class. The typed properties win over a parameter with the same name.
startDate string
Start date
First day of the report period (yyyy-MM-dd). Sent as start_date; QuickBooks applies its own default when unset.
summarizeColumnBy string
Summarize columns by
How the columns are grouped, sent as summarize_column_by. For example Total, Month, Week, Days, Quarter, Year, Customers or Vendors. The accepted values depend on the report, see the QuickBooks documentation.
Outputs
raw object
Raw report
The parsed JSON response of QuickBooks, with Header, Columns and Rows. Only set when includeRaw is true.
rows array
Rows
One map per data or summary row of the report, keyed by column title. section holds the enclosing section names joined with > and type is Data or Summary. Only set with fetchType: FETCH.
size integer
Size
The number of flattened rows of the report.
uri string
uriRows URI
The internal storage URI of the Ion file holding the flattened rows. Only set with fetchType: STORE.