A row among hundreds
Nobody reads a bank statement line by line. Twenty, fifty, two hundred transactions a month, and the eye naturally skims for the large ones — payroll, a big supplier payment, rent. A £4.50 charge sitting between two ordinary transfers gets the same half-second of attention as everything else on the page, which is to say almost none.
That is a reasonable way to read a statement for its main purpose. It is a poor way to find out what an account actually costs to run, because the fees are specifically the rows built to be unremarkable, one at a time, by design or by accident.
This page is about pulling those rows out on purpose — every fee, every charge, from every account, into one place where the total finally has to be looked at directly.
Most businesses that do this for the first time are surprised by the number, not because any individual fee was unusual, but because nobody had ever added them all up before. A monthly account fee that felt negligible when read on its own becomes one row of twelve in an annual total; a transaction fee charged eighty times a year stops being “a small amount” the moment it is multiplied out. None of the arithmetic is difficult. The reason it rarely gets done is that the rows never sit next to each other on any statement you would naturally read.
The kinds of fee that actually appear
| Fee | Typical pattern |
|---|---|
| Monthly account fee | Fixed, same day each month, easy to spot once you know to look |
| Transaction or payment fee | Small, per transfer, adds up with volume rather than size |
| Foreign exchange margin | Baked into the converted amount — usually no separate line at all |
| Overdraft or unauthorised-use fee | Irregular, sometimes with a separate interest charge alongside it |
| Card issuance or replacement fee | Rare, one-off, easy to miss because it looks unlike a running cost |
| Wire or international transfer fee | Per transaction, often larger than a domestic transfer fee by a wide margin |
The third row is the one worth reading twice. Unlike the others, an FX margin frequently has no line item at all — it is the gap between the rate you were actually given and the rate the market was quoting, and no single statement states both numbers side by side for you to subtract.
Why fees hide in plain sight
Three ordinary reasons, none of them sinister, all of them effective at keeping the total invisible.
They are small individually, and small numbers do not trigger the same scrutiny large ones do.
They are scattered across many statements, so no single document shows the annual total.
The wording varies month to month and bank to bank, so searching for one exact phrase misses half of them.
The fee schedule that changed without anyone noticing
Fee schedules are not fixed. A bank raises a monthly fee by a few pounds, adjusts a transaction charge, or introduces a new fee for something that used to be free — usually announced in a notice most account holders never open, buried in a statement footer, or sent as an email that reads like every other update the bank has ever sent.
Read one statement at a time, a change like this is nearly invisible — this month's fee looks the same size as last month's because £2 more on a monthly charge does not register as a change worth investigating. Read across twelve or twenty-four months in one table, the same change is a visible step in the numbers: eleven months at one figure, then a run of months at a slightly higher one.
This is the strongest single argument for running the exercise over more than one year where the statements exist. A single year shows the total; two or three years, read the same way, show whether that total has been drifting upward and roughly when it started — information that is genuinely difficult to reconstruct after the fact from memory alone.
What gets read from each statement
Every row's date, description and amount, exactly as printed.
The full transaction description, so fee rows can be identified and grouped afterwards by wording.
The currency the row is stated in, kept as its own field rather than converted.
The source file and page, so any fee can be traced back to its statement in seconds.
Every row is read, not just ones that look like fees — deciding which rows are charges is a filtering step you do afterwards, on a complete table, rather than a guess made while reading the document.
What does not get found
A margin built into a quoted exchange rate. There is no line to read, so there is nothing to extract.
Whether a fee was applied correctly under your account's terms. That needs the terms, not just the statement.
Fees charged by a counterparty rather than your own bank — a supplier's payment fee passed on to you, for instance.
A fee that was refunded on a later statement, unless both rows are read and matched by hand afterwards.
One account, one year
A single ordinary business current account, twelve months of statements, fee rows pulled out and grouped.
| Fee type | Count | Total |
|---|---|---|
| Monthly account fee | 12 | 180.00 |
| Transaction fees | 84 | 252.00 |
| International transfer fees | 9 | 225.00 |
| Card replacement | 1 | 12.00 |
| Overdraft charges | 3 | 94.50 |
763.50 for the year, on one account, from fees that never once appeared as a single alarming number on any individual statement — the largest single monthly fee row was 15.00. It is the accumulation across 109 separate rows that produces a total worth a second look, and no single month's statement was ever going to prompt that look on its own.
None of this includes any FX margin, which — per the section above — leaves no line to read at all. On an account making regular international payments, that unlisted cost is frequently larger than every line item in this table combined.
Worked through on a single account, the exercise takes minutes once the year of statements is read into one table — the arithmetic itself is trivial, twelve numbers grouped and summed. What made the £763.50 figure hard to find before was never the maths; it was that the 109 separate rows behind it were spread across twelve different documents, none of which was ever going to show the total on its own. Multiply that same pattern across every account a business holds and the case for doing this once a year, rather than never, gets considerably stronger.
Comparing across accounts
The exercise gets more useful once it runs across every account a business holds, because fee structures rarely match between them.
| Account | Annual fees | Largest single category |
|---|---|---|
| Main operating account | 763.50 | Transaction fees |
| Card account | 340.00 | Annual card fee |
| Foreign subsidiary account | 1,120.00 | International transfer fees |
| Savings account | 0.00 | None — fee-free by design |
The foreign subsidiary account is the standout here, and it usually is wherever one appears in a group — international transfer fees and FX handling tend to concentrate cost in exactly the account least visible to whoever reviews the domestic operating account each month.
Building the view
Gather a year of statements
Per account. A shorter window works but a full year catches quarterly and annual charges a shorter one would miss entirely.
Read every row
Not just the ones that look like fees — a complete table is what makes the filtering step in the next stage reliable.
Filter to fee rows
By description, using the wording your bank actually uses rather than guessing at a generic word like 'fee'.
Group into categories
Monthly, transaction, FX, overdraft, card — whatever grouping makes the total legible at a glance.
Total by account and by category
Two views of the same data, because 'which account costs the most' and 'which fee type costs the most' are different, both useful, questions.
Steps one and two are the ones worth doing carefully the first time, because everything after them is filtering and grouping the same complete table rather than re-reading any document a second time. Get the full read right once, and the fee view, the account comparison and next year's repeat of the exercise all draw from the same underlying data without touching a statement again.
When the exercise is worth doing
Once a year is a reasonable default for most businesses — enough to catch a full cycle of charges without becoming a recurring chore for a cost that changes slowly.
Worth doing sooner after any of: opening a new account, a change in transaction volume or pattern, a noticeable increase in international activity, or simply never having done it before. That last one is the most common reason to start — most businesses genuinely do not know their real annual fee total until the first time someone adds it up.
Businesses that end up doing this twice a year rather than once usually have a reason specific to them, not a general belief that more frequent is always better — a facility undergoing rapid fee changes, a treasury function reporting to a board that asks about cost control specifically, or simply a first year where the number was large enough to want confirmation that the second look agrees with the first.
What to do with the number
Not something we tell you — what counts as too much depends on the account, the volume it handles and what alternatives are realistically available. What the number reliably does is turn a vague sense of “fees feel high” into a specific, sourced figure worth acting on.
A concrete opening point for a conversation with your bank, backed by an itemised total rather than an impression.
A fair basis for comparing accounts if you are considering switching, since the comparison uses your own actual usage rather than a generic rate sheet.
An input into how idle cash and account structure decisions interact — the fee side of the coin the return side of idle cash and what it costs covers.
A conversation with an account manager goes differently when it opens with a number instead of a feeling. “Your fees feel high” invites a generic response; “this account cost £763.50 in fees last year, and 109 of those charges were transaction fees on a volume your competitor's fee-bundle would cover” invites a specific one. It does not guarantee a better outcome, but it changes who is doing the estimating in the room — and a sourced, itemised total is very hard for a bank to argue with, because it is built entirely from their own statements.
What this is not
Worth being clear about the boundary before acting on any of the above. This reads what a statement states, accurately and completely. What it does not do is judge whether a given fee was fair, negotiate on your behalf, or account for a cost that never appears on a statement at all. Four specific limits follow from that.
Not a fee dispute service
It shows you what was charged, sourced to the statement. Disputing an incorrect charge is a conversation with your bank.
Not a rate comparison tool
It reads what your own accounts actually charged. Comparing against other banks' rate sheets is a separate exercise.
Not an FX margin calculator
A margin baked into a rate leaves no line, and we do not estimate one from a market rate we did not observe at the time.
Not financial advice
Whether a given fee level is reasonable, and what to do about it, is a business decision this page does not make for you.
For the balance side of the same accounts, see cash position across accounts; for what an unused balance is separately costing you, see idle cash and what it costs.
Taken together, fees and idle balances are the two costs of holding money that never show up as a single alarming line item anywhere — one is a drip of small charges, the other a foregone return, and both stay invisible until someone deliberately pulls the numbers out of the statements they are scattered across.
