import Conductor from 'conductor-node';
const conductor = new Conductor({
apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted
});
const report = await conductor.qbd.reports.job({
reportType: 'item_estimates_vs_actuals',
conductorEndUserId: 'end_usr_1234567abcdefg',
});
console.log(report.basis);import os
from conductor import Conductor
conductor = Conductor(
api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted
)
report = conductor.qbd.reports.job(
report_type="item_estimates_vs_actuals",
conductor_end_user_id="end_usr_1234567abcdefg",
)
print(report.basis)curl --request GET \
--url https://api.conductor.is/v1/quickbooks-desktop/reports/job \
--header 'Authorization: Bearer <token>' \
--header 'Conductor-End-User-Id: <conductor-end-user-id>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.conductor.is/v1/quickbooks-desktop/reports/job",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Conductor-End-User-Id: <conductor-end-user-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.conductor.is/v1/quickbooks-desktop/reports/job"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Conductor-End-User-Id", "<conductor-end-user-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.conductor.is/v1/quickbooks-desktop/reports/job")
.header("Conductor-End-User-Id", "<conductor-end-user-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.conductor.is/v1/quickbooks-desktop/reports/job")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Conductor-End-User-Id"] = '<conductor-end-user-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"objectType": "qbd_report",
"category": "general_summary",
"reportType": "trial_balance",
"title": "Trial Balance",
"subtitle": "As of February 1, 2025",
"basis": "accrual",
"rowCount": 7,
"columnCount": 3,
"columnTitleRowCount": 2,
"columns": [
{
"columnId": "<string>",
"columnType": "<string>",
"dataType": "<string>",
"titles": [
{
"rowNumber": 123,
"value": "<string>"
}
]
}
],
"rows": [
{
"kind": "text",
"rowNumber": 123,
"text": "<string>"
}
]
}Retrieve a job report
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.
import Conductor from 'conductor-node';
const conductor = new Conductor({
apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted
});
const report = await conductor.qbd.reports.job({
reportType: 'item_estimates_vs_actuals',
conductorEndUserId: 'end_usr_1234567abcdefg',
});
console.log(report.basis);import os
from conductor import Conductor
conductor = Conductor(
api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted
)
report = conductor.qbd.reports.job(
report_type="item_estimates_vs_actuals",
conductor_end_user_id="end_usr_1234567abcdefg",
)
print(report.basis)curl --request GET \
--url https://api.conductor.is/v1/quickbooks-desktop/reports/job \
--header 'Authorization: Bearer <token>' \
--header 'Conductor-End-User-Id: <conductor-end-user-id>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.conductor.is/v1/quickbooks-desktop/reports/job",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Conductor-End-User-Id: <conductor-end-user-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.conductor.is/v1/quickbooks-desktop/reports/job"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Conductor-End-User-Id", "<conductor-end-user-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.conductor.is/v1/quickbooks-desktop/reports/job")
.header("Conductor-End-User-Id", "<conductor-end-user-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.conductor.is/v1/quickbooks-desktop/reports/job")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Conductor-End-User-Id"] = '<conductor-end-user-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"objectType": "qbd_report",
"category": "general_summary",
"reportType": "trial_balance",
"title": "Trial Balance",
"subtitle": "As of February 1, 2025",
"basis": "accrual",
"rowCount": 7,
"columnCount": 3,
"columnTitleRowCount": 2,
"columns": [
{
"columnId": "<string>",
"columnType": "<string>",
"dataType": "<string>",
"titles": [
{
"rowNumber": 123,
"value": "<string>"
}
]
}
],
"rows": [
{
"kind": "text",
"rowNumber": 123,
"text": "<string>"
}
]
}Authorizations
Headers
Query Parameters
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.
"2025-01-01"
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.
"2025-02-01"
A QuickBooks Desktop relative date macro for the report period. Choose either reportDateMacro or reportDateFrom/reportDateTo.
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 "this_year_to_date"
Filter report rows by account type. Choose only one account filter per request: accountType, accountIds, or accountFullNames.
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 "bank"
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.
["Corporate:Accounts-Payable"]
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.
["ABC Corporation:Website Redesign Project"]
Filter report rows by item type. Choose only one item filter per request: itemType, itemIds, or itemFullNames.
all_except_fixed_asset, assembly, discount, fixed_asset, inventory, inventory_and_assembly, non_inventory, other_charge, payment, sales, sales_tax, service "inventory"
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.
["Services:Consulting"]
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.
["Department:Marketing"]
Filter report rows by transaction type. Accepts one or more transaction types.
all, ar_refund_credit_card, bill, bill_payment_check, bill_payment_credit_card, build_assembly, charge, check, credit_card_charge, credit_card_credit, credit_memo, deposit, estimate, inventory_adjustment, invoice, item_receipt, journal_entry, liability_adjustment, paycheck, payroll_liability_check, purchase_order, receive_payment, sales_order, sales_receipt, sales_tax_payment_check, transfer, vendor_credit, ytd_adjustment ["invoice", "sales_receipt"]
A QuickBooks Desktop relative updated-date macro. Choose either updatedDateMacro or updatedAfter/updatedBefore.
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 "this_month_to_date"
How QuickBooks Desktop calculates report data and labels report column headers.
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 "month"
Response
Returns the requested job report.
The report type.
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 "trial_balance"

