Case study 10 / 26
MultiPaisa
Double-entry company accounting across NPR, AED, INR, SAR and USD — every line kept in its original currency and the base currency at the historical rate.
- Status
- Working build
- Domain
- web · security
- Source of claims
- Private repository README (reviewed). Source and deployment are not public.
A financial management system where each bank account has one currency, every journal line stores original and base amounts at the rate on the transaction date, posted history is immutable, and FX gains and losses are calculated rather than estimated.
01/The problem
A company with bank accounts in five currencies needs books that balance in one. Converting at today's rate rewrites history; mixing currencies hides FX gains and losses.
02/The system
A financial management system where each bank account has one currency, every journal line stores original and base amounts at the rate on the transaction date, posted history is immutable, and FX gains and losses are calculated rather than estimated.
03/Scope
- 01Double-entry journal with a draft → pending → posted → reversed lifecycle; an entry is rejected unless base debits equal base credits.
- 02An exchange-rate engine with pluggable providers, scheduled sync, manual overrides and rate resolution direct → inverse → cross via USD/EUR — never today's rate for a historical date.
- 03Cross-currency transfers with fees, bank rate versus market rate and realised FX difference; unrealised revaluation as of any date.
- 04Trial balance, P&L, balance sheet, cash position and general ledger, viewable in any currency, with CSV, Excel and PDF export.
- 05RBAC with 7 roles and 16 permissions, per-request company scoping and an audit log.
04/Engineering
Posted means permanent
Posted entries are immutable; corrections are reversals, so the audit trail is the ledger itself.
Rates carry their source
Each historical rate records where it came from, so any converted figure can be traced back.
05/Interface
Interface screenshots of this commercial product are not public. The visual above is an abstract representation of its modules — not the product itself.
06/Tech stack
- FastAPI
- Python 3.12
- SQLAlchemy 2
- Alembic
- Pydantic v2
- PostgreSQL 16
- Next.js 15
- React 19
- TanStack Query
- Recharts
07/Result
Verified outcomes
- Runs end to end with Docker Compose and a seeded demo company; test suite runs against a dedicated PostgreSQL database.
08/Links
Private commercial codebase — no public links.
Next case study
TalentSentinel →