← My Financial JourneyChapter 8

Living in multiple currencies

A receipt in Bali says Rp 254,360 and your instinct says nothing at all. Somewhere between the price you paid, the rate your card used and the currency you actually think in, the number stops meaning anything. Aurora keeps the original and adds the perspective — what you really paid, the rate it was converted at, the day that rate came from, and the figure you can reason with, all on one row.

10 min read·Chapter 8 of 10·Next: Two records, one purchase
1

The number that means nothing to you

Last September I was in Sanur, on the south coast of Bali, buying fruit — bananas, mangosteen, a tray of cut papaya and one very large peeled durian. The card terminal printed a slip and the slip said:

The terminal saidRp 254,3602 Sep · Mastercard ····2749 · Market City Sanur

And I felt nothing. Not that is expensive, not that is a bargain — nothing at all. I think in Korean won, and ₩254,360 would be a genuinely alarming amount to spend on fruit. Rp 254,360 turned out to be about ₩19,764: an ordinary weekly shop, more than half of which was the durian.

The digits are identical. The meaning is out by a factor of thirteen.

This is not a maths problem — everybody can divide. It is a calibration problem. You know what things cost in the currency you grew up with, instantly and without thinking, and that instinct does not transfer. Here is one identical amount of money, roughly a lunch, printed five ways:

ONE LUNCH · ONE IDENTICAL AMOUNT OF MONEYSeoul₩10,000Korean wonTokyo¥1,075Japanese yenLondon£5.43Pounds sterlingBaliRp 128,700Indonesian rupiahHanoi₫190,800Vietnamese dongThree digits to six digits. Your instinct works on exactly one of these lines.
The same amount of money in five currencies
Seoul₩10,000Korean won
Tokyo¥1,075Japanese yen
London£5.43Pounds sterling
BaliRp 128,700Indonesian rupiah
Hanoi₫190,800Vietnamese dong

Three digits in Tokyo. One decimal point in London. Six digits in Hanoi. Your instinct works on exactly one of those lines — and the currency you have no instinct for is, reliably, the one you are spending in this week.

2

This is not only a holiday problem

It would be easy to file all of this under travel. It is much bigger than that. A lot of perfectly ordinary financial lives now span currencies:

  • Expats — salary in one currency, rent and groceries in another, savings still at home.
  • International families — parents earning in one country, tuition invoiced in a second.
  • Remote workers and freelancers — clients who pay in whatever their country uses.
  • Frequent travellers — a fortnight of daily purchases in a currency you will never use again.
  • Investors — a US-listed fund inside a Korean portfolio.
  • Cross-border households — money that moves between countries every month, on purpose.

If any of those is you, currency is not a setting you configure once on the way in. It is something that happens to you several times a week, and the app either helps or quietly makes it worse.

3

One purchase, three different numbers

Look again at that bag of fruit. It did not produce one number. It produced three, and they are all correct:

1

Rp 254,360

What the shop charged.Printed on paper, in the shop's own currency, on 2 September. The only version that is a fact about the fruit.
2

₩19,801

What the card took.Posted two days later at Mastercard's rate plus the issuer's foreign transaction fee. The only version your bank knows about.
3

“about ₩20,000”

What you actually needed. The figure you reason with, compare against last week, and use to decide whether that was a lot of money for fruit.

Three descriptions of one bag of fruit. The mistake — and almost every app makes some version of it — is treating them as three separate facts, or worse, letting two of them reach your ledger as two separate transactions.

The second mistake is choosing. Convert everything to won and the rupiah disappears, so “how much did I actually spend in Indonesia?” becomes unanswerable. Keep only the rupiah and your budget cannot add it to anything. Neither half is optional, which is why Aurora refuses to pick.

4

Keep the original. Add the perspective.

That refusal is the whole design principle, and it is worth stating plainly, because it is the thing that separates a ledger from a currency converter:

Don't erase the currency you spent in. Understand it in the currency you think in.Conversion adds a view. It never replaces the record.
CONVERT AND FORGETThe receiptRp 254,360Stored₩19,764Six months later“How much did I spendin Indonesia?” — unanswerableKEEP AND ADDThe receipt — keptRp 254,360 · IDRThe rate — kept, with its date× 0.0777 · 2 SepThe view — added on top₩19,764…and all of the above, still on the rowConversion is a lens you look through, not a shredder you feed the receipt into.

So a foreign transaction in Aurora carries the whole story on one row. The figure you can reason with is the headline; the thing that actually happened is right underneath it:

What the shop printed
Pisang — bananasRp 52,900
Manggis — mangosteenRp 40,690
Pepaya potong — papaya trayRp 20,520
Durian monthong kupasRp 140,250
4 itemsRp 254,360
What your ledger shows
2 SepMarket City SanurMastercard ····2749 · Groceries−₩19,764254,360.00 IDR @ 0.0777

Won on top, because that is the currency you think in. Rupiah underneath, because that is what happened. And the rate, because in six months you will want to know which one was used.

Chapter 3 argued that the receipt remembers what the bank forgot. Currency is the sharpest version of that argument: your card statement has already thrown the rupiah away by the time you read it.

5

A photo does the arithmetic

None of this would survive contact with a holiday if it meant typing. Standing in a shop converting rupiah in your head, then entering an amount, a currency, a rate and four line items — that is a hobby, and not a good one.

So the actual gesture is a photo, taken on the way out. I took one of that fruit receipt while walking to the scooter. By the time I sat down, Aurora had:

  • Read the receipt — merchant, address, date, printed time, and all four lines.
  • Detected the currency from the receipt itself — IDR, because that is what the paper says, not because of where the phone happened to be.
  • Picked the account — the card digits printed on the slip point at one card in your wallet.
  • Sourced the rate for 2 September and converted it into won at the rate your card is likely to use.
  • Suggested a category — Groceries, learned from your own history.
Review receipt
✓ 11 fields read · confidence high
AccountMastercard ····2749
Date2 Sep · 5:58 pm
MerchantMarket City Sanur
Amount₩19,764
Rp 254,360 IDR @ 0.0777 · rate of 2 Sep
CategoryGroceries Suggested
Tags#balitrip
Items read
Durian monthong kupasRp 140,250
PisangRp 52,900
Manggis super curahRp 40,690
Pepaya potong trayRp 20,520
Estimated at your card's rateMid-market 0.07655 + 1.5% foreign transaction fee. Editable — and the statement will overwrite it when it posts.

The review screen on your phone — iPhone or Android. The won figure is the one you confirm; the rupiah, the rate and the day it came from are recorded alongside it, and the four printed lines survive as line items.

Now compare the alternative, which is what most of us actually do: open the card app three days later, find MARKET CITY SANUR ₩19,801, and try to remember what was in the bag. The card app is not wrong. It just never had the durian.

And it is the same three ways in as Chapter 3: snap a receipt, forward a booking confirmation to your ingest address, or upload the statement PDF when you get home and let Aurora unpack the whole trip at once.

6

Which rate — and, more importantly, which day?

Here is a question that sounds pedantic and is not: if you convert Rp 254,360 today, you will get a different won figure than you did on 2 September. Which one is right?

For a purchase that already happened, only one of them is a real fact: what was this worth on the day I bought it? Today's number describes the currency market, not your fruit. If your September total quietly changes every time the won moves, your history has stopped being history.

So Aurora fixes the rate to the transaction's own calendar date, and stores the whole basis of the conversion rather than just its result:

Original amountRp 254,360.00
Original currencyIDR — Indonesian rupiah
Rate applied0.0777
Rate date2 September 2026
Recorded in your ledger₩19,764

Five stored facts instead of one, and every one of them is recoverable later. It also means a receipt you photograph a week late still gets 2 September's rate — the date on the paper is what counts, never the date you got round to it.

The rates themselves come from the European Central Bank's daily reference feed, refreshed every morning. ECB publishes against the euro, so a pair like rupiah-to-won is derived through it rather than guessed. A few currencies are not in that feed at all — the Vietnamese dong and the Taiwan dollar, most notably — and Aurora's answer there is to say so: the original amount is kept, the row is flagged for you to fill in, and no number is invented. If the latest rate is more than a day old, that is shown too.

7

Your card does not use the rate you looked up

This is the part that surprises almost everybody, including people who have been living abroad for years.

When you check a rate on Google or XE, you get the mid-market rate — the midpoint between what banks buy and sell at with each other. It is the honest reference number, and no consumer has ever been given it. Your card network applies its own rate, and then your issuer adds a foreign transaction fee on top, typically 1–3%. A “no foreign transaction fee” travel card is 0%.

Which means a receipt converted at mid-market always lands below what the card will actually charge — a small error, in a consistent direction, on every single foreign purchase you make.

ONE BAG OF FRUIT · Rp 254,360 · VALUED THREE WAYSMid-market (ECB, 2 Sep)the rate you looked up₩19,471Aurora’s estimatemid-market + 1.5% card markup₩19,764What the card chargedthe statement, 4 Sep₩19,801₩19,400Axis starts at ₩19,400 — the whole spread here is under 2%.On one bag of fruit that is ₩330. Over a fortnight of them, it is not.
One Rp 254,360 purchase, valued three ways
Mid-market (ECB, 2 Sep)₩19,471
Aurora’s estimate₩19,764
What the card charged₩19,801

So Aurora does not pretend. It estimates the card's rate rather than the market's:

1A sensible default — 1.5% over mid-market, which is a realistic network-plus-issuer band, so foreign spend is roughly right the day you install the app.
2Per ledger — set your own under Settings → Currency, as Foreign transaction fee. Debit cards and cash spending use this too.
3Per card — the 0% travel card and the 3% everyday card can sit in the same wallet and be modelled separately, because in an expat wallet they usually do.
4Always a suggestion, never a lock — the home-currency amount stays editable. If you already know the exact figure the card charged, type it and the estimate gets out of the way.
⚠️ The one you can actually control: say no to DCCWhen a foreign terminal or checkout page offers to charge you “in your own currency,” that is dynamic currency conversion, and it is a rate set by the merchant's payment processor rather than by your card network. It is routinely 3–8% worse than what your own card would have done — considerably more than the fee you were trying to avoid. Always choose the local currency. My Bali slip charged Rp 254,360, which is the right answer. Because Aurora records the effective rate on every foreign row, a bad conversion becomes something you can see rather than something that silently happened to you.
8

Then the statement arrives, and the statement wins

An estimate has a job and an expiry date. Two days later the real Mastercard line posted:

2 Sep · from the receipt
OriginalRp 254,360
Estimated at 0.0777₩19,764
Items4
4 Sep · one row, reconciled
OriginalRp 254,360
Charged by the card₩19,801
Transactions in your ledger1

₩37 out. Aurora recognises the pair, joins them into a single row, and lets the statement be the authority on the amount — while the receipt keeps everything the statement never had: the four items, the category, the tag, the photo, the printed time.

This is exactly why the estimate only has to be close, not perfect. Its two jobs are to keep your budget honest in the days before the charge posts, and to be near enough that the matching engine finds the pair. Once the truth arrives, the truth wins.

9

Currency is not a category

A distinction worth making explicitly, because it disappears the moment you see it stated: currency and category are different dimensions of the same purchase. Dinner is dining, whether it was priced in won, rupiah or pounds. The currency changed. The spending didn't.

Because every amount is converted into your ledger's currency at the moment it is captured, questions about categories simply keep working across borders:

🍜 Dining out · September
WhereAs printedIn your ledger
Seoul · three lunches₩38,000₩38,000
Sanur · Gili Teak ResortRp 329,560₩25,601
Sanur · Diana CafeRp 85,000₩6,603
Singapore layoverS$24.90₩25,780
Dining out, September—₩95,984

There is no travel mode to switch on and no separate holiday budget to reconcile afterwards. Your dining line simply gets bigger in September, in won, on the days the money actually moved — and the pacing from Chapter 6 tells you about it on the 11th, while you are still there and can still decide something.

10

Tag the trip, not just the month

Categories answer what kind of spending was this? Months answer when? Neither of them answers the question you will actually be asked at dinner in six months' time, which is “what did Bali cost?”

A trip is not a category. It is a story that cuts across categories — flights, a villa, dinners, a scooter, a mask and snorkel, and one durian — and across accounts, and across two calendar months if you were lucky. That is precisely what tags are for. Put #balitrip on everything as you capture it, and the trip becomes a thing you can ask about:

Dashboard
Tag summaryWeekMonthYear
#balitrip
−₩451,500
12 transactions · September
Market City SanurGroceries−19,764
Owl BarActivities−66,030
Gili Teak ResortDining out−25,601
Diana CafeDining out−6,603
+ 8 more · tap any row to open it

The Tag Summary widget on your phone's dashboard. One tag, one period, one total — in your home currency, with every foreign purchase already converted and the fruit run sitting in there with everything else.

Tag from the capture screen as you go, or in bulk when you get home. Switch the widget between week, month and year. Search by tag in the transaction list on your phone and on the web, tap any row to open the transaction behind it. A tag is a story; a category is a kind of spending. You want both, and they should never have to be the same field.

Your credit card app can also tell you roughly what a fortnight cost, if you scroll and squint and remember which charges belonged to the trip. It cannot tell you what the trip cost including the cash, the taxi you paid for at home, the flights you bought in June and the dinner your friend billed you for afterwards. That is a ledger's job.

11

Many currencies, and never one fake total

One last structural decision, and it is the most important one in Aurora. Each ledger is locked to a single home currency when you create it, and it never changes. Korea in won, Hong Kong in Hong Kong dollars, the UK in pounds. Inside a ledger, every screen, every total and every budget is in that currency — only that currency, always.

And we do not add them up. There is no headline number telling you your worldwide net worth in dollars, because that number moves for reasons that have nothing to do with your life. Nothing happened to you today; the won moved 1.2%; your app now reports that you are poorer. That is not information, it is noise wearing a suit.

KoreaKRW
Net flow · September+₩1,240,000Spent ₩3,180,000
Hong KongHKD
Net flow · September−HK$4,120Spent HK$21,400
United KingdomGBP
Net flow · September+£860Spent £2,240

No combined total. Deliberately, permanently, and it is the most important design decision in the product.

So the Overview screen shows your ledgers side by side, each in its own money, with no total underneath. Comparison without a fiction.

There is exactly one deliberate exception: the Cross-Ledger Report, which you generate on purpose, when a mortgage application or a tax return genuinely requires a single figure. It is timestamped, it always shows the per-ledger breakdown, it carries the rate it used, and it never appears on a dashboard uninvited.

The same honesty runs down to the details. A US-listed fund held inside a Korean ledger is priced in dollars, because that is what it is — and the won figure beside it is shown with a ~ in front, which is doing real work: it means roughly, today, for orientation. And if a receipt's currency was misread, you can correct it on the transaction itself; Aurora re-fetches the right rate for that day and repairs the budget behind it. Being wrong is allowed. Being quietly wrong is not.

🌅 The big idea

The original currency tells you what happened. Your home currency tells you what it meant to you. You need both, and you should never be made to choose.

So Aurora keeps the amount you actually paid, the currency it was printed in, the rate it was converted at and the day that rate came from — then shows you the figure you can reason with on top. Your money can speak six currencies. Your financial story should still read as one.

12

Your journey so far

🌅 Next up · Chapter 9

Two records, one purchase

That last section went past very quickly. Two records went in, one row came out, and nobody explained how the app knew they were the same bag of fruit — because nothing links them. No shared reference, no code the shop and the bank agreed on in advance. So the question is not which record is right, but whether they describe the same event — and getting that wrong means paying for your groceries twice.

Read chapter 9 →

Spend in any currency. Understand it in yours.