← Financial Docs by JayGet the tracker

Budgeting · Google Sheets

Household Finance Tracker

One spreadsheet for every account you have: income, spending, savings, transfers and rental properties, checked against your budget each month. Drop in your bank downloads and the sheet does most of the sorting for you.

Free · English · Updated October 2026 · Importer version 1.2

What it does for you

AutomaticStill your call
Reads QFX/OFX, CSV and QIF downloads from most US banks and card issuers, and fixes the plus/minus signsAnything the Rules tab does not recognize yet, mostly in the first month
Skips duplicates, so importing the same file twice adds nothingMoney that looks like spending but is not (friends paying you back, reimbursed work costs)
Categorizes using merchant rules, and learns new rules from your own choicesWhether a purchase belongs to a rental property instead of the household
Pairs transfers between your own accounts (card payments, savings moves) so they never count as income or spendingBrokerage, stock plan and 401(k) activity, which is entered by hand
Dashboard, budget vs actual, savings rate and rental profit by monthSetting your budget numbers

Expect roughly three in four rows to be sorted automatically in month one, and nine in ten by month three once it has learned your merchants. The monthly routine takes about 15 to 20 minutes.

One-time setup (about 10 minutes)

  1. Make your copy. Click Make my own copy above while signed in to your Google account. The copy is yours alone. Nobody else, including me, can see it.
  2. Set the year on the Settings tab, and your payroll 401(k) amounts if you want savings rate to include them.
  3. List your accounts on the Accounts tab: a short label (for example Chase Checking), the type, and the last 4 digits only. The last 4 lets the importer recognize most files on its own.
  4. Rentals (optional). Add each property on Properties & Loans and pick it in the Property column for that property's accounts.
  5. Budgets. Enter monthly targets in the yellow cells on Categories. Leave blank anything you do not budget.
  6. Run the first import and approve the permission screens. They look alarming, so read the next section first. It takes about 30 seconds.

The first time you import: two Google screens

The importer is a small script inside your own copy of the sheet. Google shows a warning for any personal script that has not been through its paid app review, so everyone sees these screens once. The "developer" it names is you, because copying the sheet made you its owner.

Screen 1: "Google hasn't verified this app"

Click Advanced (small link, bottom left), then Go to Finance Tracker Importer (unsafe). Do not click Back to Safety; that just cancels.

Screen 2: "Select what Finance Tracker Importer can access"

Tick both boxes, or Select all, then Continue. If a box is left empty, the import stops and asks again.

Permission on screen 2What it actually allows
View and manage spreadsheets that this application has been installed inRead and write this one spreadsheet, your copy of the tracker. Not your other sheets, not your Drive.
Display and run third-party web content in prompts and sidebars within Google applicationsShow the Import window where you pick your files. Files are read in your browser; nothing is sent anywhere.

That is the whole list. The script cannot read your email, your Drive or anything outside this spreadsheet, and it does not connect to the internet. You can read every line under Extensions > Apps Script, or in the source section below.

Every month (15 to 20 minutes)

  1. Download last month's transactions from each bank and card. Choose QFX / OFX / Quicken when offered, otherwise CSV. See the guide below.
  2. Import. Finance Tracker > Import statements, pick all the files at once, check the account shown for each, click Import.
  3. Review. On Transactions, filter column M (Flag). Pick a category for each uncategorized row, and a Transfer ID for any transfer it could not pair.
  4. Teach it. Finance Tracker > Learn rules from my categories. New rules appear on the Rules tab in yellow; edit or delete any you do not like.
  5. Close the month. Raise Months closed on Settings by one, then look at the Dashboard and Budget vs Actual.

Delete the downloaded statement files when you are done, especially from a synced Downloads folder. The sheet keeps only date, account label, description and amount.

How to download transactions

Menus move around and banks rename buttons, so treat this as a map rather than exact clicks. If your bank is not listed, look for Download, Export or a small download arrow on the account's transaction page. If you cannot find it, search the bank's help pages for "download transactions". Pick a date range that covers the whole month; overlap is fine because duplicates are skipped.

Bank or cardWhere to lookPick this format
National banks
Chase (checking and cards)Open the account, then the download icon above the activity listQuicken Web Connect (QFX) or CSV
Bank of AmericaOpen the account, then Download above the transactionsQuicken (QFX) or Microsoft Excel (this is a CSV)
Wells FargoDownload Account Activity from the account menuQuicken (QFX) or Comma Delimited (CSV)
Capital One (cards and 360)Open the account, then Download TransactionsCSV or QFX
CitiAccount activity, then the download iconCSV or QFX
U.S. BankAccount activity, then Download transactionsCSV or QFX
PNCAccount activity, then DownloadCSV or QFX
Regional banks
Truist (formerly BB&T and SunTrust)Open the account, then Download or Export near the top right of the transactionsCSV, OFX or QFX
TD Bank, Citizens, Fifth Third, Regions, M&TAccount activity, then Download or ExportQFX / OFX if offered, otherwise CSV
Atlantic Union, Towne, other Virginia banksAccount history, then Export (usually under a printer or download icon)QFX / OFX if offered, otherwise CSV
Online banks and brokerage cash accounts
Ally BankTransactions History, then the download icon. Up to 18 months available.CSV or Quicken (QFX)
SoFi, Marcus, Discover BankAccount activity, then Download or ExportCSV (QFX where offered)
Charles Schwab Bank, Fidelity Cash ManagementBank or cash account history, then ExportCSV. Only the bank / cash account, not trades.
Robinhood Gold CardCard activity export in the appCSV (pending and declined rows are skipped)
Credit unions
Navy FederalAccounts, pick the account, Account History, then DownloadCSV, OFX or QIF (all three work)
USAA, Pentagon Federal, VACU, Virginia Credit Union and othersAccount history, then Export or DownloadQFX / OFX if offered, otherwise CSV or QIF
Credit cards
American ExpressStatements & Activity, then DownloadCSV or Quicken (QFX)
Discover CardActivity, then Download (pick the statement period)CSV or QFX
Apple CardiPhone Wallet app, Apple Card, Card Balance, pick a monthly statement, Export Transactions. Monthly only, after the statement closes.OFX or CSV
Barclays, Synchrony and store cardsActivity or statements page, then DownloadCSV if offered. Some store cards only give PDFs.
Not imported
Accounts with PDF statements onlyNot importableType the few rows in by hand, or a monthly total
Brokerage, 401(k), stock plansNot imported on purposeRecord deposits, withdrawals and vests by hand (see README tab)

Why QFX/OFX first? It is one standard format across banks: amounts already carry the right sign and every transaction has a bank ID. CSV layouts differ by bank; the importer reads the common layouts (it finds the date, description and amount columns by name), and QIF works too. If a CSV comes in with signs backwards, see the fixes below.

If something looks off

Card purchases came in as income

On Accounts, set Import: amount sign to flip for that card, delete its rows and import again.

File not matched to an account

Add the last 4 on Accounts, or put a word from the file name (for example activity) in Import: file name contains.

"Could not find a header row"

The file is not a transaction export (often a PDF saved as CSV, or a stock plan report). Try the QFX download instead.

A transfer did not pair

The other side is probably an account you do not track, or it posted more than 5 days later. Give both rows the same Transfer ID by hand, or pick a non-transfer category.

Privacy

What is in the script (open source)

The full importer is public so you can check it before you approve anything. It is two files, about 700 lines of plain JavaScript, with no outside libraries:

Read Code.gs Read ImportDialog.html
Part of the codeWhat it does
@OnlyCurrentDoc and the permission listLimits the script to the spreadsheet it lives in. It never asks for Drive, Gmail or internet access.
parseOfx, parseQif, parseCsvStatementRead the bank file you picked and pull out date, description and amount. Nothing else from the file is kept.
normalizeSignMakes money out negative and money in positive, flipping card files that show purchases as positive.
dedupeSkips rows that are already in your Transactions tab.
categorize, learnRulesApply your Rules tab, and suggest new rules from categories you picked by hand.
matchTransfersPairs equal and opposite amounts between your own accounts within 5 days.
ImportDialog.htmlThe Import window. Reads your files in the browser and hands the text to the functions above.

The copy you make is exactly this code; you can compare it under Extensions > Apps Script in your sheet. Copies do not update themselves, so a later fix only reaches you if you paste in the newer files.

Files