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.

  • 50 currencies with hourly reference rates
  • Refreshed hourly from Frankfurter + ExchangeRate-API
  • 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

50 currencies, refreshed hourly

Reference rates sourced from Frankfurter and ExchangeRate-API and refreshed every hour. 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

50 world currencies, refreshed hourly.

Every code below is active in production and refreshed hourly.

EURUSDGBPJPYAUDBRLCADCHFCNYCZKDKKHKDHUFIDRILSINRISKKRWMXNMYRNOKNZDPHPPLNRONSEKSGDTHBTRYZARAEDCLPCOPDZDEGPGHSKESKWDMADNGNPENPKRQARSARTNDTWDUAHVNDXAFXOF

JPY, KRW, HUF, ISK, CLP, VND, XAF and XOF are stored with 0 decimals; KWD and TND with 3; all others with 2. Reference rates are sourced from Frankfurter and ExchangeRate-API.

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 50 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, ZAR, AED, CLP, COP, DZD, EGP, GHS, KES, KWD, MAD, NGN, PEN, PKR, QAR, SAR, TND, TWD, UAH, VND, XAF and XOF. JPY, KRW, HUF, ISK, CLP, VND, XAF and XOF are stored with 0 decimals; KWD and TND with 3; all others with 2.

Are exchange rates real-time?

No. Reference rates are refreshed hourly from Frankfurter and ExchangeRate-API. 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