Around 165 currencies

Balances move. History does not.

Every transaction records the exchange rate in force on the day it happened, so last March's dinner still costs what it cost. Balances convert at today's rate, because that is what they are worth today. The two questions are different, and the app answers them differently.

~165 currenciesHistorical ratesReversible switching
Currencies

REPORTING CURRENCY

USD · US Dollar

Rates as of 7 Aug 2026

Held in other currencies

AED · Emirates NBD $5,444.95
1 USD = 3.6725 AED AED 20,000.00
INR · HDFC Savings $3,012.05
1 USD = 83.1000 INR ₹ 2,50,300.00
SGD · DBS Multiplier Excluded

No rate available, so it is left out of your total rather than converted at a guess.

11 older rows need a rate Backfill

Shown with a count, and hidden entirely when there is nothing to fix.

~165 currencies · searchable · works offline

The core idea

Two questions that look like one

“What is this worth?” and “What did this cost?” are not the same question, and an app that answers both with today's rate gets one of them wrong every day.

  • A past transaction is frozen. It keeps the rate of its own date, so your March spending does not silently rewrite itself every time the market moves.
  • A balance is live. It converts at today's rate, because a foreign account is worth what it is worth now.
  • A budget ceiling behaves like a balance. You typed 5,000 while reporting in dirhams, so it is 5,000 dirhams; but the limit itself converts at today's rate, because “I will not spend more than this” is a present-tense intent. Freeze it at the day it was typed and a budget slowly stops meaning what you set.
  • A savings goal is denominated in what it is for. A house priced in rupees has a rupee target. Converting it into your reporting currency would make the number move every day for reasons that have nothing to do with saving.
Frozen at its own date
  • Past transactions
  • Spend measured against a budget
  • Settled group balances
Converts at today's rate
  • Account balances
  • Net worth
  • Budget limits
Kept in its own unit
  • Savings goal targets
  • Group balances, per group
How rates get to you

Rates that work on a plane

Mirrored, not fetched from your phone

Rates are pulled once a day into the app's own store rather than called live from your device. A third-party outage becomes a stale rate, not an app that will not open.

Works offline

Reads serve from cache, so a transaction entered on a flight still gets stamped. The full currency list is bundled in the app, so you can pick one before any rate has ever loaded.

The date is shown, always

A rate is quoted per one unit of your reporting currency and stamped with the date it is from. Central banks do not publish at weekends, so a Sunday legitimately shows Friday's rate, and says so.

Backdated entries get the right rate

Historical rates are kept by month, and a lookup for a date at the very start of a month rolls back into the previous one, because nothing may have been published yet in its own.

Commodities are not currencies

Gold, silver, platinum, palladium and IMF drawing rights are excluded by exact code, never by matching the letter X, which would delete five real currencies used across Africa, the Pacific and the Caribbean.

A searchable list, not a dropdown

The fifty most-used currencies come first, the remaining hundred-odd follow alphabetically, and the whole thing is searchable. A list that long in a dropdown is a scroll with no way to find anything.

Switching

Change your reporting currency, and change it back

Moving from dirhams to dollars re-derives every foreign row's rate at that row's own date; it does not take the old converted figure and run today's rate over it, which would move your history.

That is what makes it reversible. Both directions re-derive from the stored rate history rather than composing one conversion on top of another, so AED → USD → AED lands back on the original figures exactly, with no drift accumulating.

  • It stays behind a confirmation because it rewrites your whole ledger, not because anything is lost.
  • You are told what it achieved: how many rows were converted and how many could not be, because “done” and “done except for eleven days” look identical otherwise.
  • Snapshots are the one approximation, and you are told before rather than after. A snapshot is a bare total with no breakdown, so converting it at its own month's rate is exact only if it was entirely in the old currency.
  • A row whose new rate cannot be found loses its stamp rather than keeping a stale one. A stale stamp points at a currency you no longer report in while looking perfectly valid, which is the one failure the app is built to make visible.

Switch reporting currency

AED

from

USD

to

Transactions re-stamped1,284
Snapshots converted412
Could not resolve a rate11

Snapshots are totals with no breakdown, so their conversion is approximate. Everything else is exact and fully reversible.

Switch currency
Transfers

The arrived amount is asked for, not computed

When you move money between accounts in two currencies, the bank does not give you the mid-market rate. It gives you a figure, after its spread and its fees, that appears on your statement and nowhere else.

So NetWorth+ asks what actually arrived. Both balances are then right by construction. Deriving the arrival from a published rate leaves both of them wrong forever, and wrong in a way nothing later can reconcile.

The field is pre-filled from today's rate so you never start from a blank box, and it stops pre-filling the moment you edit it. The effective rate you actually got is shown back to you, derived from the pair.

Transfer

FROM · Emirates NBD (AED)

AED 5,000.00

TO · HDFC Savings (INR): amount that arrived

₹ 1,13,250.00

Pre-filled from today's rate. Edit to match your statement.

Effective rate 1 AED = 22.6500 INR

Small things that matter

The details

Trailing zeros are kept

192.90 stays 192.90, never 192.9. Trimming was built once and removed for exactly this reason.

Your own number grouping

1,234.56 · 12,34,567.89 · 1.234.567,89. Grouping and decimal separator travel together, because no convention mixes them.

Rename a symbol you cannot read

The canonical glyph is not always the legible one: ﷼ is correct for four different rials. Override it for display without touching the currency itself.

A code you do not know renders as the code

An unrecognised currency is shown as its three letters, never dressed in your own symbol. Labelling a foreign figure as a native one is the one thing a currency label must not do.

Unconvertible is excluded and named

A balance with no available rate is left out of the total and the currency is named, rather than folded in raw at the wrong scale.

Gaps are yours to fix, with a count

Where old rows are missing a rate, you are shown how many and offered a one-tap backfill, and the row disappears entirely when there is nothing to fix, because a permanent “0 need attention” is a permanent invitation to worry.

Questions

Good to know

Which currencies are supported?
Around 165, covering everything commonly quoted. The fifty most-used are surfaced first and the rest are searchable. Precious metals and IMF special drawing rights are deliberately excluded; they are commodities, not currencies.
What if I only ever use one currency?
Then nothing changes for you. When no account holds a foreign currency (which is most people), the app runs the same calculations it always did, with no conversion layer in the way.
Can two people in a group use different currencies?
The group itself carries one currency, chosen when it is created and fixed thereafter, so everyone's balance in that group means the same thing. What left your account is converted separately, because two people paying the same bill from accounts in two currencies genuinely spent two different amounts. See Shared Expenses.
Why can I not accept a shared account in another currency?
Because a shared balance arrives as a bare number and would be drawn with your symbol: a dirham account displayed as “$1,000” adds a thousand dollars to your net worth. The gate fails closed: if the currencies cannot be proven to match, the link is refused. Neither side is shown the other's currency, only that they differ.
Keep reading

More of what the app does

Out now on Google Play and the App Store

NetWorth+ is available for Android and iPhone. No bank login, no advertising, and nothing recorded until you approve it.

No bank credentials No ads, no ad SDKs Android · iPhone