FlowParse
Tool 12 August 2026 15 min read

Bank charges and fee analysis

A monthly account fee, a handful of transaction charges, an FX margin here and there — each one is an ordinary row among hundreds on a statement, small enough to skip past every time. Pulled into their own total across a year, they rarely stay small.

FlowParse
flowparse.io
flowparse.iono sound needed
0:00 / 0:00

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

FeeTypical pattern
Monthly account feeFixed, same day each month, easy to spot once you know to look
Transaction or payment feeSmall, per transfer, adds up with volume rather than size
Foreign exchange marginBaked into the converted amount — usually no separate line at all
Overdraft or unauthorised-use feeIrregular, sometimes with a separate interest charge alongside it
Card issuance or replacement feeRare, one-off, easy to miss because it looks unlike a running cost
Wire or international transfer feePer 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.

FlowParse
flowparse.io

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.

FlowParse
flowparse.io

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.

FlowParse
flowparse.io

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.

FlowParse
flowparse.io

One account, one year

A single ordinary business current account, twelve months of statements, fee rows pulled out and grouped.

Fee typeCountTotal
Monthly account fee12180.00
Transaction fees84252.00
International transfer fees9225.00
Card replacement112.00
Overdraft charges394.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.

AccountAnnual feesLargest single category
Main operating account763.50Transaction fees
Card account340.00Annual card fee
Foreign subsidiary account1,120.00International transfer fees
Savings account0.00None — 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.

FlowParse
flowparse.io

Building the view

1

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.

2

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.

3

Filter to fee rows

By description, using the wording your bank actually uses rather than guessing at a generic word like 'fee'.

4

Group into categories

Monthly, transaction, FX, overdraft, card — whatever grouping makes the total legible at a glance.

5

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.

FlowParse
flowparse.io

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.

FlowParse
flowparse.io

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.

Frequently asked questions

One year, every fee

Read a year of statements together and see the total. Most businesses find it larger than they expected.

Keep reading