Personal Finance

Every part of your money, tracked in one system you actually own

A self-hosted finance app built for how Indian money actually moves - SIPs, family lending, EMIs, and rent - with an AI receipt scanner that turns a photo into a logged transaction.

Most finance apps we tried were built for someone else's financial life. They were either too generic to be useful, too India-agnostic to handle SIPs, family lending, or fuel surcharge on credit cards, locked behind a subscription, or storing our data on someone else's server. So we built our own - self-hosted, India-first, and free to run.

What It Is

Personal Finance is a self-hosted PHP web app that runs on ordinary shared cPanel hosting. It's mobile-first, installs as a Progressive Web App straight to a home screen, sits behind a PIN lock, and keeps every record in a private MySQL database - no cloud sync, no third-party storage, no vendor deciding what happens to the data next.

The stack is deliberately plain: vanilla PHP 8 with no framework, PDO for MySQL, zero npm dependencies, pure CSS, and a custom SMTP mailer with no external library. Nothing here depends on a service that could raise its price or shut down.

AI Receipt Scanner

The fastest way to lose the habit of tracking spending is friction at the point of purchase. The AI Receipt Scanner removes almost all of it: photograph or upload a receipt, and the AI reads the image directly - date, total amount, merchant name, and individual line items - then pre-fills the transaction form. Review it, adjust anything that needs it, and save. What used to be a minute of manual typing per purchase becomes a five-second confirmation.

It's built to handle the messiness of real receipts - faded thermal paper, angled photos, handwritten totals - and it errs on the side of asking for a quick review rather than silently guessing wrong. Nothing posts to an account until it's confirmed, so a misread merchant name or total never quietly corrupts the ledger.

More AI, Working Quietly in the Background

  • Category suggestions. Based on merchant name and past entries, the app suggests a category and subcategory for new transactions instead of leaving every field blank.
  • Narrative daily summaries. The automated daily spending email doesn't just dump numbers - it includes a short, plain-language summary of where yesterday's money went, not just a category table.
  • Merchant normalisation. Receipt and CSV-import merchant names get cleaned up automatically, so "SWIGGY*BLR0123" and "Swiggy Bangalore" don't end up as two different entities in the spending breakdown.

Accounts & Net Worth

  • Multiple account types - savings, current, credit cards, cash, wallet - plus fully custom types you define yourself
  • Live balances computed from the actual transaction history, not a stored number that quietly drifts out of sync
  • Dashboard summary tiles showing total assets, liabilities, and net position at a glance

Transactions

  • Add income, expense, or transfers between accounts in seconds, with a quick-add widget right on the dashboard
  • Every transaction attaches to a contact, category, subcategory, and payment method
  • Transfers auto-name themselves with the real account ("Transfer to HDFC Savings," not "Transfer to account #3")
  • One filterable list across every account, plus a calendar view with per-day drill-down

Analytics & Budgets

Spending breaks down by category and subcategory, with a 12-month income-vs-expense trend, account-wise spending, day-of-week patterns, and a daily expense heat chart. Everything can be filtered by date range, category, subcategory, or purchase source. Categories like internal transfers or refunds can be flagged out of analytics entirely, and the app distinguishes real earnings - salary, freelance income - from pass-through money that isn't actually yours to spend.

Budgets are set at the category or subcategory level, with visual progress bars and automated email alerts at 80% and again at 100% of a budget - each firing at most once per month, so it warns without becoming noise.

Credit Cards & Loans

Credit cards track billing cycle, due date, credit limit, and fuel surcharge rate, with the outstanding balance calculated live from real transactions instead of manually re-entered each month. Statement snapshots, EMI plans, a 30-day upcoming EMI schedule on the dashboard, and an automated email three days before each due date round it out.

Loans - home, vehicle, personal, or anything else - get a full EMI schedule with pay-off tracking, the ability to record prior payments when migrating an existing loan, and the option to link a loan directly to a lending record for the case where you borrowed money and re-lent it to someone else.

Lending, Borrowing & Investments

Money lent to contacts and money borrowed from contacts are tracked separately, each with partial repayment history and optional automatic email notifications to the contact when a repayment is recorded - a small feature that matters a lot for the very Indian pattern of informal family lending.

On the investment side, a portfolio of mutual funds, stocks, FDs, or anything else supports buy/sell transactions per holding, a portfolio summary of invested amount, current value, and gain or loss, and SIP schedules with upcoming installment reminders.

Rental Management

On the landlord side: track properties, tenants, and contracts with rent amount and dates, record rent, maintenance, and other payments, and send email receipts to tenants automatically on payment. On the tenant side: track the home you live in, with advance, monthly rent, maintenance, electricity, and deposit-refund payments recorded against a full expense history per property.

Recurring Transactions & Bank Import

Recurring transactions are template-based - name, amount, account, category, and frequency, with monthly items pinnable to a specific day of the month. When one comes due, it lands in an approval queue rather than posting itself automatically, so you review, edit, or skip a cycle without ever losing the schedule or getting a surprise entry.

Bank statement CSV imports work the same way: upload a file, the parser maps columns to transaction fields, and every row goes into a staging queue for individual approval. Nothing is auto-committed.

Reminders, Notes & Reports

A simple reminder system flags upcoming payments and due dates, and a built-in notepad holds financial notes and plans without needing a separate app. On-demand email reports cover any date range, and an automated daily report goes out by cron with yesterday's totals and category breakdown.

Automation

Two cron jobs keep the app running itself: a daily report at 8 AM emailing yesterday's spending summary by category, and an alerts job at 9 AM that checks every budget category and every credit card due date, sending warnings before thresholds are breached. A deduplication log ensures each alert fires exactly once per cycle - no repeat spam if the job runs more than expected.

Security

The entire app sits behind a PIN lock with a configurable session timeout, and every record lives on our own server and database - no cloud sync, no third-party storage, nothing leaving our control.

Why Self-Hosted

  • Privacy - financial data stays on our own server, not someone else's cloud
  • Cost - shared cPanel hosting runs about ₹1,000/year, with no subscription on top
  • Control - features get shaped around real Indian financial patterns (SIPs, fuel surcharge, family lending) instead of waiting on a vendor's roadmap
  • No lock-in - it's plain PHP and MySQL, portable to any host that runs both

What's Next

On the roadmap: a net-worth tracker over time, an investment return calculator, WhatsApp alerts alongside email, and multi-currency support.

Get in touch if you'd like to hear more about how it works or where it's headed.