An agency's money, in columns
An agency's bank account is dominated by money that is not really the agency's. Client retainers and project fees come in; media spend goes straight back out to ad platforms on the agency's card, to be rebilled later. Around that sit freelancers, contractors, a long tail of software subscriptions and payroll.
The result is a bank balance that flatters and a revenue figure that lies, unless someone separates the pass-through money from the money the agency actually earned. That separation starts with the statement — which is a PDF, and therefore useless until it is data.
FlowParse converts it with AI: every transaction with date, description, signed amount and running balance, checked against the closing balance the bank printed. From there, agency numbers become answerable.
Media spend is not revenue, and it is not cost
This is the defining accounting problem of an agency, and it wrecks more agency P&Ls than anything else. When you charge a client's ad budget to the agency card, that money flows out as an expense and flows back in as an invoice line — and if both halves are treated naively, an agency turning over a million in fees can look like it turns over five, at a margin that makes no sense.
Worse, the two halves land at different times. The platform charges the card immediately; the client pays the rebilled invoice thirty or sixty days later. The agency is financing the client's advertising in the meantime, out of its own cash.
Structured bank data makes both facts visible. Ad-platform charges become a category you can total, separate from operating costs, and the timing gap between money out and money back becomes something you can measure rather than feel.
Which clients actually make money
Most agencies know their headline revenue and very few know their margin by client, because the costs are scattered — a freelancer here, a subscription there, a slice of somebody's salary, and a pile of media spend that belongs to a specific account.
Once bank transactions are categorised rows, that becomes tractable. Freelance payments carry a payee. Software charges carry a vendor. Media spend carries a platform and, often, a reference. Attributing them by client turns a vague sense that one account is difficult into a number showing it is unprofitable.
That is the number retainers get renegotiated on — and it comes from the bank, which is the only place that records what was actually paid rather than what was budgeted.
What FlowParse pulls from an agency statement
Extraction is by meaning rather than by template, so it works with any bank: every transaction's date, the full description including platform, vendor and client references, the signed amount, the running balance and the counterparty where the statement names one.
Descriptions matter more than usual here, because that is where the ad platform, the SaaS vendor and the client's payment reference live. Long descriptions that wrap across lines are joined back into one field rather than truncated, so the reference survives.
Amounts export as typed, signed numbers, so a category totals in one formula.
How to convert an agency bank statement
Upload the statements
Drop in one or many PDF statements from any bank or card account.
Let AI extract them
Every transaction is read with its date, description, signed amount and balance.
Check the balance
Opening balance plus transactions is checked against the closing balance the bank printed.
Export and categorise
Download clean Excel or CSV — or a QuickBooks or Xero-ready file.
Freelancers, contractors and the variable cost base
Agencies flex their capacity with freelancers, which is a strength operationally and a blind spot financially. Freelance cost moves month to month, is spread across many payees, and is rarely totalled until someone asks why the margin moved.
As structured rows, freelance payments total by payee and by month, and can be attributed to the work they were engaged for. That is what turns freelance spend from an unpredictable drag into a cost of delivery you can price against.
It also makes the year-end question — who was paid what, and does the paperwork exist for it — a filter rather than an archaeology project.
The software subscription sprawl
Every agency accumulates tools. Design software, scheduling tools, SEO platforms, analytics, project management, stock imagery, AI credits — each individually small, each charged monthly to a card, most signed up for by someone who has since left.
Because they are small and recurring, nobody notices them. Because there are dozens, they add up to a real number. In structured bank data, recurring charges are exactly the pattern that stands out: the same vendor, similar amount, same day each month, appearing month after month.
Totalling that column is often the single most immediately profitable thing an agency owner does with converted bank data, because a meaningful share of it is usually for tools nobody still uses.
Financing your clients' advertising
An agency's cash-flow risk is structurally strange: the bigger the account, the more of the client's money you front. A large campaign means large platform charges hitting your card now, and a large invoice being paid in sixty days — if it is paid on time.
That exposure is measurable once the bank data is structured. Money out to platforms per month, money back in from clients per month, and the gap between them tells you exactly how much working capital the agency is lending its clients at any moment.
Agencies that get into trouble almost always get into it here, and almost always without seeing it coming — because a bank balance that still looks healthy today is hiding a payment run tomorrow.
Foreign currency and platform charges
Ad platforms and SaaS vendors frequently bill in a currency that is not yours, and the bank converts at a rate with a spread built in. On a large media budget, that spread stops being trivial.
Structured statements capture the charge as it hit the account, so foreign-currency spend can be totalled and the real cost of conversion becomes visible rather than absorbed. If the agency is rebilling media at cost, an unnoticed FX spread is margin quietly leaking away.
It is also a strong argument for a multi-currency account — but only once you can show what the current arrangement costs.
Matching invoices, payments and spend
Three things need to agree: what you invoiced a client, what the client paid, and what you spent on their behalf. In most agencies these live in three places — the invoicing tool, the bank, and a platform dashboard.
Converting the bank statement supplies the middle one as clean data, which is what makes the three-way comparison possible. Reconciliation then finds the invoice that was never paid, the payment that arrived short, and the media spend that was never rebilled.
That last one is the expensive one. Ad spend the agency paid and forgot to rebill is a pure loss, and it happens more often than anyone would like to admit.
A year of statements and cards in one pass
Agencies rarely have one account. There is the main current account, one or more company cards carrying the media spend, and often a separate client-money or savings account.
Batch processing takes up to 100 statements at once and merges accounts and months into a single sheet, with duplicate detection and a source-file reference on every row — so the whole picture, cards included, sits in one dataset.
Straight into QuickBooks or Xero
The converted statement goes directly into accounting software. FlowParse produces real bank-feed files — QBO, QFX and OFX — with a transaction ID per row so re-importing does not double-post, plus a Xero-ready CSV.
That is most useful for the card accounts and older periods a live feed does not cover, which in an agency is usually exactly where the media spend is.
Scanned statements too
Where a statement exists only as a scan or a forwarded image — an old account, a card provider that posts paper — OCR runs first, then the AI structures the recognised text and flags low-confidence figures for a quick check.
The result is the same clean rows as a downloaded PDF, which matters when a funding round or a sale needs several years of history.
Numbers you can run the agency on
Around 98% field-level accuracy on standard layouts, with low-confidence figures highlighted in an editable preview before anything exports.
And every statement is checked arithmetically: opening balance plus transactions must equal the closing balance the bank printed. That validation is what makes a missing media charge or a duplicated payment a caught error rather than a margin mystery three months later.
Client and financial data stays private
Agency statements name your clients, your suppliers and your margins. Uploads run over TLS, processing is EU-hosted, the original PDF is deleted immediately after processing, and documents are never used to train AI models.
Nothing is retained once your export is produced, so there is no accumulating record of your client roster or your cost base sitting anywhere.
Retainers, scope creep and the revenue that stopped
A retainer is a promise of predictable revenue, and predictable revenue is exactly the kind that stops predictably without anyone noticing. A client pauses for a month, then another; the payment simply does not arrive, and in an agency collecting from twenty clients, an absence is much harder to see than a presence.
Structured bank data makes absences visible. Payments by client and by month, laid out as a grid, show the gap where a retainer used to be — and show it in the month it happened rather than at the quarter end.
The same grid shows the retainer that has not changed in three years while the scope has doubled. That is a repricing conversation, and it only happens if someone can see it.
Payroll against billable capacity
Salaries are the agency's largest fixed cost and the one that determines how much fee income it needs simply to exist. The relationship between payroll and fee income — not media spend, fee income — is the single ratio that most reliably says whether an agency is healthy.
That ratio is only computable once pass-through money has been stripped out of revenue, which is precisely what converting and categorising the statements achieves. Compare payroll against real fee income and the picture is honest; compare it against gross billings including media and the picture is flattering and useless.
For agencies planning a hire, that honest ratio is what tells you whether the next salary is affordable at current fee levels or only at hoped-for ones.
Why a growing agency runs out of money
Agencies do not usually fail because they lose clients. They fail while winning them, because every new account with a media budget increases the amount of client money the agency is fronting before it is reimbursed.
Growth therefore consumes cash rather than generating it, and the faster the growth, the sharper the squeeze. It is entirely possible to sign the biggest account in the agency's history and be unable to make payroll two months later.
The only defence is seeing it coming, and that means having the outflow-to-inflow timing as data rather than as a feeling about the bank balance. Converted statements give exactly that: what left for platforms, when, and when it came back — per month, per client, across the year.
Production, print and third-party costs
Beyond media, agencies front other people's money constantly: a photographer for a shoot, a production company for a film, print runs, event costs, stock licensing. Like media spend, these are usually charged to the agency and rebilled — and like media spend, they are frequently rebilled late or not at all.
The pattern is familiar by now, and so is the fix. Third-party production spend becomes a category with a payee and a date; the recovery appears as income. What went out and never came back is a filter rather than a discovery.
The difference from media is that production costs are lumpy and infrequent, which makes them easier to forget entirely — a single unbilled shoot can be worth more than a month of retainer.
Who this is for
Agency owners who suspect their real margin is not what the P&L says, finance leads separating pass-through media spend from revenue, and the bookkeepers and accountants who handle agencies and are tired of ad-platform charges arriving as an undifferentiated blob.
If your agency's numbers currently rely on a bank balance that looks fine, converting the statements is how you find out whether it actually is.
Convert your agency's bank statements
Upload a statement and get clean, categorised rows — media spend separated from revenue, freelancers and subscriptions totalled, margin finally visible.
