Import a bank statement PDF into FreshBooks: CSV layout, start dates and tie-out

You have bank or card statements as PDFs and the books are in FreshBooks. Maybe the bank connection doesn't reach back far enough, or the account was never connected. This guide covers what FreshBooks can take, how to shape the file, and how to check every month before it goes in.

Can FreshBooks import a PDF statement directly?

Not according to its help pages. The file imports FreshBooks describes are CSV files. Its expense import page says that if your bank only lets you download transactions as PDFs, "you'll need to convert the PDF into a CSV manually first" (FreshBooks: import expenses from a file). The bank reconciliation import also takes a CSV (FreshBooks: manual transactions in bank reconciliation). We didn't find a FreshBooks page that lists OFX, QFX or QBO as an import format.

Two different imports: pick the right one

  • Bank reconciliation import (Accounting section): brings in money in and money out for one bank or card account, which you then match and reconcile. FreshBooks says bank reconciliation is available on trials and on the Plus, Premium and Select plans (FreshBooks). If you're importing statements to reconcile, use this one.
  • Expense import (Expenses section): for expenses only. FreshBooks says only negative amounts are imported when a file mixes positive and negative amounts, and that all expenses are imported even if they are duplicates (FreshBooks). Deposits from a statement don't belong here.

Shape a CSV that FreshBooks can read

For the bank reconciliation import, FreshBooks gives these rules (FreshBooks):

  • Required headers: Date and Amount (one column), or Date, Amount Spent and Amount Earned (two columns). Optional: Description and Category.
  • Signs: with one Amount column, positive is money in and negative is money out. With two columns, use positive numbers only in both. Amount columns can only contain numbers, with no letters or special characters, so remove currency symbols.
  • Dates: one date format for the whole file, written with dashes or slashes (FreshBooks' examples are 01/17/2020 and 01-17-2020), with rows in chronological order. You review or specify the date format during import.
  • Category: use only Operating Expense parent categories. A category that doesn't exist yet sends those lines to Uncategorized Expenses.
  • Limits: no more than 500 transactions, 1,000 rows or 5 MB per file, and one sheet per CSV. Empty cells are a listed error. Split long periods into one statement-month per file.
  • One detail is inconsistent: the headers section calls Description and Category optional, but the error list on the same page says Amount, Category, Date and Description must be in the first row. If an import fails on headers, include all four.
  • FreshBooks doesn't say how it treats extra columns such as a running balance. The safe choice is to delete them first.

Starting from a PDF, the extraction steps are in how to convert a bank statement PDF to CSV.

1. Tie out each month before you import

A clean import doesn't show that every transaction on the statement made it into the file. Check each statement-month first:

  1. Opening balance + deposits − withdrawals = closing balance, using the figures printed on the statement, to the cent.
  2. Compare your totals with the statement's summary box (total deposits, total withdrawals) so you know which side is short if it misses.
  3. Chain the months: each closing balance equals the next statement's opening balance.
  4. Spot-check the first and last days of the period and the largest few items against the PDF.

The full method, with a worked example, is in check a bank statement PDF is complete before you import it. Our free tie-out checker runs in your browser and shows the row where a CSV stops balancing.

2. Set the account up and pick the start date

  • If the account isn't connected (or your bank isn't supported), add it under Accounting → Add Bank Account → Create an Account. Bank name, account name and account type (Bank Account or Credit Card) can't be changed once saved, and a manual bank account can't be deleted (FreshBooks: set up bank reconciliation).
  • For the Reconciliation Start Date, FreshBooks recommends the first day of a bank statement or the start of a card statement period. The opening balance is the statement's opening or balance-forward figure; for a card it's the Previous Statement Balance (FreshBooks). Using the first statement you're importing keeps the tie-out simple.
  • Already set a later start date? Imported lines dated before it don't show up for matching until you reset it: More Actions → Reset Opening Balance, pick the earlier date and enter the balance as of that date (FreshBooks; FreshBooks). Moving the date earlier unmatches nothing, FreshBooks says; moving it later unmatches transactions between the two dates.

3. How far back the bank connection reaches

FreshBooks' pages give different numbers: up to 30 to 365 days of activity on its bank connections page (FreshBooks: import transactions from my bank account), up to 90 days on the reconciliation setup page (FreshBooks), and 90 days to 2 years on its Plaid page, where you choose how far back to import (FreshBooks: bank connection with Plaid). Plaid covers Canada and parts of Europe; Yodlee covers the United States and other countries (FreshBooks). Either way, months before the connection's first transaction have to come from your statements. FreshBooks says missing transactions can be added through CSV imports at any time (FreshBooks).

4. Avoid duplicates

  • FreshBooks asks that every transaction in the CSV be unique (FreshBooks). Its pages don't say that a CSV import skips lines a bank connection already brought in, so don't rely on that: import only the months before the connection's first transaction, and end the last file the day before it.
  • Imported lines are labeled Imported via CSV in the description, so you can tell them apart from connected and manual lines (FreshBooks).
  • If something comes in twice, delete it under Unreconciled Bank Transactions → Bulk Actions → Delete. That also deletes the matching FreshBooks entry, and deleted lines can be undeleted from the deleted link (FreshBooks).
  • In Expenses, FreshBooks flags expenses whose date, amount and description match as potential duplicates (FreshBooks: manage expenses). Disconnecting and reconnecting a bank can import duplicate expenses again (FreshBooks).

5. Import the file

  1. Go to Accounting and select the # left to match, Add Transactions or Upload CSV link next to the account.
  2. If prompted about Likely Matches, choose Skip or Confirm and Continue.
  3. Under Unreconciled Bank Transactions, select Add Bank Transaction → Import from File and choose the CSV.
  4. Match each field to your column, choose 1 Column or 2 Columns for the amount format, check the date format, then Import Transactions.
  5. FreshBooks says an import can take up to 15 minutes and you must stay logged in or it's interrupted (FreshBooks).

Import months oldest first, one month per file, and check the account's Bank Account Balance against the statement's closing balance after each one.

6. Reconcile each month to its statement

  • FreshBooks shows two balances: the Bank Account Balance (opening balance plus all imported transactions) and the FreshBooks Balance (opening balance plus matched transactions and journal entries to the account) (FreshBooks). After importing a month, the Bank Account Balance should equal that statement's closing balance. If it doesn't, a line is missing, doubled or has the wrong sign.
  • Match each line to a FreshBooks entry, or use Mark As for transfers, owner's equity and expense refunds. Money-in lines don't create income entries on import, so you create or match those yourself (FreshBooks: reconcile simple transactions).
  • Mark a credit card payment as a transfer in both accounts if both are in bank reconciliation (FreshBooks).

Using LedgerReady files in FreshBooks

  • Plain CSV: it has five columns: Date (YYYY-MM-DD), Description, Amount (one signed column), Running Balance and Category. The headers Date, Description and Amount match FreshBooks' names, the signed Amount fits the 1 Column format (money in positive, money out negative), and the dashed year-first dates fit FreshBooks' dash-or-slash rule. Before importing, delete Running Balance. Our Category values are suggestions, not your FreshBooks categories, so delete that column too or replace each value with one of your Operating Expense parent categories (if FreshBooks then wants a Category header, keep it with your own categories). Rows follow the statement's order, so check they run oldest first. We haven't tested this file in FreshBooks.
  • Xero CSV: its Description column holds a category and its Reference column is empty, and empty cells are a FreshBooks import error. Use the plain CSV instead.
  • QBO file: FreshBooks doesn't list .qbo as an import format, so use the plain CSV.
  • FreshBooks' pages don't say whether a card account's CSV uses the same signs as a bank account's. For a card month, import one file first and check that purchases come in as money out and payments as money in. See credit card statement PDF to CSV for the sign rules.

Other formats compared: QBO vs CSV vs OFX. Using Wave or Zoho Books instead? See Wave or Zoho Books.

Where LedgerReady fits

If you'd rather not convert and check each month yourself, LedgerReady turns digital statement PDFs into a QBO file, a Xero CSV, a plain CSV and a tie-out sheet showing every month matches its opening and closing balance. It costs $15 per statement-month, and we aim to deliver within 12 hours. Tie-out guarantee: if the output doesn't reconcile to the statement's opening and closing balances and we can't fix it, you don't pay for that statement.

Skip the manual work

We turn statement PDFs into QBO, Xero and CSV files plus a tie-out sheet. $15 per statement-month, $149 for a 12-month catch-up. Prefer to check it yourself? Our tie-out checker runs in your browser. See how pros do catch-up.

Try your first statement free

Bank menus change; labels here were accurate to our knowledge in Oct 2026, so check your bank's help pages if something differs.