Reports

The Filter That Silently Excludes Money

A report filter set once and inherited by everybody, quietly dropping cancelled invoices, zero-value documents, credit notes and one branch. A worked register where a 46,020 gap decomposes into four documents, three tests for telling a filtered number from a small one, and what a published definition has to carry.

ReportingFiltersCredit NotesReceivablesNoxOrigin

Somebody opens the receivables report in March, notices that a cancelled invoice is no longer in it, and decides that is reasonable. Somebody else opens the same report in April, notices that a credit note has stopped reducing the total, and writes it off as a rounding difference. Both of them are wrong in the same way and neither of them can tell you what the number is measuring, because the number does not say.

The filter is the part of a report nobody argues about, and that is exactly why it is where measurement quietly goes wrong. It is set once, by a person who was solving a real problem at the time, and it is then inherited by everybody who opens the report afterwards. The person who set it leaves, or moves on to a different question, and the filter becomes the business's definition of its own revenue without anybody having chosen it. Six months later the report is not wrong. It is answering a different question from the one its reader is asking, and it has no way to say so.

This is a hard article to write honestly, because the instinct is to recommend a feature and the truth is that the feature is not the difficulty. Almost any reporting tool can show you the rows behind a total. What a business does not have, usually, is the shared agreement that a filter is part of the number rather than a setting on the number — and that agreement is a decision, not a configuration. What follows is how to tell a filtered number from a small one, and what has to travel with a figure for a reader to trust it.

Four things an inherited filter quietly drops

The specific exclusions matter less than the shape they share, but they are worth naming separately because each has a defensible motive that made it look harmless on the day it was set. This is not a list of mistakes. It is a list of reasonable decisions that became invisible.

Four exclusions, and the decision that made each one look safe

Cancelled invoices

A cancelled document really should not be counted as revenue — the money was never kept. The decision is correct and the consequence is not: the same filter also hides the existence of the cancellation, so the report shows a clean month with no sign that a document was raised and withdrawn inside it.

Zero-value documents

A quotation or a proforma carrying no value is clutter in a revenue report, and dropping it is tidy. The consequence is that a document the business did issue stops existing in the only report anybody reads, which matters on the day somebody needs to prove the business issued it.

Credit notes

A credit note reduces what was billed, so excluding it makes a month look better than it was. This is the exclusion most likely to have been introduced for a good reason — to stop a credit from being double-counted against a payment — and it is the one that most reliably overstates a number over a quarter.

One branch, or one workspace

The filter was set while somebody was working on one site, and the saved view was shared rather than personalised. Now a consolidated report silently describes a single location, and a per-location report describes whichever site the reader happened to have open.

The reason these four belong in one article is that they do not have a direction. A filter that drops a branch and a filter that drops credit notes both make the number wrong, and they make it wrong in opposite directions. A reader who learns only that 'the report is filtered' has learned nothing they can act on, which is why the honest fix is not more filters and is not a warning icon.

Worked example: one month's register and the report nobody can explain

Everything below is invented so the arithmetic is checkable. The invoices, the sites, the cancellation and the credit note are ours; none of it is a customer or a measured result. The 18% rate appears only to keep the totals verifiable by hand, and the rate and treatment that actually apply are for your own chartered accountant to confirm.

November register, before any filter is applied (worked example, illustrative)

DocumentTaxableGST at 18%GrossSiteState
N-011,00,00018,0001,18,000HQIssued
N-0240,0007,20047,200HQIssued
N-0325,0004,50029,500HQIssued
N-04000HQIssued, zero value
N-0560,00010,80070,800HQIssued
N-0612,0002,16014,160HQCancelled on 14 Nov
N-0735,0006,30041,300PlantIssued
N-0880,00014,40094,400HQIssued
N-0915,0002,70017,700HQIssued
CN-01−8,000−1,440−9,440HQCredit note against N-02
Register total3,59,00064,6204,23,620both—

Now the report. The saved view is called HQ Active Revenue, and it carries three conditions, each of which was sensible when it was added: the site is HQ, the document is not cancelled, and the gross value is not zero. It does not mention credit notes, which is the point — nobody added a condition to exclude them. They fell out because a credit note is not an active invoice, and the filter was written in terms of what invoices are rather than what happened.

The same register through the saved view (worked example — arithmetic shown)

StepDocuments included or removedGross effect
Register totalall ten documents above4,23,620
Remove the zero-value documentN-040
Remove the cancelled documentN-06−14,160
Remove the other siteN-07−41,300
Remove the credit noteCN-01+9,440, because excluding a credit note adds back what it subtracted
Reported figureN-01, N-02, N-03, N-05, N-08, N-093,77,600
Reconciliation checkwhat the filter removed is 0 + 14,160 + 41,300 − 9,440 = 46,020, and 4,23,620 − 3,77,60046,020

Two things in that table deserve to be read slowly. The first is the sign on the credit note row. Removing it does not subtract 9,440 from the total; it adds 9,440 back, because a credit note is a document that reduced the register and the filter is excluding it. So a single filter, applied for a reason that was entirely sound, makes this month's revenue look larger — while removing the plant site makes it look smaller by 41,300. The net difference of 46,020 is not a bias in either direction. It is the residue of four unrelated decisions, and it will be a different number next month for reasons that have nothing to do with how the business performed.

The second is that the reported figure is not wrong. Every document in the saved view genuinely was issued at that site and genuinely is active, and any accountant handed the rows would confirm them one by one. The report is a correct answer to the question it was built to answer. That is what makes it dangerous: it is defensible in a meeting, right up until somebody asks what it left out, at which point there is no version of the conversation that gets you the original number back without rebuilding the month by hand.

One more detail of the register is worth naming because it is invisible in the table. N-06 was cancelled on 14 November rather than deleted, and CN-01 is a document in its own right rather than a negative row attached to N-02. Both of those are the right shape: a cancelled document is still a document the business issued and withdrew, and a credit note is a separate document with its own number and its own date. Keeping them means the month can be explained. Deleting them, or folding a credit into a negative line on the original invoice, would make the register smaller and the history shorter, and both of those are trades this article is arguing against.

How to tell a filtered number from a small one

The question a reader has in a meeting is never 'is this number correct'. It is 'why is this number so small', and the two situations are indistinguishable from inside the number. Here are the three tests we would apply, in the order they fail most often.

Three tests, and the failure each one prevents

  • Can the reader see the filter without asking for it? A figure that arrives as a bare number has no filter and no period, which makes it unciteable — a person cannot repeat it next month and cannot tell whether the change was performance or configuration. The name of the saved view, the conditions in it, and who set it have to travel with the number
  • Is there a path from the figure back to the register? Given the reported total, can you list the documents behind it and the documents left out, and arrive at the unfiltered total by addition? In the worked example the whole gap is four documents and 46,020. A figure with no such path is a conclusion, and conclusions are exactly the thing two people cannot compare
  • Was the filter changed inside the comparison period? A filter edited on the 12th means the same report, on the same records, gives two different answers for the same month, and the report itself carries no evidence that anything happened. Whatever else a reporting tool does, a configuration change has to leave a dated trace a reader can find

The third test is the one that gets skipped, and it is the one that causes the argument that a reporting tool is unreliable. A number that changed because somebody corrected a filter is a number that changed, full stop, and it will be presented in a meeting as a business result. The person defending the business did not do anything wrong and cannot win the argument, because the actual cause is not in the number and never was.

What the filter should be, if it is going to be part of the number

The goal is not to remove saved views. Saved views are one of the genuinely useful things a reporting tool can offer, and a business with a plant and an office will want a view for each and a consolidated one above them. The goal is that a view stops being a private convenience and becomes a published definition, which means it acquires four things it does not have by default.

A private filter against a published definition (structural comparison — no measured outcomes)

A private saved viewA published definition
Named after what it answers'HQ Active Revenue' describes the mechanics: a site, a state, a non-zero condition'Revenue invoiced to all sites, credit notes included' names the question the figure answers, and the difference from the raw register is written in the same breath
Carries its exclusionsWhatever was typed in at the time, undocumented, which is why credit notes fell out without anybody deciding to drop themEvery condition is written as an inclusion rule, so a reader can see what is in and — the part that matters — what is not
Has an ownerThe person who saved it, who has usually moved onA named person who is responsible for the definition being current, which is a small job and is the only thing that keeps a definition true
Is versionedInvisible. The report changes and the report itself is the evidence of nothingA dated change history, so that when two exports of one month disagree the first question is answered by the record rather than by argument

None of this requires a particular product. It requires a decision that filters are part of the number, made once, and then the discipline to keep the decision current. The discipline is the hard part, because a definition that nobody maintains is worse than no definition: it is a number people have stopped questioning, which means the first real change to it goes unnoticed for as long as the number looks plausible.

Choosing between quoted, billed and collected is itself a filter

There is one more way a number ends up answering a different question from the one its reader assumes, and it does not involve a single condition. It is the choice of which state to report, and it is invisible in the figure because all four states are real numbers produced from the same records. Quoted, billed, collected and outstanding are four different claims about the same commercial relationship, and the words revenue, sales and takings each point at a different one of them depending on who is speaking.

This matters most where a report computes outstanding. Outstanding is not a stored figure. It is the invoice total minus the sum of live allocations, recomputed from the records every time the report is run, and a payment is a separate record from the invoice it settles. That is the correct design, and it has a consequence worth stating plainly: there is no stored paid flag to go stale, but there is also no single stored number that is revenue. Any figure is a projection over a stated set of documents and allocations, and the reader has to be told which set. A tool that shows a paid tick is showing a conclusion. A tool that shows the allocations behind it is showing the argument.

Where this stops, honestly

Three boundaries. First, making the filter part of the number does not make the number correct — it makes the number arguable, which is a lower and more achievable bar and the one that actually matters in a meeting. Deciding which documents count as revenue is a business and accounting judgement, and the treatment of credit notes, advances and part-payments in particular belongs to your own chartered accountant rather than to a software default. Second, a filter cannot rescue a report built on records that do not join. If the same customer exists twice, the report will faithfully sum both and hand you a total that is arithmetically impeccable and commercially meaningless, and that failure sits upstream of every filter you could add. Third, NoxOrigin reports are computed from the records it holds, and the same discipline applies downstream: the exports are inputs to your accountant's work rather than a substitute for it, and NoxOrigin does not file GST returns or any other statutory return.

What we have not measured

Nothing here is measured. We have no count of how many saved views in the wild carry an undocumented condition, no measured share of reported figures that cannot be reproduced from their own rows, and no data on how often a filter change is mistaken for a business result. Every figure in the tables above is arithmetic we constructed so that a 46,020 difference could be traced to four documents, and the invoices, sites and outcomes are invented. The instrumentation we would want before making a claim about this is unglamorous and specific: the share of figures that can be reproduced from the rows behind them, the number of saved views with a named owner, the count of configuration changes made inside a closed period, and the number of month-on-month comparisons where the cause of the difference was identified as a filter rather than as performance. Until those are counted, the argument is structural, and the test that costs you nothing is to rebuild last month's reported figure from the register yourself.

Frequently asked questions

How do I tell whether a number is small or filtered?

Ask three things of it. Can a reader see the filter without requesting it, so they know which documents the figure claims to include? Is there a path from the figure back to the underlying register, so the difference between it and the unfiltered total can be listed document by document? And was anything about the filter changed inside the period being compared? A number that fails the first two is a conclusion rather than a measurement, and a number that fails the third cannot be compared with the same report from last month, whatever the business did in between.

Excluding cancelled invoices is obviously right. Why is it a problem?

Because it is not only the number that changes, it is the record. A cancelled document is a document the business issued and withdrew, and hiding it means a report can show a clean month with no sign that anything was raised and cancelled inside it. Keep the document, exclude it from the active figure, and let the report show both — the figure and the cancellation that is not in it. That way the exclusion is a decision somebody made rather than an artefact of how the filter was phrased.

Should credit notes be included in a revenue report?

That is a decision for your business and its chartered accountant, not for a software default, and we are not going to pretend otherwise. What we will argue is that it has to be a decision. Excluding credit notes makes a month look better than it was, and it does so quietly, because a credit note is not an active invoice and so falls out of a filter written in terms of what invoices are. State the treatment once, apply it consistently, and show what was excluded.

Is it a problem that a saved view covers only one branch?

Only if the reader does not know. A per-site report and a consolidated report are both legitimate and both useful, and a business with two sites needs both. The problem is a single figure travelling between meetings without saying which of the two it is, or a consolidated view that was saved while somebody was working on one site and then shared. A view named for the question it answers, with its conditions written down, resolves this without removing the view.

What stops a report changing when somebody edits a filter?

Nothing, and pretending otherwise would be dishonest — a filter has to be correctable. What should exist is a dated trace of the change, so that when two exports of one month disagree, the first question is answered by the record instead of by argument. Without that trace, a configuration change looks exactly like a business result, and the person defending the business cannot win the conversation because the actual cause was never in the number.

Is revenue a stored figure I should be able to read directly?

No, and that is deliberate. Quoted, billed, collected and outstanding are four different claims about the same relationship, and none of them is a field that can be stored without eventually being wrong. Outstanding in particular is the invoice total minus the sum of live allocations, recomputed from the records each time the report runs, because a payment is a separate record from the invoice it settles and a stored paid flag cannot express a part payment, an overpayment or a reversal. The consequence for a reader is that any figure has to say which state it is measuring.

Sources and further reading

Continue reading

Looking for the rest of this topic? More in business operations →

OperationsWhat a Number Needs Before Two People Compare ItRead guide →ReportsA Report That Changes When You Look TwiceRead guide →ReportsReading a receivables ageing report without guessingRead guide →