Skip to main content
QuickBooks Desktop “reports” are a unique data type that is less commonly used than other QuickBooks Desktop features. For this reason, Conductor’s fully typed API does not yet support the Reports API directly, but reports are fully accessible via the Conductor passthrough endpoint.
  1. To use the passthrough endpoint, see the examples to the right. You’ll provide a JSON object using QuickBooks Desktop’s native field names and structure, and receive a JSON object as a response. The response shapes the data as a table with rows and columns.
  2. To determine the correct names and structure to use for your request input, reference the official QuickBooks Desktop SDK documentation as follows:
    1. Visit Intuit’s official QuickBooks Desktop SDK docs site.
    2. Search the page for “report” to find the various report types in the sidebar. For example, see the documentation for the GeneralSummaryReportQuery report type used in the example to the right.
    3. Once on the page for the report type you want to use, click the XMLOps tab to more easily see the correct names and structure to use for your request input and the expected response fields. Intuit Reports XMLOps reference page
The example to the right shows how to use the Conductor passthrough endpoint to request QuickBooks Desktop’s GeneralSummaryReportQuery report type.
You can swap GeneralSummaryReportType with any supported value listed on the XMLOps tab (e.g., BalanceSheetStandard, ProfitAndLossStandard, etc.).
While the passthrough route requires more manual configuration than our native endpoints, once configured, it provides a reliable way to access all QuickBooks Desktop reports via Conductor.
import Conductor from "conductor-node";

const conductor = new Conductor({ apiKey: "sk_conductor_..." });
const CONDUCTOR_END_USER_ID = "end_usr_...";

async function main() {
  const report = await conductor.endUsers.passthrough(
    CONDUCTOR_END_USER_ID,
    "quickbooks_desktop",
    {
      GeneralSummaryReportQueryRq: {
        GeneralSummaryReportType: "TrialBalance",
      },
    },
  );

  console.log(JSON.stringify(report, null, 2));
}

main();
{
  "GeneralSummaryReportQueryRs": {
    "ReportRet": {
      "ReportTitle": "Trial Balance",
      "ReportSubtitle": "As of June 19, 2025",
      "ReportBasis": "Accrual",
      "NumRows": 7,
      "NumColumns": 3,
      "ColDesc": {
        "ColTitle": [
          { "TitleRow": 1, "Value": "" },
          { "TitleRow": 2, "Value": "" }
        ],
        "ColTitle2": [
          { "ColType": "Label", "ColID": 1, "DataType": "STRTYPE" },
          { "ColType": "Amount", "ColID": 2, "DataType": "AMTTYPE" },
          { "ColType": "Amount", "ColID": 3, "DataType": "AMTTYPE" }
        ]
      },
      "ReportData": {
        "DataRow": [
          {
            "RowData": { "RowType": "account", "Value": "?" },
            "ColData": [
              { "ColID": 1, "Value": "?" },
              { "ColID": 2, "Value": "-100.00" }
            ],
            "RowNumber": 1
          },
          {
            "RowData": { "RowType": "account", "Value": "?" },
            "ColData": [
              { "ColID": 1, "Value": "?" },
              { "ColID": 2, "Value": "100.00" },
              { "ColID": 3, "Value": "" }
            ],
            "RowNumber": 2
          }
          // ...additional rows...
        ]
      }
    }
  }
}