ngenohkevin 4e58bd8a8b v1.4.1: own-account transfers + Fuliza limit tracking
Marking a recipient as 'my own account' reclassifies its transactions
into a new transfer category excluded from all spending figures —
bank/card top-ups are moved money, not spending.

Fuliza coverage: accept the dedicated FULIZA sender id in the receiver
and both importers (borrows were going untracked while repayments were
captured), capture the available Fuliza limit from any SMS carrying it,
record borrow interest as a fee, and surface an outstanding/available
card on Home.

DB v3->v4: additive ALTER TABLEs only (categories.isTransfer,
transactions.fulizaLimit) + idempotent seed of the My Accounts category.
2026-06-07 15:57:40 +03:00
2026-05-16 13:26:22 +03:00

Ledga

M-Pesa spending tracker for Android. Automatically reads M-Pesa SMS confirmations to track your spending — zero manual entry.

Download

Download the latest APK from Releases.

Install directly on your Android phone (no Play Store needed). The app checks for updates automatically.

Features

Automatic SMS Tracking

  • Reads M-Pesa SMS in real-time via BroadcastReceiver
  • Supports 17 transaction types: Send Money, Buy Goods, Pay Bill, Withdraw (Agent/ATM), Deposit, Received, Airtime (Self/Other), M-Pesa Global, Fuliza (Borrow/Repayment/Reversal), M-Shwari, KCB M-Pesa, Reversal
  • Import existing SMS history on first launch
  • Stores raw SMS for future parser improvements

Smart Categorization

  • 13 default categories: Groceries, Transport, Bills, Airtime, Food, Send Money, Received, Withdrawal, Deposit, Shopping, International, Savings & Loans, Other
  • Auto-categorizes by merchant name and paybill/till number
  • Pre-loaded rules for common merchants (Naivas, KPLC, Uber, etc.)
  • Tap any transaction to re-categorize

Home Dashboard

  • Current M-Pesa balance (from last transaction)
  • Monthly spending total with fees breakdown
  • Animated donut chart by category
  • Period selector: Today / This Week / Month
  • Recent transactions feed

Transactions

  • Grouped by day with search and filters
  • Filter by type: All, Sent, Received, Bills, Goods, Withdraw
  • Transaction detail bottom sheet with full info
  • One-tap re-categorization
  • Daily spending bar chart (Vico)
  • Category breakdown with color indicators
  • Top 5 merchants by spending
  • Transaction fees summary
  • Period selector: 7D / 30D / 90D / 1Y

Budget Tracking

  • Set overall monthly budget
  • Progress bars with color coding (green/warning/red)
  • Per-category budget support

Notifications

  • Daily spending summary (default 8 PM)
  • Weekly summary (Sunday evening)
  • Budget warning at 80% and exceeded at 100%
  • Large transaction alerts (configurable threshold)
  • All toggleable in settings

Backup & Export

  • Google Drive: Auto-backup to app data folder, restore on fresh install
  • Manual Export: ZIP file with transactions.csv (Excel-friendly) + data.json (full restore)
  • Manual Import: Restore from exported ZIP
  • Share exports via WhatsApp, email, Bluetooth

Self-Update

  • Checks GitHub Releases on launch (max once per day)
  • Download and install updates directly from the app

Customization

  • Theme: System / Light / Dark
  • Font size: System Default / Small / Medium / Large / Extra Large
  • M-Pesa green primary color with Material 3

Tech Stack

Component Technology
Language Kotlin
UI Jetpack Compose + Material 3
Database Room (SQLite)
DI Hilt
Settings Jetpack DataStore
Charts Vico
Background WorkManager + BroadcastReceiver
Backup Google Drive API
Navigation Navigation Compose (type-safe routes)
Build Gradle (Kotlin DSL)

Requirements

  • Android 8.0+ (API 26)
  • SMS permission (to read M-Pesa messages)
  • Notification permission (Android 13+, for summaries and alerts)

Privacy

All data stays on your device. No server, no accounts, no analytics, no tracking. Google Drive backup uses the app-specific folder — invisible to other apps and only accessible by Ledga.

Building

# Debug
./gradlew assembleDebug

# Release (requires keystore)
./gradlew assembleRelease

# Tests
./gradlew testDebugUnitTest

Release

Tag a version to trigger the CI/CD pipeline:

git tag v1.0.0
git push origin v1.0.0

GitHub Actions builds the signed APK and creates a release automatically.

License

Private — for personal/family use.

S
Description
No description provided
Readme
416 KiB
Languages
Kotlin 99.4%
Python 0.6%