simplebanking

March 23, 2026 · View on GitHub

Platform Swift License Latest Release Stars

macOS menu bar app that shows your current account balance — no decimals, auto-refreshed.

Powered by YAXI Open Banking · PSD2 · Pure Swift · No Node.js

Download · Changelog · Contributing · Report a Bug


Screenshot

simplebanking — menu bar and transaction panel

Features

FeatureDetails
Live BalanceBooked balance directly in the menu bar (e.g. 1.234 €)
Transaction PanelRecent transactions with categories, merchant logos & financial health score
Calendar HeatmapMonthly spending/income heatmap, drill-down to daily transactions
Auto-RefreshConfigurable interval (default: every 4 h); manual refresh via menu
Any German BankWorks with all banks reachable via YAXI Open Banking (PSD2)
Setup WizardEnter IBAN — bank is discovered automatically
SCA SupportPush-TAN & OAuth redirect handled automatically
SecurityAES-256-GCM + PBKDF2 · master password in Keychain · Touch ID / Face ID
Auto-UpdateShips with Sparkle for silent over-the-air updates

Installation

  1. Go to Releases.
  2. Download simplebanking-<version>.dmg.
  3. Open the DMG, drag simplebanking.app to /Applications.
  4. Launch the app — a setup wizard guides you through connecting your bank.

Note: The app is notarized by Apple. If macOS still blocks it, right-click → Open.

Option B — Build from source

Requirements: macOS 13+, Xcode CLI tools, Swift 5.9+

# 1. Clone the repo
git clone https://github.com/klotzbrocken/simplebanking.git
cd simplebanking

# 2. Generate secrets (one-time setup — requires YAXI API credentials)
./make-secrets.sh "YOUR_YAXI_KEY_ID" "YOUR_YAXI_SECRET_BASE64"

# 3. Build an ad-hoc signed app bundle
./build-app.sh
# → output: SimpleBankingBuild/simplebanking.app

# 4. (Optional) Build + sign + notarize + DMG + appcast update
SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" \
NOTARY_PROFILE="simplebanking-notary" \
./sign-and-notarize.sh

No npm install, no Node.js runtime needed.


Architecture

Menu bar
  └─ Swift app (SwiftUI)
       └─ routex-client-swift (Swift Package)
            └─ YAXI Open Banking API
                 └─ Bank (PSD2)

Pure Swift — no embedded runtime, no JIT entitlement. Session tokens are stored in UserDefaults; credentials are AES-GCM encrypted at ~/Library/Application Support/simplebanking/credentials.json.


Security

  • Credentials encrypted with AES-GCM + PBKDF2-SHA256 (210,000 iterations)
  • Master password stored in macOS Keychain (kSecAttrAccessibleWhenUnlockedThisDeviceOnly)
  • Credentials file permissions: 600 (owner read/write only)
  • No credentials or IBAN written to log files
  • SQL injection protection via parameterised queries + read-only query guard
  • HTTPS for all API calls

Dependencies

PackagePurpose
routex-client-swiftYAXI Open Banking Swift SDK
GRDB.swiftLocal transaction database (SQLite)
SparkleAuto-update framework

Contributing

Contributions are welcome! Please read CONTRIBUTING.md before opening a pull request.


License

MIT — see LICENSE.