Bookkeeping when you bank in three countries
Multi-currency bookkeeping means recording both the amount in the currency it moved in and the rate used to value it — on a date, from a source — rather than converting everything to one currency and losing the original.
If you invoice in euros, hold sterling for a client, and pay yourself in dollars, the honest answer to “how much money do I have” is four numbers and a date. Most tools give you one, and quietly throw the rest away.
Converting at the end is not bookkeeping
The spreadsheet approach is to keep everything in one currency and convert as you go. It produces a number that looks right and cannot be defended, because the rate you used is not written down anywhere and next year’s rate is different.
Proper multi-currency keeps three things per transaction: the amount, the currency it moved in, and the rate that valued it on that day.
2026-08-19 * "Client invoice 041"
Assets:Bank:Savings 9150.00 EUR @ 1.0800 USD
Income:Consulting -9882.00 USD
Read that second line: the income was recorded in USD, the money arrived in EUR, and the rate is on the entry rather than in your head. Shipped
Holdings are lots, not a balance
Shares bought at three different prices are three lots, each with its own cost and date:
2026-03-11 * "Buy VWRL"
Assets:Broker:VWRL 42 VWRL {98.40 EUR, 2026-03-11}
Assets:Bank:Savings -4132.80 EUR
When you sell, the gain depends on which lot you sold. A single balance cannot answer that, which is why “total value of holdings” is the number that is easy and “what did I actually make” is the number that is useful. Shipped
Why the file format matters here
This is where plain-text accounting stops being an aesthetic preference. A
price directive is a line in a file:
2026-08-19 price EUR 1.0800 USD
You can read it, grep it, diff it, and see when it changed. In a proprietary tool the same fact is a row in a database you rent access to, formatted by a report you cannot alter, and the exchange rate it used last April is not something you can go and look at.
What this costs elsewhere
Multi-currency, investments and cost lots are normally the thing that pushes you onto a higher tier — QuickBooks puts serious multi-currency work well above its entry plan. Here it is the same engine on every plan, including the free one, because it is Beancount underneath and Beancount does not have tiers. Shipped
The honest edge
There is no automatic rate feed. Not built Rates come from you or from the agent when it books the entry, and the source is recorded. That is fine for invoicing and awkward for a portfolio you mark daily — worth knowing before you pick a tool.