Skip to main content

Drop a file. Get clean Beancount entries.

Smart Import reads a CSV, PDF, OFX file, or a scanned bank statement, extracts every transaction with AI, and suggests the right account for each one. You review and import in seconds — no manual data entry, no formatting.

Smart Import configure step: AI Fill has matched imported transactions such as Spotify and Cafe Mogador to Beancount accounts like Expenses:Home:Phone and Expenses:Food:Restaurant, ready to import.

Four steps from file to ledger

No importer scripts, no column mapping, no copy-paste. Just drop, review, categorize, and import.

01

Drop your file

CSV, PDF, OFX/QFX, or a photo of a paper statement — up to 10 MB. CSV files are parsed instantly in your browser; PDFs, OFX files, and images are read by AI.

Smart Import upload screen with a drop zone that accepts CSV, PDF, OFX, and image files up to 10 MB.
02

Review what AI extracted

Every transaction is parsed into date, payee, description, and amount, with a running count of valid rows. Edit any field inline or remove rows you don't want — all before anything touches your ledger.

Smart Import preview table showing seven parsed transactions with editable date, payee, description, and amount fields.
03

Categorize with one click

Pick the source account once, then click AI Fill to suggest a target account for every row — matched to your existing chart of accounts. Adjust any that need a different account.

Smart Import configure step with AI-suggested Beancount accounts assigned to each transaction and an Import button.
04

Import — and you're done

Review, then import. Your transactions land in the ledger as a single Git commit you can revert anytime — and you jump straight to the journal.

Smart Import success screen confirming the transactions were imported, with buttons to view the journal or import more.

Built for accurate, auditable books

Speed where it helps, control where it counts — so what lands in your ledger is exactly what you meant.

Reads any statement format

CSV, PDF, OFX and QFX exports, plus image scans and phone photos — handled by one importer.

AI extraction, not templates

An AI model reads unstructured PDFs and images and pulls out structured transactions. No per-bank importer to configure.

Categorized to your accounts

One click on AI Fill suggests a target account for every transaction, drawn from your own chart of accounts.

You stay in control

Preview, edit inline, or reject any row. Nothing is written to your ledger until you click Import.

Git-backed audit trail

Every import is a real Git commit you can review or revert with standard tools — a full history of what changed.

Plain text, no lock-in

Transactions land as clean Beancount entries in files you own. Read them, export them, or leave anytime.

Works with the files you already have

Exported from your bank, downloaded from online banking, or snapped on your phone — Smart Import takes it from here.

CSV

Spreadsheet and bank exports — parsed instantly.

PDF

Bank and card statements — read by AI.

OFX / QFX

Open Financial Exchange downloads from online banking.

PNG / JPG

Photos and scans of paper statements.

Frequently asked questions

What file formats can Smart Import read?

CSV, PDF, OFX, and QFX files, plus image scans and photos (PNG or JPG), up to 10 MB per file. Drop an export from your bank, a downloaded statement, or a picture snapped on your phone.

Does Smart Import actually use AI?

Yes. CSV files are parsed instantly in your browser. PDFs, OFX files, and images are read by an AI model that pulls out each transaction's date, payee, amount, and description. A second AI step then suggests a target account for every row, drawn from your own chart of accounts.

Will it change my ledger without asking?

No. You preview every extracted transaction, edit any field inline, and remove rows you don't want — then explicitly click Import. Nothing is written until you approve it, and each import lands as a Git commit you can review or revert.

How is this different from the bean-import command line?

Smart Import runs entirely in your browser — there is no config.py to write, no Python to install, and no per-bank importer to maintain. You drop a file and review the result.

How is Smart Import different from Bank Sync?

Bank Sync connects to your bank through Plaid and pulls in transactions automatically on an ongoing basis. Smart Import is for files you already have — statements, exports, and scans — and needs no bank connection.

What if the AI picks the wrong account?

Every suggested account is editable before import. Change it in one click, or assign accounts yourself. Because nothing is committed until you approve, a wrong guess never reaches your ledger.

Is my financial data safe?

Your ledger lives in your own Git repository, and imported transactions are plain-text Beancount you can read, export, or roll back at any time. There is no proprietary format and no lock-in.

Import your first statement in seconds

Drop a file, let AI do the extraction and categorization, and keep full control of what lands in your ledger.