Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Budget Currency and Category Currencies #1132

Closed
2 tasks done
joel-jeremy opened this issue Jun 14, 2023 · 44 comments
Closed
2 tasks done

[Feature] Budget Currency and Category Currencies #1132

joel-jeremy opened this issue Jun 14, 2023 · 44 comments
Labels
feature This issue is a feature request needs votes Please upvote this feature request if you would like to see it implemented!

Comments

@joel-jeremy
Copy link
Contributor

Verified feature request does not already exist?

  • I have searched and found no existing issue

💻

  • Would you like to implement this feature?

Pitch: what problem are you trying to solve?

There are many people who work abroad and send remittances back to their home countries. Having to track bills in different currencies will make it harder to do your budget especially for those who are just wanting to start on their budgeting journey. To help with this, maybe the app could introduce a concept of a budget/primary currency and allow category budgets to be defined in a different currency (by default it should use the budget/primary currency) and let the app do the conversion based on the currency conversion rates or a custom conversion rate.

Describe your ideal solution to this problem

Introduce a budget/primary currency which will be used as the default currency on budgets unless otherwise specified. We could fetch conversion rates and store it in a local database for offline functionality if necessary and allow users to define custom conversion rates in order to match the conversion rates of the remittance services they are using. This should help users do their budgeting more accurately and no more manually doing conversions or adding buffers due to possible fluctuations in conversion rates.

Teaching and learning

No response

@joel-jeremy joel-jeremy added feature This issue is a feature request needs triage labels Jun 14, 2023
@github-actions github-actions bot added the needs votes Please upvote this feature request if you would like to see it implemented! label Jun 14, 2023
@github-actions
Copy link
Contributor

✨ Thanks for sharing your idea! ✨

This repository is now using lodash style issue management for enhancements. This means enhancement issues will now be closed instead of leaving them open. This doesn’t mean we don’t accept feature requests, though! We will consider implementing ones that receive many upvotes, and we welcome contributions for any feature requests marked as needing votes (just post a comment first so we can help you make a successful contribution).

The enhancement backlog can be found here: https://github.com/actualbudget/actual/issues?q=label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc+

Don’t forget to upvote the top comment with 👍!

@j-f1
Copy link
Contributor

j-f1 commented Jun 14, 2023

Linking to some earlier discussion of this: #541 https://github.com/actualbudget/actual/discussions/362

This would be a very complex feature to add since the app currently assumes everything is in the same currency and just treats budget values as numbers. We’d also need to think about how this could be exposed in the UI (especially the budget) in a way that isn’t confusing, including taking into account historical budgets.

@carkom
Copy link
Contributor

carkom commented Jun 14, 2023

This has been discussed a lot, have a look at the previous closed feature requests. Best I came up with was to convert any foreign currency imports to the "home" currency. Can see the PR here (#690)

@joel-jeremy
Copy link
Contributor Author

joel-jeremy commented Jul 4, 2023

@j-f1 I just realized that we can use math expressions in the Budgeted, Payment and Deposit columns. I am thinking maybe instead of currencies, we can update these columns to save the math expression used to calculate the amount and when the columns are clicked or hovered, we show this saved math expression so the user can modify the amount or the multiplier easily.

@nmathey
Copy link
Contributor

nmathey commented Sep 11, 2023

Potentially simplifying also if such transaction details is going Read-Only or replacing the math expression proposed by @joel-jeremy by the result only as soon as it is reconciliated (?)

@Crazypkr1099
Copy link
Contributor

Crazypkr1099 commented Nov 16, 2023

In response to
https://github.com/actualbudget/actual/discussions/362#discussioncomment-7571035

This would be an astronomical amount of work to complete unfortunately.

Your best bet as of right now is to have two budgets, one in CAD and one in USD.

I don't think it would be possible to have all the information from each corresponding budget shown in one budget due to security reasons, so there's really no great way to do this.

One thing I think might be possible is when you upload a CSV or QIF, OFX, and QFX file, you could add an option to automatically do an exchange rate and apply a memo stating "converted to USD" or something.

This would be the easiest way...

@carkom
Copy link
Contributor

carkom commented Nov 16, 2023

One thing I think might be possible is when you upload a CSV or QIF, OFX, and QFX file, you could add an option to automatically do an exchange rate and apply a memo stating "converted to USD" or something.

This would be the easiest way...

This already exists. See my comment (above).

@michele-perrone
Copy link

Giving a vote for this one.

I have a multi-currency account and I mainly use CHF and EUR, exchanging them based on my needs.

I tried having two separate budgets, but that's not really an option: not having a unified net worth report is already a deal breaker for me. I can't really see how much I'm saving each month, since CHF and EUR are just summed together.

This is the only feature that I'm missing in Actual. I'm super happy with all the rest!

@maxime1992
Copy link

☝️ that's the only reason I've decided not to start using Actual. If I cannot track multiple currencies it doesn't make sense for me to track accounts at all as I can swap from one account to another one it's not really an expense or anything. I'm keeping an eye on Maybe as they've announced this will be supported by default

@darianf01
Copy link

I'm in same situation, besides having accounts with different currencies, i'm also having a multi-currency account. I transfer from one account to another doing also an exchange. So amount in the source account should end up being different than the amount in the destination account. I'm syncing these accounts via gocardless.

One solution I could suggest, is to have the option to do "Transfer & Exchange", where one transaction is marked as transfer along with providing a custom exchange rate (and as a matter of fact, also a fee). Transferring 100EUR into 86GBP for example would keep same transaction, only "viewed" differently depending on the account. With such implementation I think there would be no need to define in Actual which account is EUR & which is GBP, for example...

@qmph22
Copy link

qmph22 commented Mar 2, 2024

I'm in same situation, besides having accounts with different currencies, i'm also having a multi-currency account. I transfer from one account to another doing also an exchange. So amount in the source account should end up being different than the amount in the destination account. I'm syncing these accounts via gocardless.

One solution I could suggest, is to have the option to do "Transfer & Exchange", where one transaction is marked as transfer along with providing a custom exchange rate (and as a matter of fact, also a fee). Transferring 100EUR into 86GBP for example would keep same transaction, only "viewed" differently depending on the account. With such implementation I think there would be no need to define in Actual which account is EUR & which is GBP, for example...

It might be out of the scope of this feature request but you could take it a step further and have an option to show both currencies for a transaction side-by-side per the exchange rate set for that transaction.

@thetechnaddict
Copy link

thetechnaddict commented Apr 8, 2024

Same issue for me as darianf01 - I can sync both my euro and gbp accounts and all I need to do is identify the two transactions as being involved in the transfer - no need to manage exchange rates, just say 100 from this account went to 86 in this other account. They could be suasages to carrots, who cares - it gets more complex if I want to track different types of income in euros that are implicated in one transfer, since the value of the income in a base currency matters -- for this reason I am leaving the euro account out of the budget and registering the income as European Income, and tracking the sources separately

@patrontheo
Copy link

Same situation for me. I have accounts in EUR and CHF. Being able to unify them is super important. Perhaps you could have a look at how other budget management apps (Firefly III ?) handle this.
I guess the user should define its 'main' currency, and be able to add accounts in other currencies.
The exchange rate would have to be updated automatically (to see the net worth of all my accounts as of today).
For transfers, it should be possible to match transactions that don't have the same amount (e.g. 100CHF -> 103EUR).
Where it could get tricky (not that the above is not tricky ;)) is how you manage budget for a given category for example. If there was an expense of 100€ in this category on a given date, should you use the exchange rate of the transaction date, or of today (I'm not sure what's best).
As of now, the lack of multi-currency support might be a deal-breaker for me, unfortunately :(. If someone has a recommendation of a great, self-hosted budgeting app that can do this, I'm all ears :). Hopefully Actual will integrate that in the future !
I know that I'm a bit of an edge-case having accounts in different currencies, but I guess everyone using apps like revolut for traveling would also be interested in being able to import their revolut accounts' statement.

@Mart-Bogdan
Copy link

Mart-Bogdan commented Jul 23, 2024

I think having currency per account would solve this. not per category.

You basically create cash account in different currency.

In case you are using bank card -- it would be auto converted by your bank, so in your invoice it would be in native currency.

In this case app won't require to fetch exchange rates. You simply input it when you transfer from one account to another.

P.S. This was the thing that bogged me out when I was using YNAB many years ago.

@vinstaal0
Copy link

vinstaal0 commented Aug 7, 2024

How most other programs would do this is that you would add the account and select the given currency.
The exchange rates would be pulled from a table that is either manually filled or filled by an API.

Let's say this second account is in EUR and the main budget is in USD.

You would put all the transactions in EUR in the EUR account and they would show up as EUR in that account. Actual would then convert the transactions to the last know currency exchange rate. So say I process a transaction on 2024-08-07 of 100 euro and the last know exchange rate is from 2024-08-01 it would then use that to convert to USD and post that to the budget.

Since Actual is cashflow based and not based on double entry bookkeeping we don't care about the exchange rate differences that exist.
If I say transfer 100 USD to my EUR account the EUR account would show an deposit of 91 EUR. If you match this as a transfer between the two then any given exchange rate should be ported to exchange rates.

You don't want to have currencies per category, it's a whole lot of work to make that work and it woudln't give a good example either. Just think about you putting a budget for food for your vacation in Japan. It would show a number in the tens or maybe even hundreds of thousands of yen. Would look weird against your normal budget.

The best way to currently solve this IMO is to take your .CSV export from the bank and convert all the transactions manually and then import it as if it where in your main currency.

Edit: changed comment to be more clear.

@dvcrn
Copy link

dvcrn commented Aug 15, 2024

Hi! Found this thread because I was searching on how to set a currency for an account - I guess it's not possible yet

I also think that there is no need to have currencies per category or things like that, and currency conversion is unnecessary either.

All I want is that the accounts and transactions I have, have a currency symbol and/or field, so I know the currency of each transaction.

My sidebar looks like this:

image

With JPY it's a bit more obvious that this isn't the same as the others, but with the others it's a bit more subtle.

Then in transactions, display the currency of the account, and in aggregations, list up all the currencies and their respective value. So if an aggregation has $20 USD and 10 Euro, display it as "$20, 10€".

One app that does this very well is https://moneymoney-app.com/

Screenshot 2024-08-18 at 10 16 53 AM

or with mulitiple currencies

Screenshot 2024-08-18 at 10 17 05 AM

@vinstaal0
Copy link

@dvcrn I disagree that currency conversions aren't needed. Like in your example with JPY it's gonna have huge impacts on your budget if you assign a single purchase in JPY to a category. That would need to be converted by the exchange rate set in the system.

We don't need categories to be set in different currencies though, that makes basically no sense

@bandiba
Copy link

bandiba commented Aug 26, 2024

Hi! The lack of multicurrency support is a blocker for me too. I'm back to AceMoney, which is somewhat outdated, but does have multiple currencies, they download exchange rates, daily values I believe, and do conversion when needed.
I tried Firefly III too, there you can assign a currency to each account, however exchange is not supported. Resulting in that eg in reports, you have as many lines for each item (eg category) as many currencies you used for that category. Not ideal either.
I fully understand this would be a significant change for Actual, while I'm sure it would make it even more useful, standing out of the crowd of financial apps. Lacking coding skills, I'm ready to support financially, if that helps somehow...

@emudojo
Copy link

emudojo commented Aug 28, 2024

this would be ideal for me having USD and CRC as currencies, I had to update my import script to convert CRC to dollars before it gets ingested into actual, now transfters between accounts as I often use my bank for that then the amount gets converted to USD and then imported (or the other way around)

@bandiba
Copy link

bandiba commented Aug 28, 2024

Right, I think this is a problem for anyone who uses more than one currency - and that is not just a few people, I'm sure. In my case, I plan to use the online connection to download transactions - so I would need to modify the download script to convert the amounts to the base currency.

@StamenchoBog
Copy link

I will also add that I am waiting for multi-currency support so I can completely transition my excel files into an application like this. Multi-currency will be a crucial feature so people can use this application since everyone in the world at the moment uses multiple currencies. Especially after the multiple fluctuations of currencies because of the economic crisis.

@ThomasHFWright
Copy link

Adding my vote for this feature. I'm daily managing accounts between different countries

@Seovance
Copy link

Also adding my vote ! Would be great to have multiple currencies available! One easy and quick solution would be to add a conversion rule based on account. For example, all transactions for a given account are converted with a specific factor. Of course, it would be better to have them converted on a daily basis with some open source currency exchange factor. But option 1. would help a lot of people and should not be a big deal. :)

@a-w-1806
Copy link

I am voting on this too. I am okay with the solution to have different budgets for different currencies, but it would be awesome if we can somehow have multi-currency support

@patrontheo
Copy link

patrontheo commented Oct 10, 2024

For those willing to not use a self-hosted solution, LunchMoney is a very nice one. I've been using it for the past month and it's really cool, the multi-currency support is well-implemented.
Actual could take inspiration from them by the way.

@anatolybobunov
Copy link

I manually convert my transactions from currencies into dollars every time. That's why I'm so interested in this feature.

I open the Actual Budget app, my bank's account with transactions on the google tab, and Google online currency converter on another tab.

I look at the bank transaction and check what the currency of this transaction is. If the transaction isn't a dollar, I go to the converter page and convert my currency into dollar. After that, I go to Actual Budget and enter the new dollar amount of the transaction.

Therefore, transferring all my transactions into Actual Budget takes approximately 50-80 minutes once per week or 30-40 minutes twice per week.

@franco-ruggeri
Copy link

+1

This is a show-stopper for me to start using Actual.

@Mart-Bogdan
Copy link

@patrontheo: For those willing to not use a self-hosted solution, LunchMoney is a very nice one. I've been using it for the past month and it's really cool, the multi-currency support is well-implemented. Actual could take inspiration from them by the way.

As I can tell from their website, they don't offer e2e encrytion. Only some vague guarantees.

Actual on contrary has e2e option for self hosted set up.

I can't imagine why people store their financial data inside this centralized "cloud" apps, that don't have proper encryption.

@franco-ruggeri
Copy link

franco-ruggeri commented Nov 5, 2024

I manually convert my transactions from currencies into dollars every time. That's why I'm so interested in this feature.

I open the Actual Budget app, my bank's account with transactions on the google tab, and Google online currency converter on another tab.

I look at the bank transaction and check what the currency of this transaction is. If the transaction isn't a dollar, I go to the converter page and convert my currency into dollar. After that, I go to Actual Budget and enter the new dollar amount of the transaction.

Therefore, transferring all my transactions into Actual Budget takes approximately 50-80 minutes once per week or 30-40 minutes twice per week.

In addition to taking long, that approach is inevitably imprecise. The currency exchange rates keep changing.

Each account and transaction should have and be stored with their original currency, unless it is an exchange transaction in reality (see Firefly III). The conversion should be done only for analysis purposes in the reports, using the up to date exchange rates (e.g. convert everything to one currency to see my net worth).

@bandiba
Copy link

bandiba commented Nov 5, 2024

Each account and transaction should have and be stored with their original currency, unless it is an exchange transaction in reality (see Firefly III). The conversion should be done only for analysis purposes in the reports, using the up to date exchange rates (e.g. convert everything to one currency to see my net worth).

Exactly! BTW this is where Firefly III also missing functionality: in reports it displays a separate entry for each currency. E.g., if you bought stuff from US, UK and German Amazon, you will have 3 entries in the "stuff" category, and no total. This makes the reports somewhat difficult to read, and process. Other tools define a base/reference currency, so that in reports only one entry is shown for each category in reference currency, which is the sum of entries of various currencies, converted to the reference currency (using some spot rate or latest available rate).

@patrontheo
Copy link

patrontheo commented Nov 5, 2024

@patrontheo: For those willing to not use a self-hosted solution, LunchMoney is a very nice one. I've been using it for the past month and it's really cool, the multi-currency support is well-implemented. Actual could take inspiration from them by the way.

@Mart-Bogdan: As I can tell from their website, they don't offer e2e encrytion. Only some vague guarantees.
Actual on contrary has e2e option for self hosted set up.
I can't imagine why people store their financial data inside this centralized "cloud" apps, that don't have proper encryption.

If you are aware about a self hosted e2ee solution that supports fluently multiple currencies, I'm all ears ! :)

@bandiba
Copy link

bandiba commented Nov 5, 2024

I'm in search for a personal finance software, now for a year or more, that meets the following four criteria:

  • self-hosted
  • has multicurrency support, with reference currency based reports and summaries
  • supports automatic transaction download from my banks
  • can assign transaction categories automatically (rule based)

No success. The closest is Firefly III, the only thing missing there is the reference currency based reports.

@alejoar
Copy link

alejoar commented Nov 19, 2024

Looking forward to this feature too!

This is a must for entrepreneurs working with clients in multiple countries.

@bandiba
Copy link

bandiba commented Nov 19, 2024

All, do not forget to upvote this issue, so it gets visibility!

@rbjansen
Copy link

I've been able to extend the Docker-based setup with a script that converts transactions in a specified account, using exchange rates by transaction date. Have a look at the example here

@bandiba
Copy link

bandiba commented Dec 1, 2024

I've been able to extend the Docker-based setup with a script that converts transactions in a specified account, using exchange rates by transaction date. Have a look at the example here

Sounds very promising! Can your script handle multiple accounts, if each one is in a different currency? If I list each account in .env, how can the script assign the account-currency pairs?

@rbjansen
Copy link

rbjansen commented Dec 1, 2024

@bandiba Not currently, the code in the example assumes that there's just one account to convert. It also uses the ECB's exchange rates which have EUR as the base currency.

Happy to rewrite it a bit to handle multiple accounts with different currencies. Is there any exchange rate API you would suggest? (Edit: went ahead and updated, have a look)

@Ggpsv
Copy link

Ggpsv commented Dec 2, 2024

Adding my 👍 to this one. I've tried to use Actual over the years but I have accounts and transactions in two different currencies. Using different budget files for each is too cumbersome.

@bandiba
Copy link

bandiba commented Dec 2, 2024

@rbjansen: I suspected so, smartly deducing from the name "dual" ;).

I checked how my favorite Portfolio Performance provides the USD/HUF rate for me. By default they also use ECB for Euro-sg else pairs, for other crossrates it seems I can select the rate provider from a long list, currently set to Yahoo Finance. Works pretty well.

Synth is not an option in Portfolio Performance, but looks like a great alternative! What I'm not getting reading the readme is where exactly do I define the currency of the account and the target currency...? Maybe I'm missing something obvious, now I have no time to try, hopefully later I can experiment with it.

But hey, big thanks to you for looking into this!

@rbjansen
Copy link

rbjansen commented Dec 4, 2024

What I'm not getting reading the readme is where exactly do I define the currency of the account and the target currency...? Maybe I'm missing something obvious, now I have no time to try, hopefully later I can experiment with it.

You can add this to the config.js. Replace (my) placeholders EUR and SEK :)

@tlesicka
Copy link
Contributor

tlesicka commented Dec 4, 2024

@rbjansen Would you be able to help make multi-currency a built-in feature? I've been working a little on it and could use some help.

Here's a link to a draft proposal:
[https://github.com/tlesicka/actual-budget-multicurrency-todo]

Here's the Discord discussion:
[https://discord.com/channels/937901803608096828/1224674202083393597]

@bandiba
Copy link

bandiba commented Dec 5, 2024

@rbjansen Thanks, I missed this, sorry.

I gave it a try yesterday, I'm stuck at an error message at the account listing step. I tried to use in config.js budgetId both the Budget ID and the Sync ID from the advanced settings page, same result.

What am I doing wrong? Do I need to define the sync ID somewhere else than config.js?

Thanks in advance.

$ docker exec -it dual-actual node lib/listAccounts
/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37329
                        throw new Error(`Budget “${syncId}” not found. Check the sync id of your budget in the Advanced section of the settings page.`);
                              ^

Error: Budget “undefined” not found. Check the sync id of your budget in the Advanced section of the settings page.
    at handlers.api/download-budget (/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37329:31)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Node.js v18.20.4

@rbjansen
Copy link

rbjansen commented Dec 5, 2024

@bandiba I missed a spot, sorry about that! Try again after a pull

@bandiba
Copy link

bandiba commented Dec 6, 2024

@rbjansen No worries! This works now, it is great! Thanks a lot!!

May make sense to add to the Notes the original amount and currency of the transaction. Would help to identify the transaction in case of doubts.

Of course would be great to add a button to Actual UI to start the conversion, so no need to log in to server. Maybe this is what @tlesicka meant?

Edit: no, I just had a look at the proposal, it is more than that...

All in all, great job, finally I can switch to Actual for 2025 and enjoy the automatic bank sync!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature This issue is a feature request needs votes Please upvote this feature request if you would like to see it implemented!
Projects
None yet
Development

No branches or pull requests