How to import bank transactions from CSV into accounting software
Typing your bank transactions into your books by hand is one of the most tedious jobs in bookkeeping, and one of the easiest to get wrong. A transposed number here, a skipped line there, and your records quietly stop matching your account. The fix is to let the bank do the typing for you: download your statement as a CSV file and import it, so every transaction lands in your books in seconds instead of an evening.
Nearly every bank lets you export a statement as a CSV, and most accounting software can read one. The trick is doing it cleanly: getting the right file, understanding its columns, tidying anything odd, importing with the columns mapped correctly, categorizing the transactions, and then checking the imported total matches the statement so you know nothing slipped through. This guide walks through all of it. It's a job you'll do regularly, so it's worth getting the routine right once.
Step 1: download a CSV statement from your bank
Start in your online banking. Almost every bank lets you export transactions, usually under a "Download", "Export", or "Statement" option on the account screen. When you export, you'll typically choose a date range and a format. Pick CSV. Some banks call it "CSV", some "Comma delimited", and some offer Excel (.xlsx), which works just as well for an import.
A few things to get right at this stage:
- Choose a sensible date range. Match it to the period you're bringing in, often a single month. Exporting one month at a time keeps each file manageable and makes the total easy to check later.
- Don't overlap with what you already imported. If you imported up to the end of last month, start this file at the first of this month, so you don't bring the same transactions in twice.
- Note the closing balance or the period total. You'll use this at the end to confirm everything came across. Jot it down or keep the statement page open.
If your bank only offers PDF statements, that's harder, because a PDF isn't a data file. Check for a separate transaction export, or for a CSV option in the account view rather than the statements section, as the two are often in different places. Most banks have a CSV somewhere even when the headline option is a PDF.
Step 2: understand the columns in the file
Open the CSV in Excel or any spreadsheet program and look at what your bank actually gave you. Bank exports vary a lot, but they almost always contain the same handful of pieces of information, just named and arranged differently from bank to bank:
- Date. When the transaction happened. Banks format dates in all sorts of ways, so note whether yours is day-month-year or month-day-year.
- Description. Who the money went to or came from. This is often messy, with reference codes and extra text, but it's what tells you how to categorize each line.
- Amount. Here banks differ most. Some use one column with negatives for money out and positives for money in. Others use two separate columns, often labelled "Debit" and "Credit" or "Money out" and "Money in". Knowing which style your bank uses matters, because it changes how the import reads what's a payment and what's income.
- Balance. A running balance after each transaction. Useful for checking, but you usually won't import it.
You don't need to change anything yet. The goal is just to know what each column is, so that when the import asks, you can confirm the date column is the date and the amount column is the amount. The two-column versus one-column amount is the single thing most worth noticing, because it's where an import most often needs a moment's attention.
Step 3: tidy the file if it needs it
Many bank CSVs import fine with no changes at all. But some come with clutter at the top that can confuse an import, and a quick tidy takes a minute and saves trouble. Open the file and check for:
- Header junk above the data. Some banks put your name, account number, and a few blank rows before the actual columns start. If there are rows above the header row, delete them so the column titles sit in row one with the transactions directly underneath.
- A missing header row. A few banks export raw data with no column titles at all. If so, add a simple header row: Date, Description, Amount, or Date, Description, Money out, Money in, matching what's actually in each column.
- Summary rows at the bottom. An opening or closing balance line tacked onto the end isn't a transaction, so delete it, or just leave it unmapped and skip it during the import.
What you do not need to do is rename columns to match the software or reorder them. A good importer maps your columns however the bank named and arranged them. You're only removing the stuff that isn't transaction data, so the import sees a clean table: one header row, then one row per transaction. If your file is already clean, skip this step entirely and go straight to importing.
Step 4: import with automatic column mapping
Now bring the file into your accounting software. In a tool with a proper importer, you drag the CSV in and it reads your column headers and proposes a mapping: this column is the date, this is the description, this is the amount. Because every bank lays out its export differently, an importer that reads any column layout is what saves you from reformatting each bank's file to fit a fixed template.
This is what the spreadsheet importer in Argo Books is built to handle. You drop in the CSV your bank gave you, and it reads whatever the columns are called and however they're ordered, then maps them to the right fields on its own. A messy bank export comes in without you reshaping it first. It works with CSV and Excel files specifically, which is exactly what bank statements export as. And every import has a one-click undo, so if a file goes in wrong, you reverse it and try again rather than deleting lines by hand.
Pay attention to the amount mapping in particular. If your bank uses one amount column with negatives, confirm the import reads negatives as money out. If it uses two columns, make sure money-out and money-in each map to the right side, so payments and income don't get crossed. The importer's preview shows you how the transactions will land before anything is saved, so check it there. The first time you import from a given bank, it's worth a careful look; after that, the same bank's files import the same way each time.
Step 5: categorize the imported transactions
An imported transaction is a record of money moving, but it isn't yet useful for bookkeeping until you've said what it was. Categorizing is what turns a list of bank lines into something that produces a tax return: this payment was fuel, this one was materials, this deposit was a customer paying an invoice.
You don't need an accountant's full chart of accounts. A handful of buckets that match how your business actually spends and earns is enough to start:
- Income for money coming in, ideally matched to the invoice it pays.
- Materials and supplies for the things you buy to do the work.
- Vehicle and travel for fuel, parking, and trips.
- Software and subscriptions for recurring digital costs.
- Fees, insurance, and professional costs for the overheads.
Good software learns as you go: once you've categorized a few payments from the same supplier, it suggests the same category next time, so a recurring subscription or a regular supplier gets categorized almost automatically. The description column you imported is what makes this possible, so it's worth having. Work down the list and assign a category to each line. This is the one part of the process that still needs your judgement, because only you know what a given payment was for, but it goes quickly once the recurring ones are recognized. For more on this, see our guide on tracking business expenses without spreadsheets.
Step 6: check the imported total matches the statement
This is the step that proves nothing slipped through, and it's the reason you noted the statement total back at step one. Add up the transactions you imported and check the total against the bank statement for the same period. If the money-in and money-out you imported add up to the same change in balance the statement shows, every transaction came across. If the totals don't match, the gap tells you something is missing or doubled.
Common causes of a mismatch are easy to find once you know to look:
- A row that didn't import, often a summary line you meant to skip but the software counted, or a transaction the file split awkwardly.
- A doubled import, where the date range overlapped a previous file and some transactions came in twice.
- An amount read with the wrong sign, where a payment was counted as income or the reverse, which throws the total out by twice the amount.
When the total matches, your books and your bank agree for the period, which is exactly what you want. This is the routine check that keeps your records trustworthy, so when you pull a report or hand figures to your accountant, the numbers are facts and not hopes. If something is off, the one-click undo lets you roll the import back, fix the file or the mapping, and import cleanly. Get this matching right each time and your books stay in step with your bank all year.
Frequently asked questions
Log into your online banking and look for a Download, Export, or Statement option on the account screen. When you export, choose a date range and pick CSV as the format, sometimes labelled Comma delimited. Excel format works for an import too. Exporting one month at a time keeps the file manageable and makes the total easy to check afterward. If your bank only shows PDF statements in the statements section, look for a separate transaction export or a CSV option in the account view, since the two are often in different places and most banks offer a CSV somewhere.
Yes, a good importer handles both styles. Some banks use one amount column with negatives for money out and positives for money in; others use two separate columns, often labelled Debit and Credit or Money out and Money in. The thing to do is check the amount mapping during the import: confirm that money out and money in each land on the right side, so payments are not read as income or the reverse. The importer shows a preview before anything is saved, so you can verify it there. The first import from a given bank is worth a careful look; after that the same bank files behave the same way.
Usually only a little, if at all. Many bank CSVs import fine as-is. The tidying that sometimes helps is removing header junk above the column titles, adding a header row if the bank left one out, and deleting a summary balance line at the bottom. What you don't need to do is rename columns to match the software or put them in a particular order, because a good importer maps your columns however the bank named and arranged them. You are only clearing out the rows that are not transaction data, so the import sees a clean table of one row per transaction.
Monthly is a sensible rhythm for most small businesses. Importing once a month, right after the statement period closes, keeps your books current without becoming a daily chore, and matching the monthly total against the statement is an easy check. If your volume is high or your cash flow is tight, importing more often, say weekly, keeps you closer to real time. The main rule is to be consistent about where each period starts and ends so you neither skip transactions nor import the same ones twice. A regular routine is what keeps your records in step with your bank all year.
This is the Argo Books site, so read it with that in mind, and yes, the importer described is one of our features. But the process here works with any accounting tool that imports a CSV, and most do. Downloading a statement, understanding the columns, tidying the file, importing with the columns mapped, categorizing, and checking the total against the statement are universal steps that apply whatever software you use. If you take the routine and run it in a competitor, the guide did its job. We would rather you keep your books in step with your bank, with whatever tool fits you, than leave them to drift.