← all projects
ledger-core
A double-entry accounting ledger for Kotlin Multiplatform — balanced journal entries, idempotent postings, currency-safe money.
KotlinKMP
High-level design
A KMP library modeling money the way an accountant would: every transaction is a balanced journal entry, not a single debit floating in a table.
Money
currency-safe value type — no raw floating point for amounts
↓
JournalEntry
a set of balanced postings (debits == credits) or the entry is rejected
↓
Ledger
append-only store of confirmed entries, exposes balance-as-of queries
Low-level design
12 tests, running on both JVM and iOS (Kotlin/Native) targets.
- –Postings are idempotent by a caller-supplied key — replaying the same posting twice is a no-op, not a double-count
- –Balance validation happens at entry-construction time, not as a post-hoc reconciliation job