A courier's money, in columns
Courier work produces the messiest bank statement in the gig economy. Money arrives in many small deposits — sometimes daily, sometimes per app, sometimes several times a day — from two or three platforms at once, each netting its own cut before it moves. Money goes out in even smaller amounts: fuel, parking, bike or van repairs, the phone, the insurance, the bag.
All of it is printed in a PDF that no spreadsheet can read. FlowParse converts the statement with AI — every transaction with its date, description, signed amount and running balance — and validates it against the balance the bank printed, so nothing has gone missing before you start.
The result is what courier bookkeeping actually needs: a categorised table of what each app paid, what the vehicle and the road cost, and what was actually left — from any bank, with no template to configure.
Six hundred deposits and no summary
The distinguishing feature of courier accounts is not complexity — it is sheer count. A driver working two apps most days can easily see several hundred separate credits in a year, none of them large, all of them different, none of them adding up to anything you could read off a page.
That volume is what makes manual bookkeeping genuinely impossible rather than merely annoying. Nobody is typing five hundred deposits into a spreadsheet, so what happens instead is an estimate — and an estimate on a tax return is a risk with no upside.
Structured extraction removes the count as a problem entirely. Five hundred deposits is the same effort as five: they become rows, they sum, and the total is a fact rather than a guess. This is the vertical where conversion changes the outcome most, precisely because the manual alternative does not really exist.
Three apps, one account, three different deals
Almost no courier runs one app. You take what is busy, which means payouts from several platforms landing in the same account, each with its own commission, its own payout rhythm, and its own idea of what a delivery is worth.
Which one actually pays best is the question that decides how you spend your week, and it is very hard to answer honestly from inside the apps — each shows you its own earnings, none shows you the comparison, and none of them nets out the fuel.
Converted and categorised, each platform becomes a column: paid per week, per app, over the same period, against the costs incurred earning it. That comparison is the practical payoff of the whole exercise, and it regularly surprises people.
What FlowParse pulls from a courier's statement
Extraction is by meaning rather than by template, so it works with whichever bank or app account you are paid into: every transaction's date and value date, the full description including the platform's payout reference, the signed amount, the running balance, and the counterparty where the statement names one.
References are what make a courier statement legible at all — with dozens of similar-looking small credits, the description is often the only thing identifying which app sent which. Descriptions that wrap across lines are joined back into one field rather than truncated.
Every amount exports as a typed number with the correct sign, so hundreds of deposits and hundreds of fuel stops each total in a single formula.
How to convert a courier bank statement
Upload the statements
Drop in one or many PDF statements from any bank or app account — digital or scanned.
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 an accounting-ready file for QuickBooks or Xero.
The honest boundary: we do the bank side
FlowParse does not connect to any delivery platform. No integration, no API, no login to your courier account — and we will not imply otherwise to make the page sound better.
What we convert is the statement your bank produced. Your app's earnings summary is the other half, and you download it from the app. The value is in having both as clean data, because comparing what the platform said it sent against what the bank says arrived is the only way discrepancies ever surface.
We also do not issue tax forms, do not file returns, and do not decide what is deductible where you live. We produce accurate, validated, categorised data. What it means for your return is your accountant's call — and this gives them something to work from.
The invoice you never wrote
Courier platforms almost universally self-bill: they generate the invoice on your behalf, decide what it says, and pay against it. You are a business that never issues an invoice, which is a strange position to be in and a confusing one at year end.
It means your sales records are documents someone else created, stored in an app you may lose access to when you stop working for them. Plenty of couriers discover at exactly the wrong moment that their earnings history is not really theirs.
The bank is the record that stays yours. Converting it produces an independent, dated, validated series of what you were actually paid — which is what you want when an app has deactivated you and the summary you needed is behind a login that no longer works.
Cash on delivery and the money that goes the other way
Some courier work still involves cash, and it inverts the normal flow. You collect the customer's money, and then the platform deducts what it collected on your behalf from your next payout — so a cash-heavy week produces a smaller deposit, not a larger one.
That is deeply counter-intuitive in a spreadsheet. A payout reduced by cash you already have in your pocket looks like a bad week if you only read the bank, and it looks like a great week if you only count the cash.
Structured rows are what let the two be reconciled properly. The deduction is visible, dated, and matchable against the cash you banked or spent — so the week's real earnings can be computed instead of felt.
Fuel, repairs and the thing you drive
Delivery is brutal on a vehicle. Short journeys, constant stopping, engine never properly warm, and mileage that accumulates far faster than any private driver's. The costs follow: fuel bought in small amounts many times a week, tyres and brakes far more often than the service book suggests, and a repair bill that is never a surprise for long.
Riders have the same problem in miniature — a bike is cheaper but it is consumed faster, and e-bike batteries are neither cheap nor eternal.
As structured categories these become totals rather than impressions: fuel per month, repairs per quarter, and the real running cost of the vehicle over a year. That is the number that tells you whether the work pays, and it is the number nobody has until they convert the statements.
The costs too small to remember
Courier costs are individually tiny and collectively enormous. Parking. Congestion charges. The phone plan you need because the apps eat data. Insulated bags that wear out. A phone mount, a power bank, the phone itself. Public-charging top-ups. Each too small to note, none of them nothing.
This is precisely the category couriers under-claim, because remembering them is impossible and the receipts are long gone. Under-claiming means paying tax on money you spent earning the income — the most avoidable overpayment there is.
In a structured statement they are all still there, because the bank remembered even though you did not. Filtering a year of small card transactions into categories takes minutes and routinely uncovers a deduction total that is worth considerably more than the effort.
When the payouts land in your personal account
Nearly every courier is paid into a personal account, alongside the rent, the shopping and everything else. That is normal, and it makes the year end harder than it needs to be.
Separating business from personal in a PDF means reading every line of a document with hundreds of lines. In a structured export it means filtering and tagging once, then reusing the rules for the rest of the year.
It also gives you something defensible if you are ever asked: a categorised record showing which transactions you claimed and why, rather than a reconstruction from memory two years later.
Paid daily, but the van still needs tyres
Frequent payouts feel like good cash flow, and mostly they are — but they hide the lumpy costs. Insurance, a service, a set of tyres, a phone replacement: each one is several days of earnings arriving at once, and none of them arrive on a schedule that matches your deposits.
That is why couriers who are earning steadily still get caught out. The income is smooth and the costs are not, and no amount of daily payouts fixes a bill that lands whole.
A structured monthly series shows the shape: money in by week, money out by week, and where the lumps fall. Seeing the year's lumpy costs in advance is what makes them survivable rather than disruptive.
Filing with numbers instead of estimates
The courier's tax problem is not that the rules are hard. It is that the raw data is unusable — hundreds of small credits, hundreds of small debits, no summary that ties out, and a filing deadline.
So the return gets estimated, and estimating a return goes wrong in both directions at once: overstate your costs and you have a problem if asked, understate them and you have paid tax you did not owe. Most couriers do the second.
Converted statements replace the estimate with an arithmetic total that the closing balance itself confirms. See bank statements for a tax return and, in the UK, statements for self assessment for how that data is used.
A year of statements in one pass
Courier bookkeeping happens once, under deadline pressure, and involves more pages than any other gig vertical — a busy courier's monthly statement can run to several pages of dense rows on its own.
Batch processing takes up to 100 statements at once and merges them into a single sheet, with duplicate detection for overlapping periods and a source-file reference on every row, so the whole year arrives as one sortable dataset.
Couriers who moved from an app account to a proper bank part-way through the year get both consolidated into the same table rather than stitched together by hand.
The card the fuel and the parking go on
Much of a courier's spending never touches the current account — it goes on a card, because that is what is in your pocket at the pump and in the parking app.
Card statements convert the same way and merge into the same dataset. That completeness is what separates a real expense total from an indicative one; see credit card statement conversion for the card side specifically.
Straight into QuickBooks or Xero
If you or your accountant run accounting software, the converted statement goes straight in. FlowParse produces real bank-feed files — QBO, QFX and OFX — with a transaction ID per row so a re-import does not double-post, and a Xero-ready CSV with the columns Xero expects.
That matters most for the accounts a live feed does not reach: an app account, a bank you have left, the months before you registered as self-employed.
Scanned and photographed statements too
Not every statement is a tidy download. Older accounts post paper, and plenty of couriers have months that exist only as phone photographs.
OCR runs first on scanned and photographed statements, then the AI structures the recognised text and flags low-confidence figures for review — so a phone photo becomes the same clean rows as a downloaded PDF.
Numbers you can file on
Around 98% field-level accuracy on standard layouts, with every low-confidence figure highlighted in an editable preview before anything exports.
With hundreds of near-identical small rows, the balance check matters more here than anywhere. Opening balance plus every transaction must equal the closing balance the bank printed, and FlowParse verifies that on every statement — so a dropped deposit among five hundred is caught by arithmetic rather than never noticed at all. That is what validation means: evidence, not a confident-looking table.
Your account, your data
A courier's statement is a personal document — your earnings, your rent, your life in one file. 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.
Who this is for
Couriers and delivery riders filing their own return, multi-app drivers who want to know which platform actually pays, anyone who has been deactivated and needs their own record of what they earned, and the accountants who serve gig clients and would rather not receive a year of PDFs in March.
If your earnings this year are currently a guess between two numbers, converting the statements is the step that replaces the guess with a total.
Convert your courier bank statements
Upload a statement and get clean, categorised rows — every app's payouts separated, hundreds of small costs totalled, your year finally a number.
