← all projects

ledger-core

A double-entry accounting ledger for Kotlin Multiplatform — balanced journal entries, idempotent postings, currency-safe money.

View on GitHub ↗Kotlinupdated 4d ago

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