Bank statement to Firefly III
Firefly III imports files through its Data Importer, which reads CSV and asks what each column means. Upload your statement, download the CSV, and load it with the configuration file below: the date, description and amount are already assigned, so the import goes straight to choosing the account.
Upload a file
What you get for Firefly III
- A CSV with Date, Description, Amount and Balance columns and one header row
- Dates as YYYY-MM-DD, which the configuration reads as Y-m-d
- One signed amount: money out negative, money in positive — withdrawals and deposits sort themselves
- A Data Importer configuration (version 3) that maps the four columns, so there is nothing to assign by hand
The Data Importer configuration
Download the configuration file and upload it next to the CSV on the Data Importer’s first screen. It sets the column roles and the date format; the asset account, rules and tags stay yours to choose in the importer’s form.
| CSV column | Data Importer role | Notes |
|---|---|---|
| Date | date_transaction | Read with the date format Y-m-d. |
| Description | description | The statement’s text for the transaction. |
| Amount | amount | Signed. The currency code in the header is not read: transactions take the currency of the asset account. |
| Balance | _ignore | Firefly III works out balances itself. |
{
"version": 3,
"source": "statementconverterai.com",
"created_at": "2026-10-29T00:00:00+00:00",
"date": "Y-m-d",
"default_account": 0,
"delimiter": "comma",
"headers": true,
"rules": true,
"webhooks": true,
"skip_form": false,
"add_import_tag": true,
"roles": [
"date_transaction",
"description",
"amount",
"_ignore"
],
"do_mapping": [
false,
false,
false,
false
],
"mapping": {},
"duplicate_detection_method": "classic",
"ignore_duplicate_lines": false,
"ignore_duplicate_transactions": true,
"unique_column_index": 0,
"unique_column_type": "internal_reference",
"flow": "file",
"content_type": "csv",
"conversion": false,
"map_all_data": false
}Duplicate checking is Firefly III’s classic method: a transaction it already holds is skipped. Two identical lines inside one file are both kept, because two coffees on the same day are two transactions.
What the CSV file looks like
The CSV the Data Importer reads: comma-separated, one header row, ISO dates and one signed amount. The configuration below assigns each of these columns.
Date,Description,Amount (USD),Balance
2026-03-02,Direct Debit 4471 Acme Insurance,-120.00,1880.00
2026-03-04,Card Payment Corner Grocer,-38.40,1841.60
2026-03-06,Transfer Received J Smith,500.00,2341.60How to convert
Upload your statement
Drop in the PDF you downloaded from your bank, or a scan or photo of a paper statement.
Download the CSV and the configuration
CSV is preselected on this page; the configuration file is linked below the output list.
Run the Data Importer
Choose file import, upload the CSV and the configuration, pick the asset account and start the import.
Statements it handles
Layouts differ from bank to bank, so nothing is matched against a fixed template. An unusual statement still produces a table you can check before exporting — which is what makes it usable for bookkeepers and accountants who receive statements from every client.
PDF statements and CSV exports
A statement downloaded from your bank, or the CSV your bank lets you export. Both arrive as the same clean table.
Multi-page statements, read as one table
A statement that runs over several pages — or several statements uploaded together — is read as one continuous table, not one file per page.
Amounts and dates kept as your bank prints them
Debit and credit signs, decimal places and date formats are left as printed, so the numbers still reconcile against the statement.
Scanned, image-only PDFs, read with OCR
A statement with no text layer is read with OCR and may need a quick review — the one case where a row can come out wrong.
- CSV
- Scan
Rows are read by what they are — a date, a description, an amount — not by where they sit on the page, so a wrapped description stays with its transaction and a closing balance never becomes one. Why OCR mangles bank statements
Frequently asked questions
How do I import a bank statement into Firefly III?
Convert the PDF here to CSV, then open the Firefly III Data Importer, choose to import a file, and upload the CSV together with the configuration file from this page. Pick the asset account the transactions belong to and run the import.
Can Firefly III import a PDF statement?
No. The Data Importer reads CSV and CAMT.053 files, or pulls transactions from a bank connection. A PDF has to be converted first, which is what this page does.
Do I need the configuration file?
No, but it saves the mapping step: without it the importer asks you to assign a role to each column and pick the date format. The file does exactly that for this CSV and leaves the rest of the form to you.
Will a second import duplicate my transactions?
The configuration turns on Firefly III’s duplicate check, so a transaction already in Firefly III is skipped when you import an overlapping statement.
Does it work for credit card statements?
Yes. Purchases come out negative and payments positive, the same convention as a bank account, so the amounts land on the right side of a credit card liability or asset account.
Is my statement kept after conversion?
No. The file is deleted when the conversion finishes; only the converted copy stays at your private link.