The ledger is old, well-understood software: a chart of accounts, a double-entry journal, invoices, bills, a profit and loss and a balance sheet. An agent builds that on SQLite in a weekend, and bank lines come in from the CSV or OFX files your bank already lets you download. What stays out of reach is the plumbing around it: live bank feeds, payroll and tax filings, sales-tax rates, and an accountant who can log straight into your books. If someone else does your taxes, ask them before you leave; if you do your own, the DIY version or GnuCash covers most of it.
Before you buildIf you send only a couple of invoices a month, QuickBooks Free or Wave's free Starter plan may already be enough.
Build me a personal bookkeeping app to replace QuickBooks Online. Requirements: - Node.js 22 + TypeScript: Fastify with server-rendered HTML and a little vanilla JS. `npm start` serves everything on http://localhost:4700. - Storage: better-sqlite3 in ./data/books.db. Real double-entry: every transaction is a journal entry whose lines sum to zero, amounts are integer cents. Seed a small-business chart of accounts that I can edit. - Bank import: CSV (map date, description and amount once per account and remember it) and OFX/QFX files (parse the STMTTRN blocks). Skip duplicates using a hash of date, amount and description. - Review queue for new bank lines: rules like "description contains AWS -> Software" run on import, plus manual category, split and transfer. - Invoices and bills: customers, vendors, line items, tax rate per line, PDF invoices with pdfkit, email through nodemailer (SMTP settings in .env), and "mark paid" posts the payment entry. - Reports for any date range: profit and loss, balance sheet, general ledger, trial balance and receivables aging, each exportable to CSV. - Reconcile an account against a statement balance, then lock that period. - Single user. No accounts, no telemetry, local-first. - Out of scope: live bank feeds, payroll, sales-tax filing, multi-currency. - README: setup, how to back up the .db file, and a plain note that this is not tax advice and an accountant should check the first year-end.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own QuickBooks Online.
Add a QuickBooks importer to the bookkeeping app in this folder. Requirements: - Take the .zip from QuickBooks Online Export data and read the General Ledger and Account List spreadsheets with the `xlsx` package. - Show a mapping from QuickBooks accounts to my chart of accounts and wait for my confirmation; create missing accounts on request. - Import every transaction as a journal entry tagged "imported", then compare the resulting trial balance with the QuickBooks one and list differences. - Running it twice must not duplicate entries. - Update the README with the export steps.
Add receipt matching to the bookkeeping app in this folder. Requirements: - Watch ./inbox for photos and PDFs of receipts. - Read the total and date with tesseract.js (PDFs with text: read the text directly) and suggest the bank line with the same amount within 5 days. - I confirm each match; the file moves to ./data/receipts/<year>/ and links to the transaction. - A report lists expenses over $75 that still have no receipt. - Update the README.
Add a year-end export to the bookkeeping app in this folder. Requirements: - A command `npm run yearend -- 2026` that writes ./exports/2026/ with the profit and loss, balance sheet, trial balance and general ledger as .xlsx (the `xlsx` package) and as PDF. - Include a list of reconciled accounts with their statement balances and a zip of linked receipts. - Lock the year after a successful export; unlocking asks for confirmation. - Update the README.
Most US bookkeepers and accountants work in QuickBooks, so owners who hand their books over at tax time pay to keep that hand-off easy. Bank feeds that categorize themselves and payroll in the same place keep it the default, even though yearly price rises are the most common complaint.
Estimate · Runs on your machine with nothing to pay for each month. The build is token usage on your agent plan. Live bank feeds through an aggregator would add a fee.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | — | 1 user, 1 bank connection, 2 invoices a month (unlimited with QuickBooks Payments), the top 3 reports. |
| Simple Start | $38 | — | 1 user plus 2 accountants; bank feeds, invoicing, bills with free ACH up to a monthly allotment, general business reports. |
| Essentials | $85 | — | 3 users plus 2 accountants; enhanced reports, employee time on invoices, 3 connected sales channels. |
| Plus | $140 | — | 5 users plus 2 accountants; budgets, inventory, project profitability, up to 40 classes and locations. |
| Advanced | $340 | — | 25 users plus 3 accountants; custom user permissions, workflow automation, Excel sync, batch invoices and expenses, priority support. |
QuickBooks Free tracks income and expenses with one bank connection, but allows only 2 invoices a month unless you take payments through QuickBooks Payments.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Live bank feeds that pull transactions on their own, Payroll, 1099 e-filing and sales-tax calculation.
About $38 a month on the Simple Start plan, $456 a year (checked 2026-10-13).
Live bank feeds that pull transactions on their own; Payroll, 1099 e-filing and sales-tax calculation; An accountant who can log in and fix entries directly; Receipt capture and the mobile app; Hundreds of app integrations and built-in card payments. If any of those matter to you, keep paying.
Yes: GnuCash (open source), Akaunting (free), Bigcapital (open source).