Tracking 1099 business expenses on your Mac, without the cloud.
~9 min read · For solo workers who want tax-ready books and don't want a SaaS to own them
Why freelancer bookkeeping is harder than it should be
If you're a solo consultant, designer, developer, therapist, photographer, or any other 1099-issuing independent worker, your bookkeeping problem looks like this: between January and April you need to sort roughly 12 months of transactions across two or three accounts (business checking, business credit card, sometimes a personal card that has a few business expenses mixed in) into Schedule C categories you can hand to a tax preparer or type into TurboTax Self-Employed.
The job isn't conceptually hard. Sort, tag, total, export. But three things about how mainstream tools have evolved make it more painful than it has any right to be:
- They want your bank password.Most modern personal-finance apps log into your bank on your behalf via an aggregator (Plaid, Yodlee, Finicity). That means handing your bank credentials to a third party, and accepting that the aggregator now has read access to every account you connect. For a 1099 worker whose client list is partially deducible from their banking history, that's a meaningful disclosure.
- They charge per seat.Solo workers don't need five seats. Per-seat SaaS pricing is built for teams; for one person it's a tax on existing.
- They store the answer in someone else's cloud.The structured record of which client paid you what, when, and what you spent on whom now lives on a vendor's servers. That's a vendor you trust to keep your books, and a vendor with whom you've effectively shared your client roster.
None of these are deal-breakers on their own. Combined, they make the actually-simple bookkeeping job feel like a big surveillance commitment. Plenty of freelancers handle this by keeping a spreadsheet, which works but doesn't scale past 200-or-so transactions a year.
What you actually need
Reduced to the minimum set of capabilities, a freelancer needs:
- Multi-account import + reconciliation. You should be able to drop in statements from every account you used for business — checking, credit card, the occasional personal card — and confirm each one reconciles to the cent. If something is missing or duplicated, you want to find that in May, not in April's last week.
- Per-client and per-category tagging. Two tag axes, used together. Entity tells you whothe transaction was for (Client Acme, Client Beta, Personal, or just "Business"). Category tells you what kind of expense it was (Software, Travel, Meals, Office Supplies — typically aligned with Schedule C lines).
- Tags that stick. If you tag the AWS monthly bill as Business / Softwarein February, you don't want to do it again in March, April, or for the next three years. Mature personal-finance apps learn that.
- Search across years.The most common tax-time question is "what did I spend on X?" — across a year, sometimes across multiple years. Search needs to span everything you imported.
- Export. Whatever you build needs to hand off cleanly to your accountant, your tax software, or your spreadsheet. CSV is the lingua franca.
- Privacy you can verify. No bank passwords. No phoning home. No vendor lock-in. If the software vanishes tomorrow, your data is still readable and exportable.
That's it. Six capabilities. Notice what isn't on the list: receipt-photo OCR, mileage tracking, invoice generation, full general-ledger double-entry. Those are real needs — they just aren't the transactions-into-tax-categories problem this guide is about. We'll cover what to do about them at the end.
The 30-minute one-time setup
Done once, this is the foundation. Set aside a distraction-free half-hour.
Step 1: Pull last 12 months of statements
From each account's online portal, download the monthly PDFs for the last 12 calendar months. Most banks keep them under a section called Statements & Documents or similar. Save them somewhere you can find them (e.g. a single folder called ~/Documents/Bookkeeping/2026/).
Pulling 12 months gives you a full annual cycle for tax time. If you've been freelancing longer, pull whatever feels reasonable — there's no penalty for more.
Step 2: Import each statement and verify reconciliation
Drop the PDFs into CentProof one at a time. Each statement gets parsed and reconciled — that is, the opening balance plus the parsed transactions should equal the closing balance the bank prints, to the cent.
If a statement reconciles cleanly, commit it. If it doesn't, look at the diff. The two common causes: (a) the parser missed a row (rare on supported banks but possible on unusual layouts), and (b) the statement has a credit or adjustment that landed in a category the parser didn't recognize. Either way, you want to know now rather than in April.
This is the step that's easy to skip and is the most valuable. The whole point of doing bookkeeping is that the numbers add up. If they don't add up, the categorization that follows is built on sand.
Step 3: Define your Entities
An Entity in this workflow is "who is this for." Solo freelancers typically need a small, stable list:
Business ← all general business expenses
Personal ← personal spending you don't want mixed in
Client: Acme ← billable-or-deductible expense for Client Acme
Client: Beta ← same, for Client Beta
…You only need per-client Entities if you (a) re-bill expenses to clients, or (b) want to know how much each client cost you to serve. If neither, two entities — Business and Personal — are enough.
Step 4: Define your Categories (Schedule C-aligned)
Categories in this workflow should match the buckets your tax form uses. For 1099 freelancers, that's typically Schedule C's expense lines. A workable starter list:
Advertising
Bank & Card Fees
Contractor Labor (1099 issued)
Insurance (business insurance only)
Legal & Professional
Meals (50%)
Office Expenses
Rent & Lease
Repairs & Maintenance
Software & Subscriptions
Supplies
Taxes & Licenses
Telephone & Internet
Travel
Utilities
Vehicle / Mileage (if not using mileage method)Don't over-engineer this. Fifteen categories is usually plenty. If you find yourself wanting a 16th, ask whether it would change anything on your tax return — if not, fold it into Office Expenses or Supplies and move on.
CentProof doesn't ship a pre-built Schedule C taxonomy (yet). You add categories yourself — the list above is a reasonable starting point. Copy it into the Categories screen, edit to your situation.
The 15-minute monthly workflow
Once setup is done, the monthly loop is simple. Do it on the same day every month — the 15th of the following month works well (statements are usually available by then).
- Download last month's statements from each account. Save into the same folder.
- Import into CentProof. Each statement parses and reconciles. If anything fails to reconcile, spend the five minutes to figure out why now.
- Review Smart Tagging suggestions. The app auto-applies tags it learned from past corrections (your AWS monthly bill auto-categorizes as Business / Software because you told it that two months ago). Confirm or correct.
- Tag the new merchants.Anything the app hasn't seen before lands in the Cleanup Inbox with no Entity / Category. Tag each one. Next month's same merchant will inherit.
- Skim Recurring Subscriptions. CentProof flags repeating charges; this is where you catch a software subscription that just bumped from $19 to $29 without telling you.
With practice, this is 10-15 minutes a month. Compare to the alternative (a 6-hour weekend in March staring at 12 months of transactions trying to remember what they were for).
The 1-hour tax-time workflow
Once a year, in January or February (after December statements are available), assemble what your tax preparer or tax software needs.
- Confirm all 12 months are imported and reconciled.A quick check; if you've done the monthly loop, this is just a sanity pass.
- Run a search per category, for the tax year. Filter by Entity = Business, Category = Software, date range = the whole year. The total at the bottom is your Schedule C Line 22 (or wherever Software lives on your form).
- Export to CSV. One export per category, or one combined export with the category column included — whichever your accountant or tax software prefers.
- Skim Anomaly Detection.The app flags unusual charges. This is the "wait, is this really business?" moment that catches mis-tagged personal spending before it becomes a deduction you can't defend in an audit.
- Hand off.The CSVs go to your tax preparer or into TurboTax Self-Employed's import flow.
If your preparer wants a single PDF report instead, run an export to PDF — the rows are source-linked back to the original statements so an auditor can trace any number back to its bank statement of origin.
Client billing and per-client P&L
If you re-bill expenses to clients, or want to know which clients are most profitable to serve, the per-client Entity tagging from Step 3 pays off here.
Filter by Entity = "Client: Acme" for the billing period. Run a Settlement Report — that's a report formatted for handing to the client as an itemized invoice of re-billable expenses. Export to PDF, attach to the invoice, send.
For a per-client profitability view, filter by Entity = "Client: Acme", group by Category, and total. You now know that Client Acme cost you $480 in Software attribution and $320 in Meals over the year — useful for deciding whether to raise their rate at renewal.
What CentProof doesn't do (and what to use instead)
Being honest about the boundaries matters. CentProof is the cash-flow and tax-categorization layer of a freelancer's books. It is not a complete accounting suite. Here's the gap list and reasonable alternatives:
- Receipt-photo OCR.CentProof reads bank/card PDFs, not photos of receipts. For receipts, keep a folder per year and shoot a quick photo at the point of sale (the iPhone Notes app or a paid tool like Hubdoc works). The PDF statements remain your source of truth for amount + merchant + date; receipts back up the "what was it for" question if the IRS ever asks.
- Mileage tracking. Use MileIQ, the built-in iPhone Activity log, or a paper notebook. Mileage is a separate IRS line and a separate workflow.
- Invoice generation.CentProof reads statements; it doesn't send invoices. Pair with Stripe Invoicing, Wave (free), or a Google Doc template — whatever you already use.
- Direct QuickBooks / Xero sync. CentProof exports to CSV, OFX, QFX, JSON, and PDF. If your accountant insists on QuickBooks Online, CentProof can be your privacy-preserving working copy and you sync to QBO at year end.
- Double-entry general-ledger accounting.If you have employees, multiple revenue streams, inventory, or accrual accounting needs, you've outgrown the statements-into-categories workflow. Move to FreshBooks, QuickBooks Online, or hire a bookkeeper. CentProof is built for the solo-worker phase.
For most 1099 freelancers — the "I have one or two clients, a business checking, a business card" phase that lasts years for a lot of people — this stack is sufficient. When your business outgrows it, you'll know.
What to do next
If you want to try this workflow with CentProof, the commitment is small: a Free Test Mode download, last month's statement from one of your accounts, and 10 minutes to confirm reconciliation works. If the reconciliation is clean and the parser handles your bank, the rest of the playbook above scales from there.
If you already have a workflow that works, the part of this guide that's most worth borrowing is the Entity + Category discipline: tag once, with stable names, and let the same tags ride forward. That single habit replaces the most painful part of tax-time bookkeeping no matter what tool you use.
Try the workflow for free
Free Test Mode handles 2 active statements + 5 lifetime imports — enough to verify reconciliation works on your bank before you commit to the workflow.