If you freelance or run a tiny shop, you often have a bank CSV that is "almost" useful — until tax time, a client ask, or a bookkeeper wants categories.
Here is the workflow I use when someone sends a bank or CSV export and wants a monthly category sheet back in about a day.
What "good enough" looks like
- One row per transaction
- Date, payee, amount, category, and a short note
- Income and expense separated (or signed consistently)
- Category totals that a human can trust
Intake checklist
- The CSV or bank export (or a screenshot dump if that is all they have)
- The month or date range
- Preferred categories (software, meals, contractors, ads, transfer, other)
- Which transfers/payroll rows to exclude
- Currency and whether refunds should be negative expenses or income
The pass order that saves time
- Normalize headers map Date / Description / Amount into one schema.
- Drop noise — internal transfers, card payments that double-count, opening balances.
- Normalize payees — "AMZN MKTP", "Amazon.com", "AMAZON DIGITAL" become one payee where it helps.
- Categorize in one pass — freeze the category list before you start.
- Reconcile — sheet total vs statement ending balance or period net; spot-check five rows.
Spreadsheet columns that work
| date | payee | amount | type | category | account | note | source_row |
|---|
Keep source_row so you can defend any line later.
Common traps
- Transfers that look like income
- Refunds booked as positive expenses
- Pending vs posted duplicates
- Fees buried in description text with $0 amount columns
- Multi-currency rows with no FX note
Soft handoff
When the sheet is done, send:
- The spreadsheet
- Totals by category for the period
- A short list of rows you could not classify confidently
That is the whole job. No fancy stack required.
I do this as a 24-hour DFY service for freelancers and small businesses ($12 for a bank/CSV → monthly category sheet). Shop: https://brittanybonds.gumroad.com/l/ujamx — code ADMIN12 for $2 off. Full catalog: https://brittanybonds.gumroad.com/ and https://brittany-bonds.github.io/
Top comments (0)