FlowParse
Tool 11 August 2026 15 min read

Cash position across accounts

Almost any business can tell you the balance of one account in about four seconds. Ask the same business what it holds in total, right now, and you get an afternoon of work and a number nobody quite trusts.

FlowParse
flowparse.io

The number nobody actually has

It is a strange gap. The single most basic fact about a business — how much money it has — is the one thing that usually cannot be produced on demand.

Not because it is hard arithmetic. Adding six numbers is not hard. It is because those six numbers live in six places, arrive in six formats, are current as of six different moments, and two of them are the same money counted twice because a transfer was in flight.

So the honest answer to “how much do we have” is usually the balance of the main operating account, said with slight hesitation, because everyone knows that is not really the answer.

This page is about producing the real one, from statements, in a way that can be repeated next week without it becoming an afternoon again.

Position is not flow

Worth separating early, because the two get conflated constantly and they answer different questions.

Cash positionCash flow
QuestionWhat do we hold?What moved, and when?
ShapeA snapshotA period
Built fromClosing balancesTransaction lines
Breaks whenAccounts are missingDates are wrong
Used forCan we pay this?Are we running dry?

Both matter and they are not substitutes. A business can have a healthy flow and still be unable to make Friday's payroll because the money is in the wrong account. It can also have a comfortable position and be quietly running down.

This page is entirely about the first. If you want the second — inflows and outflows grouped by month, net movement over a period — that is cash flow from bank statements, and it works from transaction lines rather than balances.

Where the money actually sits

The reason this is harder than it sounds is that the number of places has quietly grown for almost everyone.

Operating accounts

The obvious ones, often more than one if the business grew by adding rather than consolidating.

Card accounts

Usually a negative position, and just as usually left out of the total because it is a card, not a bank.

Payment processors

Money already collected and not yet paid out. It is yours, it is real, and it is invisible to the bank.

Savings and deposit vehicles

Deliberately parked, sometimes with notice periods that make it less available than it looks.

Foreign subsidiary accounts

Often at a different bank, in a different currency, on a different reporting rhythm.

Merchant and marketplace balances

Held on a platform until a payout cycle releases it.

Six categories, and a mid-sized business easily has a dozen individual accounts across them. The third one is the most commonly forgotten and often the largest single omission, because processor balances can hold weeks of revenue.

FlowParse
flowparse.io

The “as of” problem

This is the failure that produces confidently wrong numbers, and it is almost never noticed.

Statements do not arrive on a common schedule. One account closes on the last day of the month, another on the 15th, a card on the 3rd, a processor on a rolling weekly cycle. Add up their closing balances and you have a total that is as of no date at all.

It looks fine. It is a number, it has a currency symbol, nobody questions it. And it corresponds to a moment that never existed.

The error is not small either. If a large payment left one account on the 20th, a total mixing a 15th balance with a 31st balance either double-counts it or misses it entirely, depending on which side it lands.

The fix is to record the statement date alongside every balance, and to treat a position as valid only when the dates agree — or to say explicitly that they do not. A position labelled with its true as-of date is useful. One that quietly averages four dates is not.

It is also why we keep the statement date as a first-class field rather than an afterthought: without it, there is no way to tell a valid position from an invalid one after the fact.

FlowParse
flowparse.io

Balance is not the same as available cash

A second distinction that catches people, usually at the worst moment.

The balance on a statement is what the account holds. What you can actually spend on Friday may be materially less, for reasons that are not visible in the balance line at all.

Payments already issued that have not yet cleared, so they still appear as money you have.

Deposits credited but subject to a hold, which show in the balance and cannot be drawn.

Notice periods on deposit accounts, where the money is real but not reachable this week.

Processor balances that are yours but sit behind a payout cycle.

Amounts effectively committed — payroll, tax, a supplier run already agreed.

None of those five are in the document. They come from knowledge of the business, and the honest thing for a reading tool to do is to give you the balance the statement states and leave the adjustments to you.

Which is what we do. What we can add is the raw material to make those adjustments quickly: every balance, every date, every account, in one place, rather than scattered across a dozen PDFs.

FlowParse
flowparse.io

When there is more than one currency

As soon as a business holds money in two currencies, “one number” stops being straightforwardly possible, and pretending otherwise causes real damage.

To produce a single total, something has to convert. That means picking a rate, and a rate is a choice: the closing rate on the position date, an average, the rate your bank would actually give you, or a budget rate set months ago. They produce different totals, all defensible.

A tool that silently applies one of them delivers a figure that looks exactly like the read figures beside it and carries an assumption nobody can see. Three weeks later, nobody can say which rate produced it.

So we do not convert. Each balance stays in its own currency, labelled. If you need a consolidated figure, you apply the rate your treasury policy specifies, and the conversion stays visibly yours.

In practice, most finance teams that hold several currencies do not want a single blended number anyway. They want to see the position by currency, because that is the level at which the decisions get made.

The currency is read from the statement and carried on the row. Where a statement is ambiguous about it, the field is marked rather than guessed from the bank's country.

What gets read from each statement

The closing balance, exactly as printed, not recomputed from the transaction lines.

The statement period end date — the moment that balance is true as of.

The currency, from the document rather than inferred from the institution.

The account identifier as shown, so two accounts at the same bank stay distinct.

The opening balance, which makes it possible to check the period is continuous with the last one.

The source file and page, so any row can be traced back in under a minute.

The first is deliberate. Recomputing the closing balance from the lines would usually agree, and where it does not, that disagreement is information about the document — not an error to quietly correct.

The fifth is what makes a sequence of positions trustworthy rather than a series of unrelated snapshots. Where one period's opening balance does not match the previous period's close, a statement is missing.

What does not get read, and does not get invented

The exchange rate. Not in the document, and choosing one is a policy decision.

Whether a balance is available or committed. Depends on obligations no statement knows about.

Which accounts belong in the position at all. A client trust account is not your money.

Whether a transfer between two of your accounts is genuinely internal. Flagged, not assumed.

A balance for a period whose statement you did not upload. A gap stays a gap.

The third deserves emphasis because it is the one that can go badly wrong. Client money, tenant deposits, funds held on behalf of someone else — these sit in accounts that look exactly like yours and are not part of your position. No document says which is which; only you do.

The last one is the general principle across everything we build: an absent figure is shown as absent. Filling it with an estimate would make it indistinguishable from a figure that was actually read, and by next week nobody could tell them apart.

FlowParse
flowparse.io

Building the position

1

List the accounts

Every account the business holds money in, including cards, processors and anything at a foreign subsidiary. Write the list down once; it changes rarely.

2

Pick the as-of date

One date for the whole position. Everything else follows from this choice.

3

Gather the statements

The statement covering that date for every account on the list. Whatever format each arrives in.

4

Read them

Closing balance, period end date, currency, account, opening balance, source file.

5

Resolve internal transfers

Confirm the flagged pairs. Money leaving one of your accounts for another is not a change in position.

6

Total by currency

One subtotal per currency. Convert afterwards if your policy requires it, and record the rate you used.

Step one is the one that gets skipped and the one that determines whether the result is right. A position built from the accounts someone happened to remember is not a position; it is a subset with an authoritative-looking total.

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

This is steps three to six run together on five real statements — the same batch used in the worked example below.

A small business, five accounts

Made concrete, because the arithmetic is trivial and the traps are not. A retailer holds an operating account, a card, a payment processor, a savings account earning interest, and a supplier deposit account in a second currency. Five PDFs, five formats, one Friday afternoon.

AccountAs ofBalanceCurrencyNote
Operating account31 May48,220.00GBP
Card account31 May-3,140.55GBPNegative — kept as printed
Payment processor31 May6,880.12GBPBehind a payout cycle
Savings account31 May62,000.00GBP14-day notice to withdraw
Supplier deposit28 May9,500.00EURDifferent as-of date — flagged

The GBP subtotal is 113,959.57 — four accounts, one as-of date, arithmetic nobody needs to check twice. The EUR balance stays its own line rather than being folded in at a guessed rate, and its 28 May date is shown rather than smoothed away, because it is two days older than the rest and that difference belongs to whoever reads the total, not to an assumption baked in before they see it.

Two things this example makes visible that a single-account view never would: the card's negative balance is real money owed, not an error to explain away, and the processor balance — money already collected from customers — would be invisible to anyone who only checked the operating account, despite being nearly 7,000 of the business's own cash.

What this table cannot tell you is whether 113,959.57 is enough. That depends on payroll due next week, a supplier payment already agreed, and a tax instalment — none of which live in a statement. The position is the honest input to that judgement, not the judgement itself. For the running shape of one account over many such snapshots, see balance timeline; for what the accounts themselves are quietly costing to hold, see bank charges and fee analysis.

Checking the number is right

A cash position is unusually easy to get wrong in ways that produce no visible symptom. These four checks catch nearly all of it.

Every account on your list appears exactly once. Missing is the common failure; duplicated happens when one account statements twice.

Every statement date matches the as-of date, or the difference is stated explicitly.

Each account's opening balance equals last period's closing balance. If not, a statement is missing in between.

Every flagged internal transfer has been confirmed or rejected — not left pending.

Notice that none of the four is arithmetic. Adding balances is not where positions go wrong — completeness, timing and double-counting are. A total that sums correctly tells you almost nothing about whether it is the right total.

Where the individual statements themselves are worth checking — that the lines within one reconcile to its own printed balances — that is bank statement validation, a different and complementary check.

FlowParse
flowparse.io

How often is worth doing

The right frequency depends less on the size of the business than on how close it runs to its limits.

A business with several months of cover needs a monthly position and would gain little from more. A business where payroll and a large supplier payment land in the same week needs it far more often, because the question is not “how are we doing” but “will this clear”.

What makes frequency possible is that the work is nearly all fixed cost. Listing the accounts, agreeing what counts, deciding the currency policy — those are done once. After that, each repetition is gathering statements and reading them.

Which is why the first one takes an afternoon and the tenth takes twenty minutes. If your tenth still takes an afternoon, the account list was never written down and is being rebuilt from memory each time.

The step-by-step for making it a daily habit is in how to build a daily cash position.

What this is not

Not a forecast

This is what you hold, from documents. What you will hold depends on assumptions we have no basis for making.

Not a bank connection

We read statements you provide. There is no live feed and no credentials to hand over.

Not a currency converter

Balances stay in their own currency. Applying a rate is a policy decision that stays with you.

Not a treasury management system

No payments are initiated, no sweeps executed, no limits enforced. This is the reporting layer beneath that.

Not financial advice

What to do about a position — where to hold it, what to move — is not something a document reader can tell you.

The second is worth being clear about because it cuts both ways. No connection means nothing is real-time — but it also means every account works, including the card, the foreign subsidiary and the processor that no aggregator covers.

FlowParse
flowparse.io

The first one

Pick last month end. Write down every account the business holds money in — the exercise itself is usually informative — and gather the statement covering that date for each.

Read them all in one batch and look at the result. Two things tend to come out of a first attempt: an account nobody had been counting, and a statement date that does not line up with the others.

Then compare the total against what the business believed it held. The gap is the value of the exercise, and it is usually larger than people expect.

What happens to money once it sits still is in idle cash and what it costs, and the fees quietly taken along the way in bank charges and fee analysis.

FlowParse
flowparse.io

Frequently asked questions

One month, every account

Read them together and compare the total against what the business thought it held. That single comparison is the whole argument.

Keep reading