FreshBooks accepts CSV files only, never a PDF, and has two separate CSV imports that easily get confused: Expenses import keeps only negative amounts (spending), while Bank Reconciliation's import brings in a full statement. This guide covers which one to use, the plan-tier requirement, the exact column formats, and the opening-balance gotcha that makes older transactions seem to vanish after import.
Last updated 2026-08-23
FreshBooks has two separate CSV imports that do different things, and picking the wrong one is the most common mistake. Import expenses from a file only brings in negative amounts (spending) — income gets silently dropped. If you want a full bank statement (deposits and withdrawals both), use Bank Reconciliation's CSV import instead, which requires a Plus, Premium, or Select plan (not available on Lite). Either way, FreshBooks needs a CSV, never a PDF, so convert first.
FreshBooks connects to banks automatically via Plaid or Yodlee for most users, but that connection only reaches back 30 to 365 days and doesn't cover every bank. When you need older history, a bank without a live connection, or you'd rather not link account credentials to a third-party service, the fallback is a manual CSV import. FreshBooks doesn't read a PDF for that, and the platform actually has two different CSV imports that easily get confused with each other.
FreshBooks' Expenses > Import Expenses from a File path only imports spending. Per FreshBooks' own documentation, if your CSV has both positive and negative amounts, only the negative ones (withdrawals, payments, debits) get imported — any income rows in the same file are silently skipped, not flagged as an error.
If you want a genuine bank statement, deposits and withdrawals both, use Bank Reconciliation's transaction import instead. It's a separate feature under Accounting, and it's the one that actually reflects a full statement rather than just your spending.
Bank Reconciliation isn't available on every FreshBooks plan. Per FreshBooks' own support documentation, it requires a trial, Plus, Premium, or Select plan — if you're on Lite, the feature isn't there at all. Worth checking before you build a CSV expecting to use it.
| Column layout | Sign convention | Best for |
|---|---|---|
| Date + Amount (1 column) | Positive = money in, negative = money out | Statements that already show a single signed amount column |
| Date + Amount Spent + Amount Earned (2 columns) | Both columns positive only | Statements with separate debit and credit columns |
Dates need to use a consistent format throughout the file and dashes or slashes between the numbers (01/17/2026 and 01-17-2026 both work; other separators don't). Rows must be in chronological order, and the file needs to be a clean single-sheet CSV — multiple tabs in one file will fail the import.
If any imported transactions are dated before your account's Opening Balance Start Date in FreshBooks, they won't show up for matching until you go back and reset that start date to cover the earlier transactions. This trips people up specifically when importing historical statements that predate when they first set up reconciliation — the import succeeds, but the older rows seem to vanish until the start date is adjusted.
A common next step is pasting the PDF text into a general-purpose AI chatbot and asking for a CSV back. It can work. It also comes with three problems that show up quickly once you're doing this every statement cycle:
This is the right question to ask, and it's the exact concern that makes pasting a statement into a general chat tool uncomfortable. The answer depends entirely on the converter's data-handling policy, not on whether "AI" is involved anywhere in the pipeline.
ClearlyLedger processes PDFs in memory and deletes the source file within seconds of conversion. Your statement is never stored, never shared, and never used to train AI models.
No. FreshBooks' import tools accept CSV files only. A PDF statement needs to be converted to CSV first.
You likely used the Expenses import instead of Bank Reconciliation's import. The Expenses path only keeps negative amounts (spending); if your CSV had both income and spending, only the spending rows were imported. Use Bank Reconciliation's CSV import instead for a full statement.
Bank Reconciliation, and its transaction import, requires a trial, Plus, Premium, or Select plan. It isn't available on the Lite plan.
Up to 500 transactions or 1,000 rows per CSV file, whichever limit is hit first, and the file must be under 5MB. Split a larger statement into multiple files if needed.
It depends on the tool's retention policy, not on whether it uses AI. Look for in-memory processing, immediate deletion of the source file, and an explicit statement that data isn't used to train models. ClearlyLedger does all three.
Ready to get your first statement into FreshBooks? Use ClearlyLedger's bank statement converter to get a clean, balance-verified CSV. Using QuickBooks, Wave, or Quicken instead? See the same conversion for QuickBooks, Wave, or Quicken.
Loading interactive converter… Try ClearlyLedger free