BudgetLuma
Multi-currency

A multi-currency expense tracker that keeps your real rates.

Most apps silently replace the rate your bank actually charged with a generic reference rate. BudgetLuma stores yours, protects it with database-level triggers, and reuses it on every edit — until you explicitly change it.

  • 30 currencies with hourly reference rates
  • 870 active currency pairs
  • Both original and converted amounts stored
  • Custom rate to match your bank statement (Premium)
Download on the App Store

Free to start. No credit card.

Four pillars

Transparent multi-currency, not silent conversions.

Every conversion has a source, a provider, and a timestamp you can see.

01

30 currencies, refreshed hourly

Reference rates sourced from Frankfurter and refreshed every hour across a live coverage of 870 currency pairs. Conversions are computed server-side and stored with the transaction.

02

Original amount never lost

Every transaction keeps both the amount you entered and the converted value in the wallet’s base currency, with the rate used, its source, the provider, and the timestamp. Nothing is inferred.

03

Custom exchange rate (Premium)

Enter the real rate your bank or card applied. BudgetLuma stores it as the rate for that transaction — and database triggers protect it from being silently overwritten on later edits.

04

Display override (Premium)

View a wallet or the Insights screen in a different currency, without mutating any stored value. The underlying truth stays intact; only the lens changes.

Coverage

30 currencies, 870 live pairs.

Every code below is active in production and refreshed hourly.

EURUSDGBPJPYAUDBRLCADCHFCNYCZKDKKHKDHUFIDRILSINRISKKRWMXNMYRNOKNZDPHPPLNRONSEKSGDTHBTRYZAR

JPY, KRW, HUF and ISK are stored with 0 decimals; all others with 2. Reference rates are sourced from Frankfurter.

How it looks

Original in, converted beside — never swapped.

The transaction you enter in ¥ stays in ¥. The wallet total in € uses the rate that was applied the day you recorded it. On edit, you decide whether to keep or refresh the rate — nothing silent, nothing sneaky.

Transaction

Tokyo — Ramen dinner

Example

Original amount

¥ 1 850

Wallet base (EUR)

≈ € 11,72

Stored rate — source

1 EUR = 157.83 JPY — system reference (Frankfurter), 14 Jan 2026

Illustrative. Real transactions store the same fields exactly.

Multi-currency — questions answered honestly

Which 30 currencies are supported?

EUR, USD, GBP, JPY, AUD, BRL, CAD, CHF, CNY, CZK, DKK, HKD, HUF, IDR, ILS, INR, ISK, KRW, MXN, MYR, NOK, NZD, PHP, PLN, RON, SEK, SGD, THB, TRY and ZAR. JPY, KRW, HUF and ISK are stored with 0 decimals; all others with 2.

Are exchange rates real-time?

No. Reference rates are refreshed hourly from Frankfurter. They’re provided for informational purposes; BudgetLuma is not a currency exchange service. For a rate that matches exactly what your bank charged, use the Premium custom exchange rate on a transaction.

If I edit a transaction, do you silently change its exchange rate?

No. The stored rate is protected. On edit, you explicitly choose whether to keep the existing rate, auto-fetch a fresh reference rate, or enter a new custom rate. A bare amount edit on a custom-rated transaction preserves the custom rate.

What happens when I combine wallets with different base currencies?

Cross-wallet views in Insights use reference rates (not your custom rates) to combine wallets, and the UI labels this explicitly with an “≈” signal and a “Combined across N wallets · reference rates” note. You can always reconcile with your bank statement.

Is there a historical exchange-rate feature?

Not today. Rates are applied at transaction time and stored. Point-in-time historical lookups are on the backlog but not shipped. We don’t present unavailable features as if they exist.

Track what you spent. Not what an app guessed.

Free to start on iOS. Premium unlocks custom rates and display overrides.

Download on the App Store