---
title: "Retrieve a job report"
method: GET
path: "/quickbooks-desktop/reports/job"
---

# Retrieve a job report

`GET /quickbooks-desktop/reports/job`

Retrieves a QuickBooks Desktop job report for estimates versus actuals, item profitability, or job profitability. This report is useful for project costing, margin analysis, and estimate tracking by customer or job; job profitability detail and estimates-versus-actuals detail report types require a customer or job filter.

## Query parameters

- `reportType` 'item_estimates_vs_actuals' | 'item_profitability' | 'job_estimates_vs_actuals_detail' | 'job_estimates_vs_actuals_summary' | 'job_profitability_detail' | 'job_profitability_summary', required — The job report type to retrieve.
- `reportDateFrom` string, date — Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.
- `reportDateTo` string, date — Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.
- `reportDateMacro` 'all' | 'today' | 'this_week' | 'this_week_to_date' | 'this_month' | 'this_month_to_date' | 'this_quarter' | 'this_quarter_to_date' | 'this_year' | 'this_year_to_date' | 'yesterday' | 'last_week' | 'last_week_to_date' | 'last_month' | 'last_month_to_date' | 'last_quarter' | 'last_quarter_to_date' | 'last_year' | 'last_year_to_date' | 'next_week' | 'next_four_weeks' | 'next_month' | 'next_quarter' | 'next_year' — A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.
- `accountType` 'accounts_payable' | 'accounts_receivable' | 'allowed_for_1099' | 'ap_and_sales_tax' | 'ap_or_credit_card' | 'ar_and_ap' | 'asset' | 'balance_sheet' | 'bank' | 'bank_and_ar_and_ap_and_uf' | 'bank_and_uf' | 'cost_of_sales' | 'credit_card' | 'current_asset' | 'current_asset_and_expense' | 'current_liability' | 'equity' | 'equity_and_income_and_expense' | 'expense_and_other_expense' | 'fixed_asset' | 'income_and_expense' | 'income_and_other_income' | 'liability' | 'liability_and_equity' | 'long_term_liability' | 'non_posting' | 'ordinary_expense' | 'ordinary_income' | 'ordinary_income_and_cogs' | 'ordinary_income_and_expense' | 'other_asset' | 'other_current_asset' | 'other_current_liability' | 'other_expense' | 'other_income' | 'other_income_or_expense' — Filter report rows by account type. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.
- `accountIds` string[] — Filter report rows by QuickBooks-assigned account IDs. Accepts one or more account IDs. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.
- `accountFullNames` string[] — Filter report rows by account `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more account full names. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.
- `entityType` 'customer' | 'employee' | 'other_name' | 'vendor' — Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.
- `entityIds` string[] — Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.
- `entityFullNames` string[] — Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.
- `itemType` 'all_except_fixed_asset' | 'assembly' | 'discount' | 'fixed_asset' | 'inventory' | 'inventory_and_assembly' | 'non_inventory' | 'other_charge' | 'payment' | 'sales' | 'sales_tax' | 'service' — Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.
- `itemIds` string[] — Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.
- `itemFullNames` string[] — Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.
- `classIds` string[] — Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.
- `classFullNames` string[] — Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.
- `transactionTypes` string[] — Filter report rows by transaction type. Accepts one or more transaction types.
- `detailLevel` 'all' | 'all_except_summary' | 'summary_only' — The report detail level to include. Use `all` for all rows, `all_except_summary` to omit summary rows, or `summary_only` to return only summary rows.
- `postingStatus` 'either' | 'non_posting' | 'posting' — Filter report rows that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.
- `updatedAfter` string, date — Filter report rows updated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.
- `updatedBefore` string, date — Filter report rows updated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.
- `updatedDateMacro` 'all' | 'today' | 'this_week' | 'this_week_to_date' | 'this_month' | 'this_month_to_date' | 'this_quarter' | 'this_quarter_to_date' | 'this_year' | 'this_year_to_date' | 'yesterday' | 'last_week' | 'last_week_to_date' | 'last_month' | 'last_month_to_date' | 'last_quarter' | 'last_quarter_to_date' | 'last_year' | 'last_year_to_date' | 'next_week' | 'next_four_weeks' | 'next_month' | 'next_quarter' | 'next_year' — A QuickBooks Desktop relative updated-date macro. Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.
- `summarizeColumnsBy` 'account' | 'balance_sheet' | 'class' | 'customer' | 'customer_type' | 'day' | 'employee' | 'four_week' | 'half_month' | 'income_statement' | 'item_detail' | 'item_type' | 'month' | 'payee' | 'payment_method' | 'payroll_item_detail' | 'payroll_ytd_detail' | 'quarter' | 'sales_representative' | 'sales_tax_code' | 'shipping_method' | 'terms' | 'total_only' | 'two_week' | 'vendor' | 'vendor_type' | 'week' | 'year' — How QuickBooks Desktop calculates report data and labels report column headers.
- `includeSubcolumns` boolean — Whether to include subcolumns in the report. **NOTE**: QuickBooks Desktop may still omit subcolumns that it can easily compute from other returned values.

## Headers

- `Conductor-End-User-Id` string, required — The ID of the End-User to receive this request.

## Response `200`

Returns the requested job report.

- QbdReport
  - `objectType` 'qbd_report', required — The type of object. This value is always `"qbd_report"`.
  - `category` 'general_summary' | 'general_detail' | 'aging' | 'budget_summary' | 'job' | 'time' | 'custom_detail' | 'custom_summary' | 'payroll_detail' | 'payroll_summary', required — The report category.
  - `reportType` 'balance_sheet_by_class' | 'balance_sheet_previous_year_comparison' | 'balance_sheet_standard' | 'balance_sheet_summary' | 'customer_balance_summary' | 'expense_by_vendor_summary' | 'income_by_customer_summary' | 'inventory_stock_status_by_item' | 'inventory_stock_status_by_vendor' | 'income_tax_summary' | 'inventory_valuation_summary' | 'inventory_valuation_summary_by_site' | 'lot_number_in_stock_by_site' | 'physical_inventory_worksheet' | 'profit_and_loss_by_class' | 'profit_and_loss_by_job' | 'profit_and_loss_previous_year_comparison' | 'profit_and_loss_standard' | 'profit_and_loss_ytd_comparison' | 'purchase_by_item_summary' | 'purchase_by_vendor_summary' | 'sales_by_customer_summary' | 'sales_by_item_summary' | 'sales_by_sales_representative_summary' | 'sales_tax_liability' | 'sales_tax_revenue_summary' | 'serial_number_in_stock_by_site' | 'trial_balance' | 'vendor_balance_summary' | '1099_detail' | 'audit_trail' | 'balance_sheet_detail' | 'check_detail' | 'customer_balance_detail' | 'deposit_detail' | 'estimates_by_job' | 'expense_by_vendor_detail' | 'general_ledger' | 'income_by_customer_detail' | 'income_tax_detail' | 'inventory_valuation_detail' | 'job_progress_invoices_vs_estimates' | 'journal' | 'missing_checks' | 'open_invoices' | 'open_purchase_orders' | 'open_purchase_orders_by_job' | 'open_sales_order_by_customer' | 'open_sales_order_by_item' | 'pending_sales' | 'profit_and_loss_detail' | 'purchase_by_item_detail' | 'purchase_by_vendor_detail' | 'sales_by_customer_detail' | 'sales_by_item_detail' | 'sales_by_sales_representative_detail' | 'transaction_detail_by_account' | 'transaction_list_by_customer' | 'transaction_list_by_date' | 'transaction_list_by_vendor' | 'unpaid_bills_detail' | 'unbilled_costs_by_job' | 'vendor_balance_detail' | 'ap_aging_detail' | 'ap_aging_summary' | 'ar_aging_detail' | 'ar_aging_summary' | 'collections_report' | 'balance_sheet_budget_overview' | 'balance_sheet_budget_vs_actual' | 'profit_and_loss_budget_overview' | 'profit_and_loss_budget_performance' | 'profit_and_loss_budget_vs_actual' | 'item_estimates_vs_actuals' | 'item_profitability' | 'job_estimates_vs_actuals_detail' | 'job_estimates_vs_actuals_summary' | 'job_profitability_detail' | 'job_profitability_summary' | 'time_by_item' | 'time_by_job_detail' | 'time_by_job_summary' | 'time_by_name' | 'custom_transaction_detail' | 'custom_summary' | 'employee_state_taxes_detail' | 'payroll_item_detail' | 'payroll_review_detail' | 'payroll_transaction_detail' | 'payroll_transactions_by_payee' | 'employee_earnings_summary' | 'payroll_liability_balances' | 'payroll_summary', required — The report type.
  - `title` string, nullable, required — The report title.
  - `subtitle` string, nullable, required — The report subtitle.
  - `basis` 'accrual' | 'cash' | 'none', nullable, required — The accounting basis.
  - `rowCount` number, nullable, required — The number of rows in the report.
  - `columnCount` number, nullable, required — The number of columns in the report.
  - `columnTitleRowCount` number, nullable, required — The number of title rows for the report columns.
  - `columns` object[], required — The report columns, in display order. Use each column's `columnId` to match row cells to columns.
    - `columnId` string, required — The report column identifier. QuickBooks Desktop numbers columns from left to right, starting at 1. Use this value to match row cells to columns.
    - `columnType` string, required — The report column type, describing the business meaning of the column, such as `date`, `amount`, or `transaction_type`.
    - `dataType` string, nullable, required — The raw value data type for this column, such as `string`, `amount`, or `date`. This is `null` if QuickBooks Desktop does not provide a data type.
    - `titles` object[], required — The column title cells. Reports can use multiple title rows.
      - `rowNumber` number, required — The one-based title row number. Reports can have multiple title rows.
      - `value` string, nullable, required — The title text for this column title row. This is `null` if QuickBooks Desktop does not provide one.
  - `rows` union[], required — The report rows, in display order. Rows can be text rows, detail data rows, subtotal rows, or total rows.
    - union
      - object
        - `kind` 'text', required — The row kind. This value is always `"text"`.
        - `rowNumber` number, required — The one-based row number from the report.
        - `text` string, nullable, required — The text row value. Text rows are mainly used for headings. This is `null` if QuickBooks Desktop does not provide one.
      - object
        - `kind` 'data', required — The row kind. This value is always `"data"`.
        - `rowNumber` number, required — The one-based row number from the report.
        - `rowDescriptor` object, nullable, required — The row-level descriptor provided by QuickBooks Desktop. This is separate from the row's table values in `cells` and is `null` when QuickBooks Desktop does not provide one.
          - `type` string, nullable, required — The kind of row-level descriptor, such as `account`, `customer`, or `vendor`. This is `null` if QuickBooks Desktop does not provide one.
          - `value` string, nullable, required — The row-level descriptor value. This can differ from the first cell value and is `null` if QuickBooks Desktop does not provide one.
        - `cells` object[], required — The cells in this report row. Report rows are sparse, so cells appear only for columns where QuickBooks Desktop returned a value.
          - `columnId` string, required — The column identifier for this cell. This matches a column's `columnId` and refers to the column's left-to-right position in the report.
          - `value` string, nullable, required — The cell value as a QuickBooks Desktop-formatted string. This is `null` if QuickBooks Desktop does not provide a value for the cell.
          - `dataType` string, nullable, required — The value data type for this cell. If QuickBooks Desktop omits the cell data type, this uses the matching column's `dataType` when available.
      - object
        - `kind` 'subtotal', required — The row kind. This value is always `"subtotal"`.
        - `rowNumber` number, required — The one-based row number from the report.
        - `rowDescriptor` object, nullable, required — The row-level descriptor provided by QuickBooks Desktop. This is separate from the row's table values in `cells` and is `null` when QuickBooks Desktop does not provide one.
          - `type` string, nullable, required — The kind of row-level descriptor, such as `account`, `customer`, or `vendor`. This is `null` if QuickBooks Desktop does not provide one.
          - `value` string, nullable, required — The row-level descriptor value. This can differ from the first cell value and is `null` if QuickBooks Desktop does not provide one.
        - `cells` object[], required — The cells in this report row. Report rows are sparse, so cells appear only for columns where QuickBooks Desktop returned a value.
          - `columnId` string, required — The column identifier for this cell. This matches a column's `columnId` and refers to the column's left-to-right position in the report.
          - `value` string, nullable, required — The cell value as a QuickBooks Desktop-formatted string. This is `null` if QuickBooks Desktop does not provide a value for the cell.
          - `dataType` string, nullable, required — The value data type for this cell. If QuickBooks Desktop omits the cell data type, this uses the matching column's `dataType` when available.
      - object
        - `kind` 'total', required — The row kind. This value is always `"total"`.
        - `rowNumber` number, required — The one-based row number from the report.
        - `rowDescriptor` object, nullable, required — The row-level descriptor provided by QuickBooks Desktop. This is separate from the row's table values in `cells` and is `null` when QuickBooks Desktop does not provide one.
          - `type` string, nullable, required — The kind of row-level descriptor, such as `account`, `customer`, or `vendor`. This is `null` if QuickBooks Desktop does not provide one.
          - `value` string, nullable, required — The row-level descriptor value. This can differ from the first cell value and is `null` if QuickBooks Desktop does not provide one.
        - `cells` object[], required — The cells in this report row. Report rows are sparse, so cells appear only for columns where QuickBooks Desktop returned a value.
          - `columnId` string, required — The column identifier for this cell. This matches a column's `columnId` and refers to the column's left-to-right position in the report.
          - `value` string, nullable, required — The cell value as a QuickBooks Desktop-formatted string. This is `null` if QuickBooks Desktop does not provide a value for the cell.
          - `dataType` string, nullable, required — The value data type for this cell. If QuickBooks Desktop omits the cell data type, this uses the matching column's `dataType` when available.

---

[API](https://skmtc.net/conductor-is/apis/conductor-api.md) · [All operations](https://skmtc.net/conductor-is/apis/conductor-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/conductor-is/conductor-api/revisions/0b07b3ebe160/schema)
