QuickBooks report to dashboard

A QuickBooks report that behaves like a table.

Export a transaction report from QuickBooks and drop the CSV here. The file is a report rather than a table, so it opens with title and date-range lines, contains blank spacer rows, and carries subtotal rows inside the data. All three are detected and removed, the Balance column is treated as a running total rather than a metric, and Amount is read with its sign by transaction type.

Prefer the full explorer? Open the app, or start from the generic dashboard builder.

Report preamble skipped
Title, company and date-range lines are found and set aside before parsing.
Subtotal rows dropped
Group subtotals and the grand total are detected so nothing is counted twice.
Balance never summed
It is a running total and is treated as a snapshot column, not a metric.
Local only, no signup
Vendor names and account detail stay inside your browser tab.

It looks like a spreadsheet because it was printed for a person

A QuickBooks CSV is the printed report saved to a file, not an extract of the underlying ledger. Line one is usually the company name. Line two is the report title. Line three is the date range. Then a blank line, then the real header, then the data, interrupted by blank rows and bolded subtotal lines wherever the report grouped something, and finished with a grand total. Every one of those non-data rows will be read as a transaction by anything that assumes line one is the header.

The consequences compound. Subtotal rows contain real numbers, so they get summed alongside the transactions they summarize and your totals come out roughly double. The grand total row does it again. And the Balance column is a running figure that changes with every row, so summing it produces a number that grows with the length of the report and means nothing whatsoever. This page finds the real header, drops the structural rows, and refuses to total a balance.

How to export from QuickBooks

  1. Open Reports in QuickBooks Sign in, then open the Reports section from the menu down the left. For transaction-level detail pick Transaction Detail by Account, or Transaction List by Date if you want a flatter file.
  2. Set the date range and the accounting basis Cash against accrual changes which transactions appear and when. Note which you used, because the export does not record it and two reports on different bases will never reconcile.
  3. Customize the columns Add Class, Split and Memo if you use them. Class in particular is the most useful group-by in the file and it is not included by default.
  4. Export to CSV rather than Excel The Excel export carries formatting and merged cells that make the structural rows even harder to spot. Plain CSV is easier to clean.
  5. Drop the file here The preamble is skipped automatically, subtotal rows are removed, and Account, Class and Transaction Type become filter chips.

If you can use the QuickBooks API or a general ledger export instead of a printed report, do. Those come out as real tables with no structural rows, and everything below stops being a problem.

Try with sample QuickBooks data (the same columns, 110 rows, no upload needed).

What the dashboard shows

Every panel below is built from a column that is actually in the export, named the way QuickBooks names it.

  • Income against spend over time. Date on the axis with positive and negative Amount separated, which is the picture a monthly review actually needs.
  • Spend by account. Account ranked by total, which finds the subscription nobody remembered signing up for faster than any other view.
  • Class or department split. Where Class is populated, this is the closest thing the file has to a cost center breakdown.
  • Transaction type mix. Invoice, Bill, Expense and Check as a share, which tells you how much of your bookkeeping is automated against manual.
  • Top vendors and customers. The Name column ranked by absolute amount, in both directions.
  • Split transactions flagged. Rows where Split reads -SPLIT- cover several accounts at once and cannot be attributed to one category.
Sample header row
Date,Transaction Type,Num,Name,Memo/Description,Account,Class,Split,Amount,Balance

Six structural traps in a QuickBooks export

  • The header is not on line one. Company name, report title and date range come first, usually followed by a blank line. Most importers take line one as the header and produce nonsense.
  • Subtotal rows sit inside the data. Wherever the report grouped by account or class there is a subtotal line carrying real numbers. Summing the column counts that money twice.
  • There is a grand total row at the bottom. Which doubles the whole file again if it is not removed. It is easy to miss because it looks like an ordinary row in a CSV.
  • Balance is a running total. It is the account state after each transaction. Summing it produces a number proportional to the row count and unrelated to anything real.
  • Amount sign depends on transaction type. An Invoice and a Bill both carry positive amounts in some reports and opposite signs in others, depending on which report you ran.
  • -SPLIT- hides the detail. A transaction touching several accounts collapses to the literal text -SPLIT- in the Split column, and the per-account breakdown is not in this file.

Strip the structure, ignore the balance, and check the sign convention against one transaction you know. QuickBooks reports are perfectly usable once you accept they were formatted for a printer.

Frequently asked questions

Why does my QuickBooks CSV open with everything in one column?

Because the first line is the company name rather than a header row, and a parser that assumes line one is the header has nothing to align the rest against. The real header sits three or four lines down, usually after a blank row. This page scans for the first line that looks like a header and starts there, which is what you would do by hand.

Why are my totals roughly double?

Subtotal rows. QuickBooks reports insert a subtotal line wherever they group, and a grand total at the bottom, all carrying real figures in the Amount column. Sum the column naively and every transaction is counted once as itself and again inside its subtotal, and once more in the grand total. Removing those structural rows before totaling is the fix.

Can I chart the Balance column?

As a line over time, yes, and it is genuinely informative. What you must not do is sum it or average it, because it is the running account balance after each transaction rather than a per-transaction value. Any aggregate over it grows with the number of rows in the report and describes nothing. This page treats it as a snapshot column for exactly that reason.

What does -SPLIT- mean in the Split column?

That the transaction touches more than one account, so QuickBooks cannot name a single counterpart and writes the literal text instead. The per-account detail exists in QuickBooks but not in this export. If splits make up a meaningful share of your spend, run a report grouped by account instead, which distributes the amounts properly across the categories.

Why do cash and accrual reports disagree?

Because they recognize transactions at different moments. Accrual counts an invoice when it is issued; cash counts it when the money moves. Both are correct answers to different questions, and the export does not record which basis was used. If two reports of the same period will not reconcile, this is usually why, and the fix is to note the basis when you export.

Is my accounting data uploaded?

No. The file is parsed by JavaScript in your browser tab and nothing is transmitted. A transaction report names your customers, your vendors, what you pay them and your account balances, which is close to a complete picture of a small business. There is no server component to this page and no account to create.

Load a report and watch the structure get stripped

110 transactions across a quarter, income and expenses, classes, split transactions and a running balance that should never be summed.

Open the sample QuickBooks dashboard