// the find
arrobalytics/django-ledger
Django Ledger is a double entry accounting system and financial analysis engine built on the Django Web Framework.
Django Ledger is a double-entry bookkeeping system built as a reusable Django app. It covers the full accounting stack — chart of accounts, journal entries, invoices, bills, purchase orders, bank accounts, and all three financial statements. It's aimed at Django developers who need to embed accounting into a business application rather than integrate with an external service like QuickBooks.
The domain model is properly structured around double-entry rules — debits and credits are enforced at the transaction level, not bolted on as an afterthought. OFX/QFX import is a meaningful differentiator for anyone building bank reconciliation workflows. The multi-tenancy model via 'entities' means you can run books for multiple companies in a single Django instance without schema gymnastics. The IO layer (io_core, io_middleware) is a real abstraction over the transaction aggregation logic, not just raw ORM queries.
At 1,351 stars and 323 forks it has real users, but the test suite appears thin relative to the surface area — accounting bugs that slip through are exactly the kind that destroy trust and are hard to debug post-hoc. The documentation site exists but the in-code docstrings are sparse, which makes auditing the accounting logic difficult; you basically have to trust the migration history and hope the chart of accounts defaults are correct for your jurisdiction. No multi-currency support is a hard wall for anything beyond US-centric single-currency use. The UI is built on Bulma with a bundled JS blob and bespoke webpack config — if you're not using Bulma elsewhere, you're carrying that CSS weight and fighting the templates any time you try to customize.