Start free
import_statementWrites

Import a bank statement without a manual data-entry pass

You have a PDF or CSV bank statement and a stack of transactions to get into your books, and typing each one in by hand is the whole reason bookkeeping software feels like a chore.

This is the tool that gets your bank activity into BalanceMCP in the first place. Hand your assistant a statement — a PDF, a CSV, or even pasted text — and it extracts every row and imports them together, in one call, as one statement. That "one call" part is not a suggestion: splitting a single statement across multiple imports will make the arithmetic check misread repeated identical charges as duplicates, so give your assistant the whole thing at once.

The arithmetic check is the safety net. You supply the statement's own beginning and ending balance, and the import verifies that beginning-plus-every-transaction equals ending. When it does not, the import is flagged rather than silently accepted — that mismatch means the extraction is probably missing a row or has an extra one, though the numbers alone can't say which. A flagged import is worth a second look at the source document before you trust the totals downstream.

One sign convention trips people up: amounts are always from the account holder's point of view. A deposit is positive, a withdrawal is negative. For a credit card, a purchase is negative and a payment to the card is positive — so a card balance itself reads as a negative number throughout BalanceMCP, because it represents money owed. Get that backwards on the way in and every report downstream will read exactly opposite of reality.

It's worth being direct about what this tool is not: there is no live bank connection here. Nothing pulls transactions from your bank automatically today — you or your assistant extract them from a statement you already have, and this tool imports that extraction. Re-importing the same statement is safe; the import recognizes what it already has and inserts nothing new.

What you would actually say"Here's my Chase checking statement for June — import it into the Iron Crest Remodeling book."

What this does not do

  • No live bank feed exists yet — every import is a manual statement extraction, not an automatic sync.
  • A flagged (unbalanced) import means the extraction is likely incomplete or has an extra row; the tool cannot tell you which.
  • Splitting one statement across multiple import calls will cause real repeated charges to be misidentified as duplicates.

Arguments

NameTypeRequiredWhat it is
bookIduuidRequired
bankAccountobjectRequiredMatched to an existing account if one fits; otherwise created, with its own ledger account.
periodStartstringRequired
periodEndstringRequired
beginningBalanceunknownRequiredThe statement's opening balance. Accepts "$5,000.00" or 5000.
endingBalanceunknownRequiredThe statement's closing balance. This is what the arithmetic is checked against.
transactionsobject[]RequiredEvery row on the statement, in any order.
fileNamestringOptional
confirmbooleanRequiredLeave false to check the arithmetic and preview. Set true to import.

Generated from the tool definition, so it cannot describe arguments the tool does not accept. Unrecognised arguments are rejected rather than ignored.

Common questions

Will my transactions sync automatically after this?
Not yet. Each import is a one-time extraction from a statement you provide. There's no standing bank connection pulling new transactions on its own.
What if the beginning and ending balance don't add up?
The import still happens, but it comes back flagged with the discrepancy amount. That usually means a row was missed or duplicated during extraction — worth checking the source statement before relying on the numbers.
Is it safe to import the same statement twice by accident?
Yes. Re-importing a statement you've already imported inserts nothing new; the tool recognizes the transactions it already has.
How do credit card transactions work here?
Purchases import as negative amounts and payments as positive, which means the card's own balance shows up as a negative number in BalanceMCP — it's money owed, not money held.