The Two Sources of Truth
The spreadsheet everybody still uses is usually there because the system presents one thing badly. How a second record appears for a legitimate reason, and the specific moment it stops being a copy and becomes the record.
The spreadsheet is not there because the system failed. It is there because the system does one particular thing badly, and the person who built the spreadsheet was not resisting the system. They were working around a specific irritation, and they solved it well enough that solving it became their job.
This matters because the usual response, to insist the system is the record and the spreadsheet must go, is aimed at the wrong target. Telling a person their sheet is not allowed does not remove the irritation that produced it. The sheet gets rebuilt, privately, in a week, and this time nobody mentions it.
This article is about how a second record appears for a legitimate reason, why it is often a better tool for the one thing it does, and the specific moment at which a copy stops being a copy and becomes the record everybody actually relies on. That moment is worth looking for, because before it the spreadsheet is a nuisance and after it the spreadsheet is a serious problem, and the two are fixed in completely different ways.
The spreadsheet is not a copy
The first thing to get right is what the sheet is. A copy of what the system holds is a poor use of a spreadsheet: the system already holds it, does not go stale, and is visible to more than one person. Nobody builds a spreadsheet to re-type something a database does better. They build one because the system will not give them the shape they need.
The shapes people need are specific and recurring. A grid of one customer across a row and many months across the columns, so a pattern is visible in one glance. A pivot that groups things the system groups differently. A formula that does something with a set of records in a way the system's own arithmetic does not offer. A view of several record types together in one place. A quick way to change a number and see what happens, which a transactional system is specifically the wrong tool for because it does not let you change a stored figure.
Each of those is a real gap, and each of them is a gap in the reporting surface rather than in the records. The underlying records are usually fine. That is why the sheet survives: it is not duplicating anything, it is presenting something.
A worked example, constructed for this article
A worked example, constructed for this article
Every figure below is invented. None of it describes a real business, and none of it is a benchmark.
A business keeps a sheet of outstanding invoices per customer. It started as a copy. The 18% GST rate is used here only so the totals can be checked by hand, and a figure with a taxable value of 10,000 becomes:
- 10,000 x 0.18 = 1,800 of tax
- 10,000 + 1,800 = 11,800 including tax
Two other invoices are 11,800 and 6,020, and the 6,020 is a taxable value of 5,100:
- 5,100 x 0.18 = 918 of tax
- 5,100 + 918 = 6,018
Hold on, and take the second figure properly, because this is exactly the sort of place a hand-typed sheet drifts. If the 6,020 was meant to be 5,100 taxable, the total is 6,018, and the sheet carries 6,020. The sheet is out by 2, which nobody will ever chase, and which is a smaller error than the one below.
The sheet's stated total for the customer is 11,800 + 11,800 + 6,020 = 29,620. The system's view of the same customer's outstanding invoices is those three plus one invoice that was never typed into the sheet, also 11,800:
- 29,620 + 11,800 = 41,420
- 41,420 - 29,620 = 11,800, which is exactly the missing invoice
Notice how the difference behaves. A person comparing the two figures will not add and subtract invoices. They will say the system is wrong, because the system is larger and therefore scarier, and the sheet is familiar. Both numbers are projections of allocations against invoices rather than stored fields, so neither is more true than the other. What differs is how recently each was touched by a human being.
The 2, the 11,800 and the 29,620 all come from the same habit, and the habit is not carelessness. It is that a person maintaining a copy by hand is doing data entry, and data entry is the one thing a system was built to remove. The person doing it is not being lazy; they are absorbing a task that should not exist, and they are absorbing it well enough that nobody has noticed.
The reason the gap grows rather than stays constant is that the sheet is maintained for the rows that matter. The customer who pays, the customer with a dispute, the customer with a large balance. The quiet one gets typed when somebody remembers. Over a year the sheet becomes a curated view of the accounts that generate conversation, which is genuinely useful, and no longer a copy of anything.
How the second record happens
Three ways a second record appears without anybody deciding to build one
The gap in the reporting surface
The system holds the records but does not present them in the shape the work needs: across, pivoted, joined, or with a formula applied across a set. The person builds the view themselves in a spreadsheet, it works, and it becomes part of how the business runs. This is the healthy version and the only one that is easy to reverse.
The timing gap
The system is updated after the event rather than during it, so the sheet is the only thing that is current when somebody needs the answer. A working list of what to chase, or what arrived this morning, is faster to maintain in a grid than in a system that is one step behind. The sheet is a live record because the system is a lagging one.
The person who built it
One person made the sheet, understands it completely, and nobody else has been asked to maintain it. It is not a system in anybody's mind; it is a tool with one user. The business depends on it without any decision having been taken, and the risk here is not the data, it is what happens on the day that person is not there.
The specific moment the copy becomes the record
There is a moment, and it is worth learning to recognise, because the response before and after it are opposites. Before it, the spreadsheet is a copy with a purpose, and the right move is to be curious about the purpose. After it, the spreadsheet is the record, and the right move is to treat a disagreement between the two as a serious event rather than a housekeeping one.
The moment is a decision. Somebody asks a question, the sheet answers it, and the answer is acted on. It is not the moment the sheet is created, and it is not the moment the numbers agree. It is the first time the sheet is consulted and the system is not, and somebody relies on the answer.
After that moment, everything in the business quietly reorients around the sheet. The accountant is sent the sheet, because it is the version that reconciles. The owner asks about a customer and gets the sheet's answer. New staff are shown the sheet, because it is the thing that answers questions. The system becomes the place where transactions are recorded and the sheet becomes the place where they are understood, and the two are no longer reconcilable because only one of them is being checked.
Illustrative comparison: a spreadsheet that is a copy and a spreadsheet that is the record
| A spreadsheet that is a copy | A spreadsheet that is the record | |
|---|---|---|
| How it is built | Exported or re-typed from the system, with the same rows and the same totals. | Grown by hand, with rows added when somebody remembers and columns added when a question needed one. |
| Where a disagreement is settled | At the system. The sheet is corrected to match. | At the sheet. The system is described as lagging or wrong, and usually neither is true. |
| What happens when it is not updated | Nothing. The system already has the answer. | The business loses sight of the account quietly, and finds out from the customer. |
| Who can use it | Whoever has access to the system. | One person, plus anyone they have personally shown. |
| How it is checked | By comparing it to the system. | Not at all, because comparing it would show a difference nobody wants to explain. |
Six questions that locate a second record on the scale
- Is every row in the sheet reconstructable from a record in the system? Any row that is not is a record the system does not have.
- When the sheet and the system disagree, what happens? If the sheet wins, the record has already moved.
- How often is the sheet refreshed, and by whom? A weekly manual refresh is a maintenance burden, not a view.
- Who else can open it? A sheet with one real user is a dependency, not a process.
- What decision was this sheet built for? If there is no answer, it has probably become the record by accident.
- What is the smallest useful thing the system could have shown instead? This is usually the question worth asking the vendor.
What stops the split without a project
The useful move is not to ban the sheet. It is to find out which of the three ways it came to exist it is, because the three have three different answers. If it is a gap in the reporting surface, the answer is that the gap should be raised and the sheet kept until it is closed. If it is a timing gap, the answer is about when the business needs its answer rather than about where it lives. If it is a one-person tool, the answer is a conversation about who else needs it.
A sheet that answers a question well is not a problem to be solved. It is a specification of a report that does not exist yet, and the useful thing an owner can do with it is to stop treating it as a compliance issue and start reading it as a requirements document. That reframing costs nothing and it is the difference between a spreadsheet that keeps growing and one that gets replaced by something.
Where two records genuinely have to coexist for a while, the honest answer is that they will not stay in agreement unless somebody is made responsible for the difference. Not a monthly check everybody knows is optional. A named person, a stated comparison, and a small recorded variance. The variance is recorded whether or not it is zero, because a check that leaves no trace did not happen.
The limits are worth stating plainly here too, because this is exactly the article where somebody assumes the vendor will clean it up. There is no data-cleaning service, no implementation project and no onboarding team, and no dedicated support tier beyond the documented platform support. Migration is scoped work. Duplicate detection will flag candidate duplicate records, but a person reviews them and nothing merges automatically, and match rules and merge behaviour are a setup decision, so a business that wants its historical records grouped has to make those decisions rather than assume them.
The same honesty applies to the products. Expenses live in Nox-Billings only and purchasing and stock movement in Commerce, so a sheet that joined those two was joining two systems and will continue to need to. There is no timesheet record and no payroll module. A scope change is a NEW quote on the same project, with no change-request, milestone or deliverable record, no contract editor and no e-signature. And nothing here files GST returns or any other statutory return, so a sheet built to feed a filing is a sheet whose arithmetic somebody should check with their chartered accountant rather than with a vendor.
The test of a healthy second record is that it can be thrown away. If a person could delete it tomorrow and the business would be no worse off, it is a view, and views are fine. If deleting it would lose something, the deletion is not available, and the business is running on a file that one person maintains and nobody reconciles.
For the related failure where one person holds the knowledge instead of holding a file, see The One Person Who Knows Where Everything Is. For the identity problem that makes two records disagree, see One Customer, Two Records: The Identity Problem. And for the first week of using a new system at all, see What to Do in the First Week with a New System.
Frequently asked questions
Why does my team keep a spreadsheet when we have software?
Usually because the software does not present the records in the shape the work needs: across, pivoted, joined, or with a formula applied across a set of rows. A spreadsheet is often a better tool for that presentation. The problem starts when figures get typed into it that do not exist anywhere else, at which point it stops being a view and becomes a record.
When does a spreadsheet stop being a copy?
When a decision is taken using it rather than the system. The moment is not the day it was created and not the day the numbers agreed. It is the first time somebody asks a question, the sheet answers it, and the answer is acted on without the system being checked.
How do I stop the split without banning the sheet?
Work out which of three things it is: a gap in the reporting surface, a timing gap, or a one-person tool. Each has a different answer. A sheet that answers a question well is a report requirement rather than a compliance problem, and the most useful move is to read it that way instead of trying to delete it.
Will the software merge my duplicate records and fix my data?
No. Duplicate detection flags candidates and a person reviews them; nothing merges automatically, and match rules and merge behaviour are a setup decision. There is also no data-cleaning service and no onboarding team, so cleaning historical records is work your business does, with a vendor scoping migration rather than performing it.
Which products do the numbers come from?
Invoices and payments sit in Nox-Billings, expenses are Nox-Billings only, and purchasing and stock movement sit in Commerce. There is no timesheet record and no payroll module, and a scope change is a new quote on the same project rather than an amendment to a stored scope record. A sheet that joined several of those was joining several systems, and it will keep needing to.
Does this article give tax or compliance advice?
No. The 18% GST rate appears only so the constructed invoice totals can be checked by hand, including one that is deliberately out by two rupees to show how a hand-typed sheet drifts. Whether a total is correctly classified, valued and filed is a question for your own chartered accountant. NoxOrigin does not file GST returns or any other statutory return.