If you are one of those people who recognize the acronym FBAR from personal encounters with it, this blog post will fill your heart with joy.
If you don’t know about FBAR, it is the Report of Foreign Bank and Financial Accounts, a part of Financial Crimes Enforcement Network (FinCEN) – specifically form 114. U.S. persons, including citizens, resident aliens, corporations, partnerships, trusts, and estates, who have a financial interest in or signature authority over foreign financial accounts must file FBAR.
If you’ve never had to do it, take it from me – it sucks. For each account you must report details about the financial institution, the account, the type of account, the highest balance, the date when that highest balance was achieved, the interest or dividends received, all in the foreign currency. Then you convert the foreign currency amount to USD using a magic conversion rate that you must get from the Treasury Reporting Rates of Exchange website. There are also filing thresholds, special rules if you don’t happen to have a magic conversion rate, caveats based on account open and closed dates, and other myriad things that can make any reasonable person want to rip their hair out. Most tax preparers don’t know FBAR and FinCEN and tell you to figure it out yourself (my previous tax preparer was one of these people) and anecdotally many of the major online filing applications don’t prompt you for this as well.
But, you’ll be happy to know that like everything else in the world, AI makes this better. For tax year 2025, I downloaded (in CSV format) transaction records for the past five years from all the financial institutions where I have accounts and dropped them in a directory. Don’t for an instant think that this is easy – some banks I have accounts with seem to be staffed by cavemen.
Then I pointed my AI Agent of choice (kiro) at the the directory full of stuff.
- While I asked for CSV, some banks still downloaded as password protected xls.
- Each bank has its own statement format – what columns it emits, what headers and footers it provides.
- One insists on downloading old information by fiscal year which of course is not necessarily calendar year.
But, no worry. A detailed prompt to kiro made this all a breeze. It was instructive to see kiro reason its way through the whole thing.

- On the first pass it completely missed an account that was opened in CY 2024 and remains open to this date.
- On the second pass it found the account that it missed in the first pass but it also provided an account opening date (from CY 2024).
- On the third pass it realized that the deposit (from the earlier pass) was producing no interest – it was set to only pay interest on maturity. In this pass it computed the interest accrued during the year and recorded it as interest earned.
- On the fourth pass it computed the interest accrued for this deposit but asked for a clarification – should interest that was not paid be accounted as “earned”?
It took four passes before it came to the point where it was happy with its analysis. It took 7 minutes to finish. It would have taken me a weekend of pure agony, at least.
FBAR Context — General Accounts
What is FBAR
For filing US taxes, a disclosure called FBAR is required for all non-US financial accounts held. One line per account (savings and each FD separately).
Required Fields Per Account
- Account Number
- Country of Account Location
- Highest balance AT ANY POINT OF THE CALENDAR YEAR
- Date of highest balance
- Type of account
- Owner of Account
- Date Opened (if opened during the calendar year. otherwise blank)
- Date Closed (if closed during the calendar year. otherwise blank)
- Interest/Dividends earned during the calendar year
Rules
-
Calendar year: CY 2025.
-
Owner: Figure this out from the statements provided. Some accounts are single owner accounts. Others are joint accounts.
-
Date Opened: Actual date the account was opened. If opened before CY 2025, use the original opening date. Fill only if the account was opened during CY 2025. Leave blank if opened before CY 2025.
-
Date Closed: Fill only if the account was closed during CY 2025. Leave blank if still open.
-
Highest balance: The highest balance at any point during CY 2025 (Jan 1 – Dec 31). Include the carrying balance on Jan 1 if no transaction that day.
-
Currency: All amounts in foreign currency, not converted to USD.
-
Interest earned: Gross amount credited in CY 2025 for each account. For accounts that provide interest accrual for periods that straddle the calendar year boundary, you will compute the accrued interest for the calendar year by simple daily proration.
-
One line per savings account, one line per deposit account.
-
Deposits opened and closed within CY 2025: Include them with both open and closed dates.
-
Seek clarifications: If you are unsure about something, ask for clarifications. Once you have been able to read all input files, think for a while and make sure that you have all the information you need. DON’T BLINDLY MAKE ASSUMPTIONS, seek clarification(s) instead. You can tell me what you intend to do, and ask me for confirmation.
-
Verify your work: Once you have been able to read all the input files, and received all the clarifications you need, you will compute the FBAR for CY 2025. You will save this as fbar-cy-2025.txt. Then, you will start all over again with a clean slate and attempt to redo your work. Use the same clarifications from the previous attempt but redo all of your work and save this as fbar-cy-2025-verify.txt. Then you will compare the two. I there is any difference, figure out which is correct and save the correct version as fbar-cy-2025.txt and delete the other file. You will continue to verify and reverify till you reach the point that you find no difference between the two attempts. You will then start fresh and generate fbar-cy-2025-final.txt. If fbar-cy-2025.txt matches fbar-cy-2025-final.txt, you are done. If not, start over.
-
Input format variance: Different banks have different formats. Don’t assume that two files, either from the same bank, or different banks will have the same format. Treat each file as its own unique snowflake. If you want to normalize the data into some intermediate format, you can do that.
-
Never combine data across accounts: Each account must have its own reporting. However, your input may show that accounts have relationships. Deposit interest may be credit to the deposit (interest compounding) or credited to a savings or checking account. While you must record the interest earned in the deposit against the deposit account, and the savings account may also earn interest, you don’t account the interest earned on the deposit in the interest earned in the savings account. But, the interest earned on a deposit that gets credited to a savings or checking account does count towards the highest balance in the account.
Input
Provide .csv bank statements. Emit one line per savings account, one line per fixed deposit. For savings accounts, fill the date opened if known. For fixed deposits, the date opened and closed are the dates of opening and closing the deposit. Some banks may provide xls files with the .csv extension. Some even password protect the xls files. Deal with it.








































I worked for many years with, and for 

le I was receiving mobile alerts that there was motion, I got no notification(s) on what the cause was. The expected behavior was that I would receive alerts on my mobile device, and explanations as email. For example, the alert would read “Motion detected, camera-5 <time>”. The explanation would be something like “NORMAL: camera-5 motion detected at <time> – timer activated light change”, “NORMAL: camera-3 motion detected at <time> – garage door closed”, or “WARNING: camera-4 motion detected at <time> – unknown pattern”.
yment, 
