Bank and card CSV into a budget ledger
Drop the CSV or Excel files your bank and your card let you download. A preview shows how every row would be read; only when you press Add to the ledger do the rows go into it. Rows that are already there are not added again, money moved between your own accounts and card repayments are not counted as spending, and every amount keeps every digit. It all runs in your browser: no file is uploaded, and none of your rows is kept after you close the page. Set monthly spending targets by currency and category, then compare them with recorded spending less refunds.
Budget Import
or drop them here. Files stay on this device.
- Runs on your deviceNo upload. Files stay in your browser.
- Free, no accountNo sign-up. Kept in this browser only: your monthly targets (month, currency, category and amount), and only once you tick Keep my monthly targets in this browser; untick it and what was kept is removed. Your statements, their rows and your account names are never kept. Limits: statement files up to 20 MB and 100,000 rows each, with descriptions of up to 500 characters; a ledger of up to 200,000 rows; a saved ledger file of up to 64 MB.
- FormatsCSV statements (comma, semicolon, tab or pipe separated) or Excel workbooks (.xlsx) in; a ledger CSV, a report CSV and a ledger file (JSON) out
- Works onCurrent Chrome, Edge, Firefox and Safari, desktop and mobile.
How it works
- Choose or drop the CSV or Excel files of your accounts (for a workbook with several worksheets, choose the worksheet). For each, name the account, check its currency (the one the file names or, when it names none, the one of your device's time zone, SGD in Singapore, unless the amounts rule it out - written with a decimal comma, or with a $, ¥ or kr that currency does not use - or the file names several: then the page asks you to choose) and check the columns in the preview: the date, the description and the amounts. A newer export of an account already in the ledger is offered to that account.
- Press Add to the ledger. Then set categories on the rows, write rules for descriptions that come back every month, split a row over categories, and separate a transfer that is not one.
- Type the balances of the bank's statement to check an account, then press Download the ledger for the ledger, the report and the ledger file that continues next month.
Questions
Which files does it read?
CSV files as banks and card issuers export them: separated by commas, semicolons, tabs or pipes (found from the file, and there is a choice when that goes wrong), with the amounts in one signed column or in two columns (money going out and money coming in). Lines of the bank's own notes above the column names are passed over. Text in UTF-8, UTF-16, Windows-1252, Shift_JIS, GB18030, Big5 and EUC-KR is read. Excel workbooks (.xlsx) are read too: choose the worksheet when asked, and its saved cell values are read, each number as Excel shows it (to 15 significant digits, so a -85.4 stays -85.4); formulas are not recalculated, so recalculate and save in Excel first if a result is missing. It does not read PDF statements, OFX or QIF files, or older Excel files (.xls): save those as .xlsx or CSV first.
How do I know the columns were read correctly?
Before anything is added, the preview shows the first rows as the ledger would hold them, counts the rows that are new, already there and not readable, and lists the rows it cannot read with the reason of each (the first 50, and how many more there are). Change a column, the order of the dates, the decimal mark or the sign, and the preview follows. Nothing reaches the ledger until you press Add to the ledger. Rows that cannot be read stop the import unless you tick the box that leaves them out, and the ledger records how many were left out.
What happens when I add the same file twice?
Nothing is added. The rows of a statement are matched one to one against the rows its account already holds: first rows that are the same in every way, then rows with the same reference of the bank and the same amount (the bank may post them with other words or on another day), then, where one side has no reference, rows with the same date, amount and description. Each row already there answers for one new row at most, so two coffees of the same price on the same day stay two and a third is new, a purchase and its fee that share one reference stay two, and a later export that overlaps an earlier one adds only what is new. Such an export is offered to the account it repeats rows of (at least two, and at least half of its rows in the days that account holds), and the page says so; choose A new account when it is another account's. The preview says for each row why it is already there. If a file was added before and would now add rows because other columns or another account are chosen, the page says so and asks first.
How are transfers and card repayments handled?
Money that leaves one of your accounts and arrives in another with the same amount, in the same currency and within 3 days, is a transfer; when it arrives on a credit card it is a card repayment. Both sides are left out of spending and of income, so the purchases on the card count once and the payment of the card bill does not count again. Every pair is listed and can be separated. Money paid into a card without the other side in the ledger is taken as a repayment and listed for you to check: mark it as a refund if it is one. With the statement of one account alone there is no other side to pair: rows whose descriptions say they move money to or from your own savings or pay a credit card (TRANSFER TO SAVINGS, CREDIT CARD PAYMENT) are listed, and one press leaves them all out of spending and income. Nothing changes until you press it, each row can be changed on its own afterwards, and a statement of the other account added later pairs them.
How exact are the amounts?
Exact. Every amount is held as a whole number of the currency's smallest unit: cents for SGD, USD or EUR, whole yen for JPY, thousandths for KWD. Nothing is a floating-point number and nothing is rounded. An amount with more decimals than its currency has (12.345 in SGD, 1,234.5 in JPY) is not read and is listed with the reason. Sums are made per currency; amounts in different currencies are never added together, because this page has no exchange rates.
Can I split one row over several categories?
Yes. Press Split on the row and give each part a category and an amount. The parts must add up to the row exactly; while anything is left over or too much is assigned, the split cannot be applied and the page shows the difference. Put the rest here fills a part with what is left.
How does checking against the statement work?
Choose the account and type the balance the bank shows before the first row and after the last; for a credit card, the amounts owed. The page adds the rows of the ledger to the first figure; for a credit card it works in amounts owed, so money going out raises the amount owed and money coming in lowers it. It says the account agrees only when the result equals the second figure exactly; otherwise it shows the difference, which usually means a row is missing, is there twice or was read wrongly. A first and last day limit the check to one statement.
Where is my ledger kept?
In this page only, while it is open. Nothing is uploaded, and no row of your statements, nor any of their amounts, descriptions or account names, is stored in the browser, so closing or reloading the page loses the ledger. Download the ledger file (JSON) and open it here next time to continue. Your monthly targets are the one exception, and only if you tick Keep my monthly targets in this browser: then the targets (month, currency, category and amount) are kept in this browser, on this device, and are there again when you come back. They are never sent anywhere and no other device sees them; untick the box and they are removed. On a computer you share, leave it unticked. The ledger does not need the statement files once their rows are added: take a file off the list, or delete it, and the rows stay and can be downloaded. The ledger, the report and the monthly targets download as UTF-8 CSV files with a byte order mark, so Excel opens them with accented letters and Chinese or Japanese descriptions intact, and a text that starts with =, +, - or @ is kept as text, never run as a formula.
What does Start again do?
It takes every statement off the list and empties the ledger. Undo brings the ledger back. Undo takes back up to 20 changes, one at a time: statements added or taken back, kinds, categories, splits, rules and pairs. The balances typed for a check are not steps of Undo; they stay as typed.
What does it not do?
It does not connect to a bank, and it never asks for a banking password. It has no exchange rates, no savings goals, no accounts shared with other people and no sync between devices. Categories come from your own choices and rules, not from a guess by a model. It is not tax or investment advice.
Does it work offline?
Once the page has loaded, yes. Nothing is fetched while you work.
How do monthly budgets work?
Choose a month, currency and category (or All spending), enter a non-negative target and save it on this page. Recorded spending less refunds is compared with the target; transfers and repayments are excluded. Overall and category targets overlap and are shown separately, never added together. The figures cover only the rows you imported. Targets are included in the downloaded ledger file and a separate CSV, and are kept in this browser only if you tick Keep my monthly targets in this browser. Older ledger files can still be opened.
Is my file uploaded?
No. The page loads a small script into your browser and every operation runs on your device. You can check this yourself in the browser's network panel: after the page has loaded there are no upload requests. Closing the tab discards the file.
Do I need an account or to pay?
No. These basic tools are free and store nothing on our servers. The only limits are the tool's own: statement files up to 20 MB and 100,000 rows each, with descriptions of up to 500 characters; a ledger of up to 200,000 rows; a saved ledger file of up to 64 MB. Within them, the practical limit is your device's memory.
What does this page keep in my browser?
Of what you open or type, only what you chose to keep: your monthly targets (month, currency, category and amount), and only once you tick Keep my monthly targets in this browser; untick it and what was kept is removed. Your statements, their rows and your account names are never kept. While the tab is open, the tool pages keep a short list of the steps taken in it, in the tab's session storage: the step (page opened, started, succeeded, first success, used again or failed), the tool's name, the time, how many files were used and, for a failure, an error code; never a file name, the contents of a file or your text. It holds at most the latest 200 steps, and the browser deletes it when the tab closes. The page never sends it. Where a Report a problem button is shown, you can attach the last 20 steps to your report; nothing is attached unless you tick that box. In local storage the page keeps only choices you made: a Light or Dark theme until you choose System again, the language you picked with the EN / 中文 switch if it differs from your browser's language, and this tool in your recently used list if you switched that list on at the tools page.
Questions or problems
Found a problem or missing feature? Tell us. Please describe the steps; do not send confidential data.