Expense tracker + people ledger
Know where your money went, and who owes you.
Hisaab tracks your expenses and keeps a precise lend/borrow ledger with friends and groups. It is built on a double-entry ledger, so every balance adds up and can be traced.
Features
Everything for everyday money
From a coffee to a shared trip, track it once and let the ledger keep everyone honest.
Expense tracking
Log spending in seconds, categorise it, and attach a receipt photo.
Lend & borrow ledger
Keep a running balance per person so you always know who owes whom.
Groups
Share costs with friends, flatmates or trips and settle up cleanly.
Budgets
Set limits per category and watch progress as you spend.
Recurring bills & EMI reminders
Never miss a rent, subscription or EMI due date.
Offline sync
Keep working without a connection; changes sync when you're back online.
Receipt uploads
Snap a receipt and store it securely with the entry, powered by Cloudinary.
Corrections
Mistakes happen. Fix an entry without breaking the history behind it.
Duplicate detection
Get warned before the same expense is recorded twice.
Data export
Your data is yours. Export it whenever you like.
Account deletion
Delete your account and data from inside the app.
Phone sign-in
Sign in with your phone number via Firebase. No passwords to remember.
How it works
A double-entry ledger, explained simply
The same idea accountants have used for centuries, applied to your pocket.
- 1
Every transaction has two sides
When Asha lends you money, it isn't just a number going up. Money moves from one place to another, so two entries are written together.
- 2
Debits always equal credits
Each transaction posts equal and opposite entries. If the totals don't match, the transaction is rejected, so balances can't silently drift.
- 3
Balances are derived, not edited
A person's balance is the sum of their entries. Nothing overwrites history, so every figure can be traced back to the entries behind it.
- 4
Corrections add, they don't erase
Fixing a mistake posts a reversing entry and a new one. You get the right answer and a clear audit trail.
| Account | Debit | Credit |
|---|---|---|
| Your cash | 100 | · |
| You owe Asha | · | 100 |
| Total | 100 | 100 |
Debits equal credits, so the transaction is balanced. Repaying Asha posts the opposite entries and brings what you owe back to zero.
App screens
A look at the app
Illustrative mockups with placeholder values. Real screenshots will replace them.
- HomeNet balance₹ 0,000You are owed ₹ 000You owe ₹ 000RecentGGroceriesToday− ₹ 000AAshaLent+ ₹ 000EElectricityBill− ₹ 000
Home
Balances at a glance
- People ledgerPeopleAAshaowes you₹ 000RRaviyou owe₹ 000MMeeraowes you₹ 000KKabirsettled₹ 0
People ledger
Who owes whom
- GroupsGroupsFlatmatesARMWeekend tripARMOffice lunchARM
Groups
Shared expenses
- BudgetsThis monthFood62%Transport35%Shopping88%Bills50%
Budgets
Category limits
- Bills & EMIUpcomingRRentMonthlyDueHHome loan EMIMonthlyDueSSubscriptionYearlyDue
Bills & EMI
Upcoming reminders
Tech stack
Built with proven tools
Backend
- NestJS 11
- Prisma
- PostgreSQL
- Double-entry ledger
- Swagger / OpenAPI docs
Mobile
- React Native 0.88 (bare)
- TypeScript
- React Navigation
- Animated UI
Services
- Firebase phone sign-in
- Cloudinary receipt uploads
Contract
- OpenAPI specification shared between backend and app
Architecture
How the pieces fit
A React Native client, a NestJS API described by an OpenAPI contract, and PostgreSQL behind Prisma.
Roadmap
Where things stand
Built
- Expenses, people ledger, groups, budgets
- Recurring bills & EMI reminders
- Offline sync & receipt uploads
- Corrections, duplicate detection, export, account deletion
Next
- Real app screenshots on this site
- Public walkthrough of the ledger design
- Release notes
Exploring
- Ideas are tracked in the GitHub repositories
Open source
Explore the code
Hisaab lives in separate repositories, tied together by an umbrella repo.