FreshBooks does not accept PDF bank statements. If you have a PDF from your bank and need that transaction data inside FreshBooks, you must first convert the PDF into a CSV file, then upload it through one of two import features. There is no drag-and-drop PDF option, no built-in PDF reader, and no workaround — CSV is the required format.
The conversion step is where most of the work lives, and the specific CSV columns you need depend on which FreshBooks import path you choose:
- Bank Reconciliation requires Date, Amount, and Description columns. This path is designed for matching imported transactions against records you have already entered in FreshBooks — useful for verifying that your books reflect what actually happened at the bank.
- Expense Import requires Date, Amount, Category, Description, and Merchant columns. This path creates new expense transactions directly, which is the right choice when the bank data has not been recorded in FreshBooks at all.
Why CSV import matters when FreshBooks already supports bank feeds. FreshBooks connects to financial institutions through aggregation providers like Plaid, Salt Edge, and Yodlee, and for many users the automatic feed works well enough. But these connections have practical limits that surface constantly in real bookkeeping workflows. Feeds disconnect without warning and require re-authentication. Certain banks, credit unions, and account types are not supported at all. Historical transactions from before the connection was established are never backfilled. And bookkeepers or accountants who receive PDF statements from clients — often from institutions the bookkeeper has no login access to — cannot use a live feed for that data.
CSV import is the reliable fallback for every one of these situations. It is also the only option for importing bank statements into FreshBooks when you are working with older statements, closed accounts, or foreign bank PDFs that aggregation providers do not cover.
In a 2025 survey of over 1,000 small business owners, bookkeeping was the number-one administrative task owners wanted to delegate, with 30% saying it would be helpful to put someone else in charge. Retyping transactions line by line from a PDF is exactly the kind of low-value work that drives that sentiment. A reliable PDF-to-CSV-to-FreshBooks bank statement import workflow cuts the time and mistakes, whether you are the business owner doing it yourself or the accountant handling it for a dozen clients.
Expense Import vs. Bank Reconciliation: Choosing the Right Path
FreshBooks gives you two distinct paths for importing CSV bank data, and they serve fundamentally different purposes. Picking the wrong one means reformatting your file or, worse, creating duplicate records you'll need to clean up manually.
Here's the decision in one sentence: if you're verifying transactions already in FreshBooks, use Bank Reconciliation; if you're adding new expenses that don't exist in FreshBooks yet, use Expense Import.
Bank Reconciliation Import
This path is for matching. You already have transactions in FreshBooks — from manual entry, invoiced income, recorded expenses, or a connected bank feed — and you need to verify those records against your actual bank statement. When you import a CSV through Bank Reconciliation, FreshBooks attempts to match each row against existing entries and flags discrepancies.
Key characteristics:
- Handles both income and expenses in a single file (positive amounts for deposits, negative for withdrawals)
- 500-transaction limit per file — statements exceeding this must be split into separate CSVs
- Three required columns only: Date, Amount, Description
Expense Import
This path is for recording. The transactions on your bank statement don't exist in FreshBooks yet, and you need to create them as new expense entries. This is common when a client hands you three months of statements and nothing has been entered.
Key characteristics:
- Expenses only — only negative amounts import correctly; income transactions are ignored or rejected
- Requires five columns: Date, Amount, Category, Description, Merchant
- 5 MB file size limit
- Not suitable if your statement includes income you also need to record
Which Path Fits Your Situation
| Scenario | Use This Path |
|---|---|
| You've been entering transactions manually and need to check them against the bank | Bank Reconciliation |
| You have a stack of statements with expenses never recorded in FreshBooks | Expense Import |
| Your statement contains both income and expenses | Bank Reconciliation (only path that handles both) |
| You want to bulk-add vendor payments and categorize them on import | Expense Import (supports Category and Merchant fields) |
| Your statement has more than 500 transactions | Bank Reconciliation (split into multiple files) |
CSV Column Requirements by Path
Your CSV must match the exact column structure for your chosen path. Missing or extra columns will cause the import to fail.
| Column | Bank Reconciliation | Expense Import |
|---|---|---|
| Date | Required | Required |
| Amount | Required | Required |
| Description | Required | Required |
| Category | Not used | Required |
| Merchant | Not used | Required |
Shared Formatting Rules
Regardless of which FreshBooks CSV import format you use, these formatting requirements apply to both paths:
- Encoding: UTF-8 is mandatory. Files saved in other encodings (ANSI, Latin-1) will produce garbled characters or silent data corruption.
- Header row: Your CSV must include a header row with column names. FreshBooks uses it to map fields.
- Amount fields: No currency symbols, no thousand separators. Write 1250.00, not $1,250.00.
- Date format: Use one consistent format throughout the entire file. Accepted formats: MM/DD/YYYY, DD/MM/YYYY, or YYYY/MM/DD. Both slashes and dashes work (MM-DD-YYYY is fine).
Getting these details right before you upload prevents the most common FreshBooks bank reconciliation CSV import errors.
Converting a PDF Bank Statement to FreshBooks-Ready CSV
Bank statements are designed for humans to read, not for software to ingest. Transaction data sits inside a visual layout with columns, page breaks, multi-line descriptions, and bank-specific formatting quirks. Converting that into a clean, structured CSV that FreshBooks accepts requires more than copying and pasting text out of a PDF. The method you choose depends on how many statements you process and how much manual cleanup you can tolerate.
Method 1: Manual Transcription
Open the PDF and type each transaction into a spreadsheet row by row. This works if you have a single statement with fewer than ten transactions and no immediate need to repeat the process.
The problems surface quickly. Transposing a digit in an amount or misreading a date creates reconciliation mismatches that are difficult to trace later. For anyone processing statements monthly or handling multiple clients, manual entry is not a realistic option.
Method 2: Generic PDF-to-CSV Converters
These tools detect table structures in PDFs and attempt to export them as spreadsheet data. In theory, you upload a PDF and get a CSV back.
In practice, bank statements break these tools regularly. Banks format statements differently: some merge debit and credit into a single column with positive and negative signs, others use separate columns. Descriptions wrap across multiple lines. Page headers repeat mid-table. Running balances appear inline with transaction rows.
The result is a CSV that almost always needs manual cleanup:
- Split rows where a multi-line description created two or three CSV rows for one transaction
- Misaligned columns where the converter guessed the table structure incorrectly
- Date and amount formatting that does not match what FreshBooks expects
- Extra rows from page headers, footers, or summary lines mixed into the transaction data
For a one-off statement from a bank whose format the converter handles well, this approach can save time. For statements from multiple banks or recurring monthly imports, you spend nearly as much time fixing the output as you would have spent on manual entry.
Method 3: AI-Powered Financial Document Extraction
Tools built specifically for financial documents approach the problem differently. Rather than detecting generic table structures, they understand what bank statement data looks like: transaction dates, descriptions, amounts, and running balances. They handle the layout variations across different banks without requiring you to configure parsing rules for each format.
With Invoice Data Extraction, you upload your PDF bank statements, prompt the AI to extract transaction data from PDF bank statements into the columns FreshBooks requires, and download the structured CSV output. The platform handles multi-page statements (up to 5,000 pages per PDF), processes files from different banks in the same batch, and lets you specify the exact column structure in your prompt. For FreshBooks expense imports, that means requesting Date, Amount, Category, Description, and Merchant columns. For bank reconciliation CSV uploads, you would specify Date, Description, and Amount.
For accountants and bookkeepers managing multiple clients, the prompt library adds real efficiency. Save an extraction prompt configured for FreshBooks expense imports, and reuse it each month across every client's bank statements without redefining the output structure. Combined with batch processing (up to 6,000 files per job), this turns a repetitive monthly task into an upload-and-download workflow. If you also work with receipt or invoice data heading into FreshBooks, invoice scanning tools for FreshBooks cover that side of the document pipeline.
Preparing the CSV for FreshBooks
Before uploading, verify your CSV meets the formatting rules from the previous section: correct columns for your chosen import path, consistent date format, no currency symbols, and UTF-8 encoding. If exporting from Excel, use "Save As" and select "CSV UTF-8" as the file type. In Google Sheets, downloading as CSV produces UTF-8 by default.
If your extraction tool output columns in a different order than FreshBooks expects, reorder or rename the headers in a spreadsheet application before saving.
Uploading and Importing Your CSV into FreshBooks
With a properly formatted CSV file ready, the final step is getting that data into FreshBooks. Below are the specific steps for each import path.
Importing via Bank Reconciliation
This path is ideal when you want FreshBooks to match imported transactions against invoices and existing records, just as it would with a live bank feed.
- Go to Accounting > Bank Reconciliation in the left-hand navigation menu.
- Select the bank account you want to reconcile. If the account is not yet listed, you may need to add it manually first.
- Choose the option to upload a bank statement. FreshBooks will prompt you to select a CSV file from your computer.
- Map your columns. FreshBooks displays a column-mapping screen where you confirm that your CSV's Date, Amount, and Description fields align with the expected format. If your column headers match FreshBooks' defaults, this step may auto-populate. Double-check each mapping before proceeding.
- Review the imported transactions. After upload, FreshBooks displays your imported entries alongside existing records. The system attempts to match transactions automatically. Go through each match: approve the ones that are correct, and flag any discrepancies for manual review.
Once confirmed, FreshBooks treats these transactions as verified bank data for reconciliation purposes.
Importing via Expense Import
Use this path when you want transactions recorded as individual expenses rather than reconciled against bank records.
- Navigate to the Expenses section from the main menu.
- Click the Import button (typically found near the top of the expenses list).
- Upload your CSV file. FreshBooks opens a mapping interface similar to the reconciliation path, but with additional fields.
- Map each column to the corresponding FreshBooks field: Date, Amount, Category, Description, and Merchant. Not every field is mandatory, but populating Category and Merchant during import saves cleanup work later.
- Review the import preview. FreshBooks shows a summary of the transactions it will create. Scan for obvious errors such as misaligned columns, incorrect date parsing, or amounts that appear in the wrong sign (negative vs. positive).
- Confirm the import. The transactions now appear as new expenses in your FreshBooks account, ready for categorization and reporting.
CSV Import as a Bank Feed Alternative
CSV import works for any bank, regardless of whether FreshBooks has a direct feed partnership with that institution. When feeds disconnect, accounts are unsupported, or you need to import historical statements, this method keeps your records current. FreshBooks also supports importing invoices into FreshBooks through similar upload workflows.
One consideration: if you use CSV import for a date range that overlaps with an active bank feed on the same account, you may end up with duplicate transactions in FreshBooks.
Handling Large Statements, Duplicates, and Import Errors
FreshBooks' import tools have specific limits and formatting expectations that surface during the upload process. Knowing these edge cases before you begin saves hours of manual cleanup.
Statements Exceeding 500 Transactions
The Bank Reconciliation import path enforces a 500-transaction limit per CSV file. Quarterly statements, annual exports, and high-volume business accounts regularly exceed this threshold.
The fix is straightforward: split your CSV into multiple files of 500 transactions or fewer. Keep transactions in chronological order within each file so FreshBooks processes dates correctly. Import each file one at a time through the same Bank Reconciliation workflow.
After uploading all files, cross-check the total transaction count in FreshBooks against your original statement. Missing transactions from a split that did not upload cleanly will not trigger a warning.
Duplicate Transactions from Overlapping Bank Feeds
If you have an active bank feed connected in FreshBooks and you import a CSV covering the same date range, you will get duplicate transactions. FreshBooks' reconciliation matching flags potential duplicates, but it does not block them automatically.
Before importing, determine the exact date range your bank feed has already covered. Then import only the period the feed missed. This is the cleanest approach.
If duplicates have already landed in FreshBooks, review and delete them manually before completing reconciliation. Leaving duplicates in place will double-count expenses and income in every report that touches those dates.
Common CSV Formatting Errors
These four formatting problems cause the majority of failed or corrupted imports:
Mixed date formats. Some rows use MM/DD/YYYY while others use DD/MM/YYYY, often because the statement spans a period where day and month values are ambiguous (e.g., 03/04/2026 could be March 4 or April 3). FreshBooks may silently misparse these dates rather than rejecting the file. Standardize every row to one date format before uploading.
Currency symbols and thousands separators in amount fields. Characters like $, €, £, or commas used as thousands separators (1,250.00) cause FreshBooks to reject the file outright or import incorrect values. Strip all symbols and separators from amount columns, leaving only digits, decimal points, and minus signs for negative amounts.
Encoding problems. Accented characters, non-Latin scripts, or special symbols in payee names appear as garbled text if the CSV is not saved with UTF-8 encoding. When exporting from Excel or Google Sheets, explicitly select UTF-8 CSV as the file format rather than the default CSV option.
Wrong column order or missing headers. FreshBooks expects specific column names during the mapping step. If headers are missing or columns are in an unexpected order, fields map to the wrong places. Verify that your header row matches what FreshBooks expects, and pay close attention to the column mapping preview before confirming the import.
If a bad import has already gone through, the cleanup path depends on which method you used. Expense imports can be undone by deleting the imported records individually from the Expenses list — there is no bulk undo for a CSV import. For Bank Reconciliation imports, incorrectly matched transactions can be unmatched and re-reviewed without deleting the underlying records.
Category Mapping for Expense Import
Bank statements do not contain FreshBooks expense categories. If you use the Expense Import path, your CSV must include a Category column with values that match FreshBooks' built-in expense categories exactly. Misspelled or non-matching category names cause the import to fail for those rows.
You can find the full list of built-in categories in FreshBooks under Expenses > Categories, or by starting a manual expense entry and viewing the Category dropdown. From there, you have two options for populating the column. The first is manual: open the CSV in a spreadsheet, add a Category column, and classify each transaction by its description. The second is to use extraction tool features that automatically classify transactions based on merchant names and descriptions.
For recurring transaction types like rent, utilities, insurance, and subscriptions, build a category lookup table that you reuse each month. Map common merchant names to their FreshBooks category once, then apply the same mapping to every future import. This eliminates reclassification work and keeps your expense reporting consistent across periods.
Scaling the Workflow
For bookkeepers processing statements across multiple client accounts, or teams importing statements on a regular schedule, the manual CSV workflow becomes a bottleneck. If you are handling volume regularly and want to move beyond spreadsheet-based preparation, consider automating bank statement extraction via API to build a pipeline that converts, formats, and delivers FreshBooks-ready CSV files programmatically.
About the author
David Harding
Founder, Invoice Data Extraction
David Harding is the founder of Invoice Data Extraction and a software developer with experience building finance-related systems. He oversees the product and the site's editorial process, with a focus on practical invoice workflows, document automation, and software-specific processing guidance.
Profile
View author pageEditorial process
This page is reviewed as part of Invoice Data Extraction's editorial process.
If this page discusses tax, legal, or regulatory requirements, treat it as general information only and confirm current requirements with official guidance before acting. The updated date shown above is the latest editorial review date for this page.
Related Articles
Explore adjacent guides and reference articles on this topic.
How to Import Bank Statements into TallyPrime (All Formats)
Import bank statements into TallyPrime via Connected Banking for supported banks, or convert PDFs to CSV/Excel first. Covers voucher creation and reconciliation.
Best Invoice Scanning Software for FreshBooks (2026)
Compare FreshBooks invoice scanning options, from native capture and direct-sync apps to export-first OCR for line items and CSV/API workflows.
Import Invoices into FreshBooks: What Actually Works
FreshBooks does not offer a standard self-serve invoice CSV import. Learn when to use migration services, the API, or AP-side workarounds instead.
Extract invoice data to Excel with natural language prompts
Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.