FreshBooks CSV: expense import or bank reconciliation?
Updated · 4 min read
A FreshBooks expense-file import is not the same operation as importing bank reconciliation transactions. If you need both receipts and payments from a statement, use the reconciliation route rather than expecting the Expenses importer to create income. Choose the destination before preparing another CSV.
This guide follows FreshBooks’ current bank-reconciliation and expense documentation. Prefer the bank’s suitable native file. With only PDF evidence, LocalExtract can prepare a local CSV; its three fields still require mapping to the chosen FreshBooks workflow.
The desktop apps export date, description, and amount as CSV. Open CSV in Excel to save an XLSX workbook. Statement support varies: verify the result against your own PDF.
Choose the destination, not just the file extension
FreshBooks’ expense-import instructions concern expense records. The manual bank-transaction instructions explicitly direct users needing reconciliation to a different CSV route. Repeating an expense upload is not a way to make incoming bank movements appear.
For reconciliation, start in Accounting, open the target bank account’s transactions, then use Add Bank Transaction → Import from File under Unreconciled Bank Transactions. A manually added bank account must first be set up. The documentation limits Bank Reconciliation to trial, Plus, Premium and Select access; confirm the available feature without treating an absent control as a damaged CSV.
Prepare the bank CSV for that route
FreshBooks documents a signed Amount column, with incoming amounts positive and outgoing amounts negative, or separate Amount Spent / Amount Earned columns containing positive numbers. Select the matching amount format in the importer. Use one consistent date format and chronological order.
The same official page calls Description and Category optional in its main instructions but includes them among required headers in its error FAQ. To avoid relying on that inconsistent minimum, preserve both columns in the working file and verify their mapping. Do not claim a two-column template is proven for every account. Category values are limited to Operating Expense parent categories; an unrecognized category becomes Uncategorized Expenses.
The source lists a maximum of 500 transactions per bank CSV, and its error FAQ also identifies 5 MB and 1,000 rows as limits. Meeting the transaction count does not establish that the byte/row checks pass. For a larger source, create separately identified, non-overlapping working files and keep the original statement intact.
Record every segment’s outcome before retrying
In the synthetic example, a verified source has 620 transactions. The working allocation is 400 in segment S-A and 220 in S-B. Each source ID belongs to exactly one segment; the union still contains all 620. These sizes illustrate partitioning, not a FreshBooks performance recommendation.
| Segment result | Next investigation |
|---|---|
| S-A confirmed imported; S-B not yet submitted | Continue with S-B, not the whole 620-row source |
| S-B upload interrupted or outcome uncertain | Inspect actual imported rows and status before retrying |
| Two segments contain the same source ID | Repair their overlap before either upload |
FreshBooks labels file-imported bank movements Imported via CSV. Use that provenance when checking an uncertain result. The source says to remain logged in while an import runs; it can take up to 15 minutes. That is the vendor’s stated window, not a measured result from this guide.
Check early history and existing expenses
Imported records dated before the Opening Balance Start Date do not become available for matching until the starting point is reset appropriately. The official FAQ describes initially using the earliest available start, adding older transactions, then using More Actions to reset the opening balance, changing the reconciliation start to the first manually added transaction and updating the account balance for that date. Review the source statement and existing reconciliation before confirming such a change; it affects the accounting starting point.
Where bank connections, expense imports and manual entries coexist, compare the actual record provenance before correcting duplicates. FreshBooks states that deleting an unreconciled bank transaction also deletes its corresponding FreshBooks entry. Do not use deletion as a harmless CSV cleanup operation or import an expense again merely because its bank-side match is unresolved.
The synthetic segment worksheet checks membership, coverage and an overlap control in Python. It does not upload to FreshBooks. Use the general overlapping-export guide for source-file repetitions, then review existing FreshBooks records separately.
LocalExtract processes one PDF at a time and exports date,description,amount CSV. It does not create expense categories, split a bank upload, reset FreshBooks balances or synchronize accounts. Download for a PDF-only source.
Official FreshBooks instructions checked October 16, 2026. Product operation and live import outcomes are not tested here.
LocalExtract Team
We build LocalExtract, a desktop bank statement converter. Questions or corrections? Contact · Editorial policy