Multiple-Currencies Using API
Realistically, I'm not going to have time to build this, so I'm submitting the idea here in the hopes that someone else will. (I'd love to win a shiny prize... but the value of having someone do a proper job of building this outweighs the value of me getting it only half-done).
So, there have been many requests for this over the years, and I'm guessing the two main reasons it hasn't been built are:
- The large majority of the user-base only operate in one currency.
- It's hard to adhere to the "give every dollar a job", down to the cents, when multiple currencies are involved.
Let me speak to the second one for a moment: When you live and work in multiple currencies, it's actually impossible to budget to the last cent, because of currency fluctuations. However, for those of us in this situation, that's not a reason not to budget, or not to build it this functionality! Just because it's hard doesn't mean we want to forget about budgeting well, or the things YNAB has taught us.
So, how could this work?
- A multi-budget setup, one for each currency involved.
- One of those is the master. This budget is in a "home" currency (in my case, where I get paid). Every category of spending, across all budgets, is represented in this budget. Let's call this "Master".
- In Master, categories which will be used in other budgets are denoted as such. (Master may also have some categories that only appear in master, that's fine.) Such multi-currency categories will be denoted with a keyword or symbol. For example "Eating out" becomes "*Eating Out".
- Other-currency budgets carry these names. For example, in the budget for currency #2, I also have a category called "Eating Out".
- When I spend money in any currency, and it's from the category "Eating Out", our little server-side app sees that there is a multi-currency category with that name, and adjusts the budgeted amount remaining, by seeing my spending entry, and syncing that where necessary. For example I spend NZ$5 from Eating Out, and that equals US$3. The entry in my NZD budget is also synced according to exchange rates into the USD budget. I might enter the first record as "My favourite takeout", and the record that's added to the other budget(s) by the app might show as "From NZD - My favourite takeout".
- The remaining amount in the category would be taken care of by YNAB proper.
- What about the variability in exchange rates, bank fees etc? Yes, it's true that these vary and budgeting to the last cent is tough. Since we're used to having an emergency fund set aside, why not have a "currency-buffer fund" set aside? Money could automatically be moved to this category when spending occurs (much like YNAB does for credit card spending). The percentage could be set by the user. For example, if I know I'm paying a 2% transaction fee, I would set this amount to 2%. I also use bank accounts in multiple countries, but that same 2% would easily cover this also.
Some other things important to consider:
- How would this handle account balances where accounts are held in different countries/currencies?
- What about when a transaction is modified by the user? How often are these synced?
- What if the user modifies a transaction in a currency other than the one it was spent in? (For privacy reasons, I don't envision a separate third-party database somewhere else). Perhaps there is a Master Budget ONLY used by the app, which is like a master table for every other budget.
- What happens when transactions are cleared, accounts reconciled? How is the currency buffer category used in this case?
Yes, there are a few key unanswered questions. I hope this gets a good discussion going about how we could implement this!
I like this idea, as I too live in a multi-currency world where I get paid in USD, and all bank and CC transactions happen in USD, but almost all of my cash transactions happen in CRC. I too am overwhelmed by the amount of work that would be involved in re-building so much of YNAB in order to provide multi-currency support, especially thinking about the syncing problems you point out caused by having multiple budgets.
However, perhaps certain smaller slices of functionality would be most useful. For my case, I would really only use the transaction add screen on a mobile app, for example. If you could manually enter transactions in your secondary currency, and have them automatically converted to the master currency, how helpful would that be to you?
I just stumbled on this thread and wanted to point out a possible option for multi-currency support. It's a 3rd-party app called Multi-currency for YNAB. I've never used it so I can't vouch for it, but I know it's worked for some folks. Might be worth checking out. ¯\_(ツ)_/¯
Hi. I use 2 currencies RON and EUR. Main is RON
I have accounts in both currencies. The inconvenience is that euro account is showed in RON and for this also Net worth is not exact.
Additionally i created an account called "balance" in which i try to balance all the expenses.
SO, When i travel and make expenses from euro account i make the following transactions:
-from EURO account i transfer 10 (for ex beer) to balance
-in balance account i add income 35 (with comment 1EUR=4.5RON)
-and in the end i add the expense for beer 45.
- So in my budget i can see that i spent 45 RON on beer.
my sold in balance account is 0.
And my sold in EURO account is with 10 less.
I don't care about net worth. I can calculate if i want, because all EURO accounts show me the real amount in EUR even in ynab are shown in main currency.
I use a similar approach with three currencies (CAD is my "native" currency, plus USD and EUR). I use split transactions in accounts in the non-"native" currency that look like this example (for USD, with $1.30 CAD == $1.00 USD exchange rate):
PAYEE | CATEGORY | OUTFLOW | INFLOW ----------------------|-------------------|------------------|----------------- The payee | Split transaction | USD amount | <no payee> | The category | USD amount * 1.3 | Transfer: USD balance | <no category> | | USD amount * 0.3
I just use an approximation of the exchange rate, that I'll adjust periodically if there are big changes that stick around for a month or two (e.g. down to 1.2 or up to 1.4), and add an adjusting transaction in USD balance account to be correct (I have a budget category with money set aside to buffer these swings). I have a separate EUR balance account.
This approach works well for me (it's the third approach I've tried, and the one I've stuck with for a few years now). I'd like to use the API to make this a bit easier (less manual entry), but unfortunately the API doesn't support creating sub-transactions yet.