Blog · Bookkeeping basics

How to Import Bank Transactions Into Your Books

Learn how to import bank transactions from a CSV, a PDF statement, or a live feed, map the columns, dedupe on re-import, and categorize to post them.

· 7 min read · by the LedgerMCP team

To import bank transactions you get the activity out of your bank as a CSV file, a PDF statement, or a live feed, bring it into a staging area, confirm the date, description, and amount, and then categorize each row to post it to your ledger. The important part most software skips over: an import is not a posting. Your transactions sit in a review area first, and nothing touches your books until you decide it should. Here are the three ways to get the data in, how re-importing avoids duplicates, and how an AI assistant can run the whole thing for you.

The three ways to get transactions in

Every import in LedgerMCP arrives through one of three paths, and they all end up in the same place:

  • CSV export. Almost every bank lets you download a spreadsheet of transactions for a date range. This is the most reliable source because the columns are plain text you can confirm.
  • PDF statement. If a CSV isn’t handy, LedgerMCP reads the transactions straight out of a PDF statement, so the official document you already have is enough.
  • Live bank feed. A Plaid connection pulls new transactions on its own, in business or personal mode. There’s no file to download because the feed keeps itself current. File import is free; live feeds start at $9 per month by connected-account count.

Whichever path you use, the transactions land in a staging area, not directly in the ledger. Staging is the review step that keeps a bad row from quietly becoming a posting.

How to import bank transactions, step by step

  1. Get the file or feed. Download a CSV or PDF statement from your bank for the period you want, or connect a live Plaid bank feed instead of a file.
  2. Hand it over or use the web import. Give the file to your connected AI assistant, or upload it yourself in the web app. Both paths reach the same staging area, so you can mix and match.
  3. Map and confirm the columns. Confirm which columns are the date, the description, and the amount. If you re-import a file that overlaps one you already brought in, LedgerMCP dedupes automatically, so you never double up.
  4. Review the staged rows. Look over the staged transactions before anything posts. Fix any obvious mismaps and remove rows you don’t want on the books.
  5. Categorize to post them. Categorizing each row posts a balanced double-entry into your ledger and links it back to the source transaction. Until you categorize, nothing is on the books.

Why nothing posts until you categorize

In real double-entry accounting, a posting has two sides that have to balance, and once it’s posted it’s permanent. That’s a good reason not to let a raw import write straight to the ledger. LedgerMCP keeps imported rows in staging until categorizing turns each one into a balanced entry: the bank account on one side, the category on the other. This is also where the sign gets settled, so a $40 charge lands as money out and a $2,000 deposit lands as money in. If you want the full method for deciding what each row is, how to categorize business expenses walks through it.

Re-importing without making duplicates

The most common import worry is bringing the same transaction in twice, usually when this month’s file overlaps last month’s, or when a manual entry already covers a row. LedgerMCP dedupes on re-import: it recognizes rows it has already seen and stages only what’s new. That means you can safely re-pull a statement, or import a fresh CSV over an old one, without your balances drifting by the amount of a phantom double. If a genuine duplicate does slip through from two different sources, it’s flagged rather than deleted, so nothing disappears from the record.

Importing a backlog of months

If you’re starting from behind, importing is the first move in catching up. Pull a CSV or PDF for each month you missed, bring them all into staging, and work through the categorization. Because re-imports dedupe, you don’t have to be surgical about which months you already covered. This is exactly the workflow in catch-up bookkeeping with AI, where a connected assistant chews through a year of staged rows while you confirm the calls. It is also the same import path you follow to switch accounting software without losing history, by bringing your old tool’s CSV export straight into the new books.

Letting an AI assistant do the import

LedgerMCP ships no built-in AI, but it exposes an MCP server, so you can connect your own assistant (Claude, ChatGPT, or any MCP client) and let it handle the mechanical parts. You hand it the file and it normalizes the rows and imports them for you:

You: Here’s my June checking export. Import it and stage everything for review.
Assistant: Imported 84 transactions from June 1–30. 3 looked like duplicates of
rows already on the books, so I left those out. 81 are staged and uncategorized,
ready for you to review.

You stay in the loop: the assistant stages the rows, and you review before they post. Every write it makes is audit-logged and reversible, and you can hand it a read-only key if you only want it to look. Once the import is clean and categorized, the natural next step is to reconcile the account against the statement, so you can prove the imported month ties to the cent.

Quick answers

What file format do I need to import bank transactions?

A CSV export from your bank is the most reliable, and LedgerMCP also reads a PDF statement directly. If a CSV has date, description, and amount columns, it will import. You can also skip files entirely and connect a live bank feed.

Will importing the same statement twice create duplicates?

No. LedgerMCP dedupes on re-import. When you bring in an overlapping file, it recognizes rows it has already seen and stages only the new ones, so you can safely re-import a month without doubling it up.

Do imported transactions post to my ledger right away?

No. Imported rows land in a staging area, not the ledger. Nothing becomes a real double-entry posting until you categorize it. That gives you a chance to review every row before it hits your books.

What is the difference between importing a file and connecting a bank feed?

A file import is a one-time snapshot you hand over (a CSV or PDF). A bank feed is a live Plaid connection that keeps pulling new transactions on its own. The free plan covers file import; live feeds start at $9 per month by connected-account count.

Can my AI assistant do the import for me?

Yes. You hand the file to your connected assistant (Claude, ChatGPT, or any MCP client) and it normalizes the rows and imports them through LedgerMCP’s tools. You still review the staged rows before they post.

Put this into practice

Free books in one minute: connect Claude or ChatGPT and let it do the work you just read about.