SimpleBankConvertSimpleBankConvert home

Import Bank Statement into FreshBooks

By SimpleBankConvertPublished October 17, 2026

To import a bank statement into FreshBooks, first try a bank connection, which pulls recent activity on its own. For older months or a bank that will not connect, turn the statement into a CSV file and upload it, either as expenses or into a manual bank account. FreshBooks takes CSV, so a PDF statement must be converted first.

FreshBooks bank connections versus statement files

A FreshBooks bank connection links your bank through Plaid or Yodlee and sends transactions across on a schedule. A statement file is something you upload yourself. FreshBooks' help says a connection reaches back between 30 and 365 days, depending on the bank, so anything older needs a file.

FreshBooks' article on importing transactions from your bank account sets out the rest of the picture. Which aggregator you use depends on the country in your business settings. Some banks need you to refresh the connection by hand or repeat a security check now and then. Crypto, investment, line of credit and loan accounts are not supported at all.

That gives three situations where a statement file is the answer:

  • History older than the connection reaches. Starting FreshBooks in October with books that should begin in January is the usual case.
  • A bank that will not connect. Not every bank is reachable through the aggregator, and some connections keep asking to be re-verified.
  • Gaps. A connection that broke for two weeks leaves lines missing, and the same article says missing transactions can be added by importing a CSV file at any time.

If none of those apply, let the connection do the work and skip the rest of this post.

Where connected lines show up

The same article notes that deposits from a connection appear only in the Bank Reconciliation section, while expenses and bill payments appear in both Bank Reconciliation and Expenses. Keep that in mind when you go looking for a deposit and cannot find it in the expense list. It is not missing, it is just in the other screen.

Which FreshBooks import should take your bank statement?

FreshBooks offers two file routes for statement lines. The expense import, under Expenses, loads spending as expense records. A manual bank account, created in the Accounting section, takes a CSV of the account's lines for bank reconciliation. Use the expense import for spending only, and the manual account when you want deposits too.

The expense import

The expense import suits a freelancer who wants every card purchase or bank payment recorded as an expense with a category. It ignores income by design, as the next sections explain. It is the route FreshBooks points to for transactions older than a connection can reach.

A manual bank account

FreshBooks' guide to setting up bank reconciliation describes manual accounts: from Accounting, choose Add Bank Account, then Create an Account, and enter the bank name, account name, type, a reconciliation start date and an opening balance. After that, transactions can be imported with a CSV file or added one at a time.

Be deliberate before you create one. The same guide says a manual bank account cannot be deleted once saved, and its name, bank name and type cannot be changed. Pick a start date that matches the first statement you plan to load, and take the opening balance from that statement.

Choosing between them

Your goal Route
Record spending from a card or bank as expenses Expense import
Reconcile an account that will not connect, deposits included Manual bank account and CSV
Fill a short gap in a working connection CSV, as FreshBooks suggests for missing lines
Load sales and invoices from last year Neither; bank lines are not invoices

The five headers of a FreshBooks expense CSV

A FreshBooks expense CSV needs five headers in its first row: Amount, Category, Date, Description and Merchant. FreshBooks' article on importing expenses from a file says that if the headers are missing, the first row is skipped. The file must be a CSV in a single currency.

Header What it holds Example value
Amount The expense amount 86.40
Category An expense category, or a subcategory Office Supplies
Date The transaction date 2026-03-14
Description Free text about the purchase Printer toner, March
Merchant Who you paid Pinecrest Office Supply

The values are examples. A few rules sit behind each column:

  • Category should name one of FreshBooks' operating expense categories or subcategories. A name it does not recognise sends the line to Uncategorized Expenses rather than failing.
  • Date can use month-day-year, day-month-year or year-month-day, with dashes or slashes, but the whole file must use one order. You tell FreshBooks which order on the import screen.
  • Amount must use one number format throughout, and one sign throughout. The next section explains why that rule matters.

The import steps are short: go to Expenses, open More Actions, choose Import Expenses from a File, pick the CSV, match each field to a column, set the currency, currency format and date format, and select Import Expenses.

Why did FreshBooks import only some statement rows?

FreshBooks imports only some statement rows when the Amount column mixes positive and negative numbers. Its help says that in a mixed file only the negative amounts come in. A bank export that shows payments as negative and deposits as positive will therefore load the payments and silently drop the deposits.

For an expense import, that behaviour is often what you want, because deposits are not expenses. It becomes a problem when the bank writes payments as positive and refunds as negative. Then FreshBooks keeps the refunds and drops the spending, which is the reverse of what you meant. Check which sign your spending carries before you upload, and make every amount in the file carry the same one.

Other reasons a file fails or comes up short

The expense article lists more limits worth checking before you blame the data:

  • File size. A file over 5 MB fails. Split a long year into a few smaller CSVs.
  • Several sheet tabs. A workbook with more than one tab is not supported. Save each tab as its own CSV.
  • Missing header row. Without the five headers, the first transaction is treated as headers and skipped.
  • Refunds and credits. These can come in as expenses by mistake. FreshBooks suggests deleting them afterwards so reports stay right.

Count the rows in your file before importing, and count the new expenses afterwards. If the numbers differ, the sign rule is the first suspect.

Turning a PDF bank statement into a FreshBooks CSV

Turning a PDF bank statement into a FreshBooks CSV means pulling out each spending line, keeping only the outgoing payments, giving them one sign, and adding a merchant and category. FreshBooks reads CSV, not PDF, so this step has to happen first, whether by hand, in a spreadsheet, or with a converter.

A worked example

Here are five lines from a made-up March statement for a freelance designer:

Date Description Withdrawals Deposits
03/02 CLIENT PMT BRIGHTWATER 1,250.00
03/04 PINECREST OFFICE SUPPLY 86.40
03/09 CLOUDNEST HOSTING 24.00
03/15 PINECREST REFUND 12.00
03/21 METRO TRANSIT CARD 40.00

The client payment and the refund are money in, so they stay out of the expense file. The refund should instead be netted against the original expense, or recorded separately, once the import is done. The three payments become:

Amount,Category,Date,Description,Merchant
86.40,Office Supplies,2026-03-04,Printer toner,Pinecrest Office Supply
24.00,Software,2026-03-09,Website hosting,Cloudnest
40.00,Travel,2026-03-21,Transit card top-up,Metro Transit

Every amount is positive, so FreshBooks treats them the same way. The year was added from the statement period, because statements often print month and day only. The category names are examples, and yours should match the categories in your own FreshBooks account.

Doing it at volume

For one statement, a spreadsheet works. For a year of them, extracting lines by hand is slow and error-prone. SimpleBankConvert is being built to turn a PDF statement into a CSV with one consistent date format and a single signed amount column. It is designed for QuickBooks and Xero, so for FreshBooks you would rename the headers, drop the deposit rows and add Category and Merchant.

If you are weighing FreshBooks against another small-business tool, the import rules differ a lot. Importing a bank statement into Zoho Books and importing a bank statement into Sage 50 show how two other programs handle the same job.

Duplicate FreshBooks expenses after a statement import

Duplicate FreshBooks expenses appear when a statement import covers dates that a bank connection, or an earlier file, already brought in. FreshBooks' expense help says all rows are imported, duplicates and card-payment transfers included. It does not stop you, so the file has to be trimmed before you upload it.

Setting a boundary

Before importing history, find the oldest transaction your bank connection delivered. End the CSV the day before it. If you import a gap in a live connection, start the file the day after the last connected line and end it the day before the next one. Writing those two dates down takes a minute and saves an afternoon of deleting.

Card payments are not expenses

A payment from your checking account to your credit card is a transfer, not spending. If you import both the checking statement and the card statement as expenses, the card payment shows up once as a checking expense and the purchases show up again from the card. Leave card payments out of the checking file, and record the purchases from the card statement only.

Cleaning up after a mistake

If duplicates are already in, sort the expense list by date and merchant and delete the extra copies, checking each pair against the statement. Real repeats exist, such as two identical transit top-ups on one day, so delete only lines that appear once on the statement.

Problems like this are not unique to FreshBooks. Moving bank data into any accounting program by file hits the same boundary and format issues, and the error messages can be just as unhelpful elsewhere. Readers coming from QuickBooks Desktop will recognise the pattern from IIF import errors in QuickBooks Desktop, where a file that looks right is still refused for one small reason.

All posts in Quicken and other software