actualbudget / actual

A local-first personal finance app
https://actualbudget.org
MIT License
13.71k stars 1.1k forks source link

[Feature] Budget Currency and Category Currencies #1132

Closed joel-jeremy closed 1 year ago

joel-jeremy commented 1 year ago

Verified feature request does not already exist?

đź’»

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

github-actions[bot] commented 1 year ago

:sparkles: Thanks for sharing your idea! :sparkles:

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 commented 1 year ago

Linking to some earlier discussion of this: https://github.com/actualbudget/actual/issues/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 commented 1 year ago

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 commented 1 year ago

@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 commented 1 year ago

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 commented 10 months ago

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 commented 10 months ago

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 commented 7 months ago

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 commented 7 months ago

:point_up: 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 commented 7 months ago

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 commented 6 months ago

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 commented 5 months ago

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 commented 5 months ago

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 commented 1 month ago

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 commented 1 month ago

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 commented 1 month ago

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 commented 1 month ago

@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 commented 3 weeks ago

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 commented 3 weeks ago

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 commented 3 weeks ago

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 commented 2 weeks ago

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.