Your spreadsheet did not fail because the math stopped working. It failed because the Xero export changed the contract your workbook depends on: the header row.

One renamed field, one inserted column, or one export pulled from a slightly different report layout is enough to throw the entire process off. The formulas are still there. The tabs still open. The reconciliation still runs. But the file is now reading the wrong columns, matching against the wrong key, or skipping rows it used to catch.

That is why this problem wastes so much time. A header shift rarely creates one obvious error. It creates clean-looking output that is wrong in quiet ways: blank matches, totals that drift, exceptions that suddenly multiply, or a workbook that worked last month and now needs to be rebuilt under deadline.

What actually changed when the spreadsheet stopped working

Most accounting spreadsheets assume the raw export will arrive in the same structure every time. That assumption is fragile.

The break usually happens in one of four ways:

Change in the Xero exportWhat the spreadsheet assumedWhat breaks
The same field arrives under a different header nameThe lookup searches for the exact old header textHeader match fails or returns blank
The field stays the same but moves to a different positionThe formula or copied mapping uses a fixed column numberThe workbook pulls the wrong data silently
A new column appears in the middle of the fileEverything to the right keeps the same positionAmounts, dates, or references shift one column over
A previously used column disappears or is split into two fieldsDownstream tabs still expect one stable source fieldReconciliation logic loses part of the source data

This is why Xero export column header changes break accounting spreadsheets. The damage is structural before it is numerical.

In practice, the failure often looks small at first. A match key that used to sit under Reference now arrives as Reference Number. A date column moves to the left because another field was added. A report variant exports a net amount where your workbook expected a gross amount. Nothing about that sounds dramatic until every VLOOKUP, XLOOKUP, INDEX/MATCH, pivot, or copy-paste step downstream depends on that exact structure.

If the workbook was built quickly, the dependency may be hidden. One tab reads column G. Another formula points to the third field after Contact. A summary sheet assumes the amount column will always be the eighth field in the file. Once the header row shifts, the workbook does not know the business meaning changed. It only knows the position changed.

Why the formulas look intact while the result is wrong

This is not a formula problem. The formula is working exactly as designed. The source structure changed.

That distinction matters because the fix is different. If the formula itself were broken, you would repair syntax. When the export structure changed, you need to repair assumptions.

Here is where those assumptions usually sit:

Workflow pieceWhat it depends onTypical symptom after a header change
Lookup formulasExact header text or a stable match-key column#N/A, blanks, or matches dropping sharply
Fixed-column formulasA field staying in the same numbered positionValues pulled from the wrong column with no visible error
SUMIFS or summary tabsDate and amount fields keeping the same meaningTotals still calculate, but they calculate the wrong thing
Power Query stepsKnown column names and predictable schemaRefresh errors or dropped columns
Manual copy tabsA human pasting data under the expected headingsMisaligned columns that are hard to spot on screen

The most dangerous version is the silent one. If a lookup fails loudly, you know where to look. If a fixed-position formula still returns a number, the spreadsheet can appear healthy while the reconciliation is already wrong.

That is why a workbook can pass the eye test and still be unusable. The totals are populated. The conditional formatting still fires. The report prints. But the amount field may now be a tax field, the date field may be the export date rather than the transaction date, and the reference field may no longer be the one that ties out to the bank or ledger.

The same pattern shows up in other systems too. If you have already seen why XLOOKUP fails when export headers shift, the logic is identical: the workbook trusted a source layout that stopped being stable.

Find the first broken assumption before you touch any formulas

Do not start by editing random formulas until the errors disappear. That approach usually makes the workbook harder to trust.

Start with the raw files.

Put the last working Xero export next to the new one and compare only the header row first. Do not compare totals yet. Do not compare formulas yet. Compare the structure.

Use this sequence:

  1. Freeze the last working export and keep it unchanged.
  2. Place the old and new header rows side by side.
  3. Mark each field as same, renamed, moved, new, or missing.
  4. Identify the three fields your reconciliation cannot survive without: the match key, the date field, and the amount field.
  5. Trace one known transaction from the raw export through the workbook to see where the logic first goes off track.

That single-row trace usually tells you more than scanning the entire workbook. If one known transaction lands in the wrong column on the staging tab, every downstream issue is a consequence of that first structural break.

A simple mapping table is usually enough to expose the problem:

Last working headerNew headerSame business meaning?What to do
ReferenceReference NumberYesUpdate the mapping, not the whole workbook
DateTransaction DateUsually yes, but verifyCheck whether the report changed date basis
AmountNet AmountNoTreat as a different field, not a rename
ContactContact NameUsually yesRemap and retest

Notice the difference between a rename and a meaning change. If the header text changed but the field still represents the same business value, you can remap it. If the field now represents something else, such as net instead of gross, you are not dealing with a cosmetic change. You are dealing with a logic change.

This is also the point where you separate a Xero export issue from a comparison-file issue. If the break shows up while matching bank data, the workflow for reconciling Xero bank statement exports against raw bank CSVs helps isolate whether the export changed, the bank file changed, or both changed at once.

Build one stable staging sheet instead of repairing every downstream tab

The durable fix is not to patch twenty formulas each time Xero changes an export. The durable fix is to stop letting downstream tabs read the raw export directly.

Create one staging sheet with your own stable headers. That staging sheet becomes the contract for the rest of the workbook.

For example:

Stable header in your workbookPull from the Xero export field that currently represents it
transaction_dateThe actual transaction or posting date field you use for matching
reference_keyThe reference, invoice number, or transaction identifier that links across files
contact_nameThe customer, supplier, or contact field used in review
amount_grossThe gross transaction value if your reconciliation needs gross
amount_netThe net value if your reconciliation needs settlement or payout effect
statusThe transaction state if it affects filtering

Then point every lookup, summary, and exception report at those stable headers instead of the raw Xero file.

That changes the repair job completely. When a future export arrives with different column names, you update the mapping between the raw file and the staging sheet once. You do not rebuild the entire workbook.

This is the part most ranking pages miss. Export help pages tell you where to click. They do not tell you how to stop the next schema drift from breaking a live reconciliation process.

If you use formulas, the staging tab should convert the raw file into a consistent layout before anything else touches it. If you use Power Query, isolate the column selection and renaming at the start of the query so the rest of the transformation depends on your own names, not Xero's current labels.

The raw export stays raw. The staging sheet translates it. The reconciliation tabs consume the translated structure.

That separation is what gives you something you can trust again.

Check the repaired workbook before you trust the output

Once the staging sheet is corrected, do not stop because the formulas now return values. Validate the structure with a few fast controls.

Check these in order:

Control checkWhat it tells you
Row count versus the raw exportWhether records were dropped during remapping
Unique count of the match keyWhether duplicates or blank keys were introduced
Total of the chosen amount fieldWhether you mapped the right numeric column
Five known sample transactionsWhether the same records still tie through the workflow
Exception count versus the last working runWhether the repair changed the logic or only restored it

If the total amount is wrong before matching starts, the problem is still structural. If the total is right but the unmatched list explodes, the match key or date logic is probably still wrong. If the unmatched list looks right but the report total is off, the summary tab may still be reading an old column.

This verification step is what turns a repaired spreadsheet into a reliable one. Without it, you are still guessing.

Make the next Xero export change survivable

You do not need a perfect system. You need one that fails in a controlled way.

These habits make the next header shift much less expensive:

  1. Keep one untouched raw-export tab for every import.
  2. Keep a visible header-mapping table instead of burying assumptions inside formulas.
  3. Avoid fixed column numbers when the field can be identified by name.
  4. Separate raw data, staging logic, and reporting output into different tabs or query steps.
  5. Add a quick check that flags when a required header is missing before the reconciliation runs.
Formula
=IFERROR(MATCH("Reference Number",A1:Z1,0),"HEADER MISSING")

Put that in the staging sheet for each required column name. Replace "Reference Number" with whichever header your staging logic expects. If the export arrives without it, the check returns "HEADER MISSING" before any data flows downstream.

  1. Archive one known-good Xero export for each report type you reconcile regularly.

The key is not preventing change. The key is making change visible early.

If the workbook fails fast with "required header missing" or "amount field not mapped," you can repair it in minutes. If it keeps running against the wrong column, you can lose an afternoon and still end up with a bad report.

When the spreadsheet is no longer worth rebuilding

Manual repair is still reasonable when the file is small and the workflow is occasional. It becomes expensive when the same Xero export has to be reinterpreted every month, across multiple entities, clients, or report types.

That is usually the cutoff point. The job stops being accounting review and starts becoming file maintenance.

The real fix is not teaching the workbook to survive one renamed header. It is removing the assumption that the next export will look exactly like the last one. Once you separate raw files from matching logic, header changes become a small mapping job instead of a full spreadsheet failure.