A report that runs to three hundred pages, of which maybe four matter, is not a report. It is a haystack. This happens most often when you are tracking something per customer or per account and the great majority of them are sitting at zero.

There is usually a setting for it. It is just not where you would look, and on some reports it genuinely is not there at all.

The setting: non-zero or active only

On most QuickBooks Online reports that group by account or customer, the control lives inside Customize rather than on the report itself.

  1. Run the report.
  2. Click Customize.
  3. Open the Rows/Columns section.
  4. Find Show non-zero or active only.
  5. Set it to Non-zero for both rows and columns, if both are offered.
  6. Click Run report, then Save customization so you never do this again.

On a Profit and Loss or Balance Sheet with a long chart of accounts, this alone usually takes a report from unreadable to one page.

Know what "active" means before you pick it

The same dropdown usually offers Active as well as Non-zero. They are not the same thing and the difference matters.

  • Non-zero hides anything whose figure is zero for the period.
  • Active hides anything marked inactive in your lists, regardless of whether it has a balance.

If you are hunting for outstanding balances, Non-zero is what you want. Choosing Active can hide a real balance sitting on an account someone deactivated, which is exactly the balance you most need to see.

When the setting is missing

Not every report has it. Transaction-level reports, some A/R and A/P views, and several of the newer report styles simply do not offer it. This is the point at which most people give up and export.

Three things worth trying first.

1. Filter rather than hide

Inside Customize, the Filter section lets you restrict the report to specific customers, accounts or classes. If you are chasing twelve open matters out of three hundred, selecting those twelve is faster than making the software work out which are non-zero.

2. Use an aging report instead of a balance report

If the question is really "who still owes us something", then A/R Aging Summary is built for it and naturally excludes anyone with nothing outstanding. People often reach for a general balance report when an aging report answers the question directly.

3. Make the deactivation stick

A common frustration is deactivating accounts only to have them reappear. That happens when a new transaction lands against them, which reactivates them. If balances keep coming back, the problem is upstream in how transactions are being coded, not in the report.

The honest gap

For some combinations, particularly custom-asset tracking per customer, there is no clean built-in way to say "only show me the ones that are not zero." This is a real limitation and it is worth naming rather than pretending a hidden setting exists.

It is also why the standard advice in accounting forums is to export to a spreadsheet and filter there. That works. It also means the report has to be rebuilt by hand every time you want it, which for a monthly client pack is forty-five minutes a month that produces nothing new.

Asking for what you want in plain English sidesteps the problem, because "only the ones with a balance" is part of the question rather than a setting you have to find. AskLedger returns just those rows, and states above the table exactly what it filtered on, so you can check the logic before the number reaches a client.

In short

  • Customize, then Rows/Columns, then Show non-zero or active only. Set it to Non-zero.
  • Non-zero and Active are different. Picking Active can hide a real balance.
  • Save the customization so it survives to next month.
  • If the setting is absent, filter to the specific accounts, or switch to an aging report.
  • Accounts that keep reactivating are a coding problem, not a report problem.

Related reading: seeing every unpaid invoice.