Import a Bank Statement into FreeAgent (CSV, OFX, QIF)
How to prepare and import a bank statement into FreeAgent: file formats, a clean CSV layout, UK dates, avoiding duplicates, and fixing failed uploads.
SheetStatement Team11 min read
On this page
- When to upload a statement instead of using a feed
- Which file format to use
- A clean CSV layout for FreeAgent
- Building the CSV from a PDF statement
- Uploading to FreeAgent
- After the upload: explaining transactions
- Avoiding duplicates
- Common upload errors and fixes
- A worked example: a contractor catching up
- Getting the opening balance right
- Foreign currency and savings accounts
- Business and personal accounts
- Get statements ready for FreeAgent
- FAQ
TL;DR FreeAgent lets you upload bank statement files to a bank account when a live feed isn't available or has gaps. It accepts common statement formats, including CSV, OFX and QIF. For CSV, keep it simple: one row per transaction, a UK-format date, a single signed amount (money in positive, money out negative) and a description, with no extra columns, totals or blank rows. Before uploading, check that the file covers only dates not already in FreeAgent, prove the statement balances, and upload one statement period at a time so you can check the balance in FreeAgent against the bank's closing balance after each upload.
FreeAgent is popular with UK freelancers, contractors and small limited companies, and for many users the bank feed does most of the work. But feeds aren't always enough. Maybe you've just signed up and need the months before the feed started. Maybe the feed dropped out for a few weeks. Maybe you have an account with a bank that doesn't offer a feed, or your accountant has asked you to bring a dormant account up to date from PDFs.
In each case, the answer is the same: get the transactions into a file FreeAgent accepts, and upload it. This guide covers which format to choose, how to build a clean CSV from a PDF statement, the mistakes that cause failed or messy imports, and how to check the result. FreeAgent's screens change over time, so we describe the steps in general terms and point you to FreeAgent's own help articles for exact menu names.
When to upload a statement instead of using a feed
A bank feed is usually the best option for ongoing transactions. Statement uploads are the right tool when:
- You're starting out and need transactions from before the feed's start date. Feeds often only bring in a limited amount of history.
- The feed had a gap, for example after a reconnection, and some days are missing.
- The bank doesn't offer a feed to FreeAgent, or the account is an unusual type such as a foreign-currency account or a small savings account.
- You're catching up on an old period from PDFs supplied by the bank. Our guide to catching up on bookkeeping covers that whole process.
The risk with mixing feeds and uploads is duplication. Before uploading anything, look at the account in FreeAgent and note the earliest and latest dates already there. Your file should only contain transactions outside that range, or to fill a specific gap.
Which file format to use
FreeAgent accepts several statement formats. The main ones:
OFX is a structured format designed for financial data. If your bank offers an OFX download for the period you need, it's often the least work, because dates and amounts are already in a defined structure. FreeAgent can also use the transaction IDs in OFX files to help spot duplicates in some cases.
QIF is an older format still offered by some banks. It works, but it's less common now and has quirks around date formats.
CSV is the most flexible. You can build it from any source, including PDF statements, which makes it the usual choice for catch-up work and for banks without a download.
If you're working from PDFs, you'll almost always end up with CSV. You can also convert a PDF to OFX if you prefer; see our guide to converting a bank statement PDF to OFX.
A clean CSV layout for FreeAgent
FreeAgent's help documentation describes a simple CSV layout for statement uploads. The safe version is three columns, in this order:
| Date | Amount | Description |
|---|---|---|
| 02/05/2026 | -45.00 | MOBILE PHONE DD |
| 05/05/2026 | 1800.00 | CLIENT LTD INV 0231 |
| 09/05/2026 | -12.99 | SOFTWARE SUBSCRIPTION |
| 14/05/2026 | -250.00 | TRANSFER TO SAVINGS |
The figures are illustrative.
Points that matter:
- Dates in DD/MM/YYYY. FreeAgent is UK-focused and expects UK dates. A US-format date will either be rejected or, worse, land in the wrong month.
- One signed amount. Money in positive, money out negative. No currency symbols, no thousands separators.
- A description that's useful when explaining transactions later. Keep the payee or reference.
- No extra rows. No titles, no totals, no "balance brought forward" line, no blank rows at the end.
- Check whether a header row is expected. FreeAgent's guidance on headers has been specific in the past; check the current help article and match it exactly. If an upload fails on the first row, a header row is a likely cause.
Save as plain CSV (comma separated). If Excel offers several CSV options, the standard "CSV (Comma delimited)" or "CSV UTF-8" are the usual choices. Open the saved file in a text editor once to confirm it looks the way you expect: dates as day/month/year, amounts without symbols, one line per transaction.
Building the CSV from a PDF statement
Step 1: convert the PDF to a table
Get every transaction onto one row with date, description, money out, money in and balance. You can copy and paste small statements, use Power Query on Windows Excel (see our Power Query guide), or use SheetStatement, which reads the PDF, produces a signed amount and checks the balances before export. The free plan includes 3 pages a month; Starter ($9), Pro ($19) and Business ($39) monthly plans cover more.
Step 2: fix the dates
If your Excel is set to a US locale, UK dates may have been misread. Sort the dates and make sure they sit inside the statement period. If not, rebuild them:
=DATE(RIGHT(A2,4), MID(A2,4,2), LEFT(A2,2))
Then format the column as dd/mm/yyyy before saving. See fixing bank statement dates in Excel for more cases.
Step 3: create the signed amount
If your statement has separate money out and money in columns:
=N(E2) - N(D2)
where D is money out and E is money in. Round to two decimals to avoid floating-point clutter:
=ROUND(N(E2) - N(D2), 2)
Step 4: prove the statement balances
Before uploading, check that opening balance plus all amounts equals closing balance:
=ROUND(OpeningBalance + SUM(Amounts) - ClosingBalance, 2)
If that isn't 0, don't upload yet. A missing or duplicated row in the file becomes a missing or duplicated transaction in FreeAgent, and finding it later is harder. The free balance checker is a quick way to confirm.
Step 5: strip it down
Copy just the Date, Amount and Description columns to a new sheet, in that order. Delete any rows that aren't transactions. Save as CSV.
Uploading to FreeAgent
The general flow is:
- Open the bank account in FreeAgent's banking area.
- Choose the option to upload a bank statement.
- Select your file and confirm the format if asked.
- Review the result.
For exact menu names, follow FreeAgent's current help article on uploading statements; they occasionally rename or move things.
Upload one statement period at a time. After each upload, compare the account balance FreeAgent shows for the end of that period with the closing balance on the bank statement. If they agree, move on to the next month. If they don't, you've found the problem while it's still small.
After the upload: explaining transactions
Uploaded transactions arrive unexplained, just like feed transactions. You then explain each one: a sale against an invoice, an expense with a category, a transfer to another account, money paid to or from a director, and so on.
Some tips for faster explaining:
- Match invoices first. Payments from clients often match an invoice you've already raised. Clearing those first reduces the list quickly.
- Use guesses and rules. FreeAgent can learn from your previous explanations and suggest categories. Being consistent helps it.
- Handle transfers carefully. A transfer from your current account to a savings account appears in both accounts. If both are in FreeAgent, explain it as a transfer so it isn't double-counted.
- Keep personal items separate. If you're a sole trader using one account for everything, mark personal items appropriately rather than leaving them unexplained.
If you have many rows to categorize before uploading, it can help to do a first pass in Excel with keyword rules; see Excel formulas to categorize transactions.
Avoiding duplicates
Duplicates are the most common mess after a statement upload. They happen when:
- the uploaded file overlaps dates the feed already brought in;
- the same file is uploaded twice;
- two statement periods overlap, for example a statement that runs 28 April to 27 May followed by one running 27 May to 26 June.
Prevention beats cleanup:
- Note the date range already in FreeAgent before uploading.
- Trim your file to only the dates you need.
- Keep a simple log of which files you've uploaded and when.
If duplicates do appear, FreeAgent lets you delete uploaded transactions or the statement upload itself. Check FreeAgent's help on removing uploaded statements. Then re-check the balance against the bank statement. Our guide to removing duplicate transactions in Excel can help you check a file for duplicates before it goes anywhere.
Common upload errors and fixes
The upload fails immediately. Usually a format problem. Check for a header row that shouldn't be there (or is missing), a title row, or blank rows at the end. Open the file in a text editor to see exactly what's in it.
Dates are rejected or land in the wrong month. The dates aren't in DD/MM/YYYY, or Excel wrote them in a different format when saving. Format the column explicitly as dd/mm/yyyy before saving, and check in a text editor.
Amounts are wrong or zero. Currency symbols, thousands separators or text values. Remove symbols and commas; make sure the cells are numbers.
Money in and out are reversed. Your sign convention is backwards. Money in should be positive.
Descriptions are cut off or contain odd characters. Special characters can cause trouble. Save as CSV UTF-8, or replace unusual characters. Commas inside descriptions are fine if Excel quotes the field, which it does automatically.
The balance in FreeAgent doesn't match the bank after upload. Either the file was incomplete, there's overlap with existing transactions, or the opening balance in FreeAgent was set differently. Check each in turn.
For a broader look at how file formats differ, see our comparison of QBO vs IIF vs CSV and our explainer on bank statement CSV formats.
A worked example: a contractor catching up
A contractor runs a small limited company and switched to FreeAgent in September. The feed brought in transactions from mid-August, but his company's year started in April, so FreeAgent is missing April to mid-August.
- Check the gap. In FreeAgent, the earliest transaction in the current account is 14 August.
- Collect statements. He downloads PDF statements for April through August.
- Convert. Each becomes a table. He fixes dates, creates signed amounts and checks each statement balances. One is out by the value of a single direct debit; a line at the bottom of a page was missed. He adds it back.
- Trim August. The August statement runs 1 to 31 August. He deletes rows from 14 August onwards because the feed already has them.
- Build the CSVs. Date, Amount, Description only, saved as CSV.
- Upload month by month. After each upload he checks the FreeAgent balance at month end against the statement. April to July match. For August, he compares the balance on 13 August to the statement's running balance on that date, and it matches too.
- Explain. He matches client payments to invoices, then works through expenses and transfers.
His accountant now has a complete year in FreeAgent, with every month reconciled to the bank.
Getting the opening balance right
Uploads only work out if the account's starting point is right. When you first set up a bank account in FreeAgent, you'll normally give it an opening balance as at your start date. If that figure is wrong, every month afterwards will be out by the same amount, even if every transaction is perfect.
The quick test: take the bank statement covering your FreeAgent start date and find the balance at the end of the day before. That's the number FreeAgent should start from. If FreeAgent's balance is out by a constant amount every month, look here first rather than hunting for a missing transaction. A difference that grows or changes from month to month points to missing or duplicated transactions instead; a constant one points to the opening balance. Our guide to opening balance mismatches works through both patterns.
Foreign currency and savings accounts
Accounts in another currency usually need to be set up as their own bank account in FreeAgent with the right currency, and the statement uploaded to that account in its own currency. Don't convert the amounts to pounds yourself before uploading; let the software handle the conversion so the account balance still matches the bank.
Savings accounts are easy to forget. They often have only a handful of transactions a year, mostly transfers and interest, but leaving them out means transfers from your current account have nowhere to go. A quarterly or annual upload from the statements is usually enough.
Business and personal accounts
If you're a sole trader, you might keep business and personal spending in one account. FreeAgent can handle that, but it means more explaining. Some people find it easier to open a separate account for business and keep it tidy from that point. For the period before, upload everything and mark personal items clearly. Our guide to categorizing business expenses has a starter category list.
Get statements ready for FreeAgent
Upload a bank statement PDF to SheetStatement, check the rows and the balance check, and download a CSV ready to trim to FreeAgent's layout. The free plan includes 3 pages a month, enough to test it on a real statement.
FAQ
What file formats does FreeAgent accept for statements?
FreeAgent accepts common statement formats, including CSV, OFX and QIF. Check FreeAgent's current help article for the full list and any format details.
What should a FreeAgent CSV look like?
Keep it to date, amount and description, with dates in DD/MM/YYYY, money in positive and money out negative, and no extra rows such as titles or totals. Match FreeAgent's current guidance on whether to include a header row.
Why did my FreeAgent upload fail?
The most common causes are an unexpected header or title row, blank rows, dates in the wrong format, and amounts with currency symbols or commas. Open the file in a text editor to see exactly what it contains.
Can I upload a PDF statement directly?
Upload a structured file such as CSV or OFX. Convert PDF statements first, then upload the result.
How do I avoid duplicate transactions?
Check which dates are already in FreeAgent, trim your file to dates outside that range, and keep a log of uploaded files. Upload one period at a time and check the balance after each.
Should I use the feed or uploads?
Use the feed for ongoing transactions where it's available. Use statement uploads to fill gaps, add history before the feed started, or cover accounts without a feed.
Is it safe to upload statements to a converter?
See the security page for how SheetStatement processes and stores files, and review any service's policy before uploading financial documents.
How much does SheetStatement cost?
The free plan includes 3 pages a month. Starter is $9 a month, Pro is $19 and Business is $39.