Home · Free tools · Monthly report generator

Monthly financial report generator

Drop a CSV or Excel export of transactions. You get a month-by-category table with row and column totals and the change from last month, ready to download as .xlsx. The columns are detected for you, and the file is read in this tab — nothing is uploaded.

Open your transactions

Drop a .csv or .xlsx export here, or click to choose

Doing this every month? Do it once in TableDI 2, save it as a job, and run it again next month. Download TableDI 2 free

Nothing is uploaded. The file is read by JavaScript in this tab and never leaves your computer — no server sees it, and closing the tab throws it away.

How to build a monthly financial report from a transaction export

  1. Export the transactions. CSV or XLSX from your bank, card, accounting tool or spreadsheet. One row per transaction, with a date and an amount.
  2. Drop it in. The date, amount and grouping columns are detected from the data and the header names. Change any of them from the dropdowns.
  3. Read the report. A month-by-category table with row and column totals, plus the change from the previous month. Rows that could not be read are counted rather than silently dropped.
  4. Take it away. Download as .xlsx or CSV, or copy it as a Markdown table.

What it does with your columns

A transaction export has one row per transaction. A report has one row per category and one column per month. Getting from the first to the second is a pivot, and pivots are where people lose an hour to argument dialogs.

This page picks the date, amount and grouping columns by looking at the data as well as the header names — a column of things that parse as dates is a date column whatever it is called. All three are dropdowns, so a wrong guess costs one click.

The formats it reads without being told

  • Amounts: $1,234.56, 1.234,56 (European), (89.00) for a negative, a plain minus sign, and currency symbols anywhere in the cell.
  • Dates: 2026-03-15, 15/03/2026, 03/15/2026, Mar 15, 2026, 15 March 2026, and real Excel date cells.
  • The ambiguous one: 03/04/2026 is March in the US and April almost everywhere else. There is no way to tell from the number, so there is a checkbox. Get it wrong and your months shuffle — the tell is transactions landing in a month you know had none.

Rows it could not read are counted, not hidden

If 40 of 900 rows had no readable date, the report says so above the table. That matters more than it sounds: a summary that silently drops a tenth of the data looks exactly like a correct one. Blank rows, subtotal rows and header rows repeated mid-file are the usual causes, and they are usually fine to drop — but you should be the one deciding that.

What this is not

  • Not accounting. There is no double entry, no chart of accounts, no reconciliation and no audit trail. It sums a column by month and by group.
  • Not a categorizer. It groups by a column you already have. If your export has no category column, you get one row — still a useful monthly total, but the grouping has to come from somewhere.
  • Not a chart. The numbers come out as a table you can chart wherever you like.

When the report is monthly, the tool should be too

Re-dropping the same export every month is the tell that a browser tab is the wrong home for this. TableDI 2 is a desktop app for file work you redo every period: it keeps your sources, rules and delivery as a job, so next month you drop in the new files and run it again. Everything runs on your own machine. Pulling several monthly files into one summary is one of the jobs it is built for, and the delivery is an Excel file with the summary, the detail and the exceptions on separate sheets.

Questions people ask

What file do I need to start?

A CSV or Excel export with one row per transaction, containing at least a date and an amount. A category, account or description column makes the report far more useful but is optional. Almost every bank, card issuer and accounting tool exports this shape.

Are my transactions uploaded anywhere?

No. The file is read by JavaScript in this tab and the report is calculated on your machine. No request carrying your data leaves the page — the only counters it loads are static.cloudflareinsights.com and this site's own /_vercel/insights — and you can watch the network tab while you use it. Close the tab and the data is gone.

My months came out wrong.

Almost always the day/month order. 03/04/2026 is March 4 in the US and April 3 elsewhere; tick "Dates are day/month/year" and the report re-runs. The tell is transactions appearing in a month you know was empty.

Can it group by something other than category?

Yes — the "Group by" dropdown takes any column. Account, merchant, cost center, project and department are all common. Choose "everything in one row" for a plain monthly total.

Why is a row missing from the report?

Rows without a readable date or a readable amount are left out, and the count of both is shown above the table. Subtotal lines, blank separator rows and a header repeated mid-file are the usual causes.

Doing this every month?

In TableDI 2 you do it once, then save it as a job. Next month you drop in the new files and run it again.

macOS, Apple silicon and Intel; Windows is in progress (what to do meanwhile). Free is not a trial — no account, no card.

Last reviewed 2026-09-11 by the TableDI team. Something wrong on this page? Tell us — it is one inbox, read by the people who build TableDI.