frappe / books

Free Accounting Software
https://frappe.io/books
GNU Affero General Public License v3.0
2.68k stars 614 forks source link

💡 [Feature Request] - Multi-currency Support #816

Open njmulsqb opened 5 months ago

njmulsqb commented 5 months ago

Summary

I would love Frappe to have multi-currency support, as I have two accounts one has amount in PKR and other one has in USD;

What problem are you trying to solve?

Freelancers/agencies who earn in USD but have different local currency will be able to maintain both the balances in Frappe.

Basic Example

For example, I have balance in Payoneer that is in USD, but since all my local dealings and bank account balance is in PKR so I have set it to be my default currency. It would be amazing if I could also include my payoneer USD balance in frappe with realtime currency conversion rates to my default currency

Drawbacks

I can't think of any, this is an optional feature and will help online businesses greatly.

Reference Issues

No response

mildred commented 5 months ago

I'm wondering how this works with accounting... When you pay taxes in a country, you always declare everything in the currency of that country.

I'm not really an expert at accounting and I don't know the way it should be handled

I see two ways to handle multi currency from a naive point of view:

edit: from the little of what I know of accounting in France, you need to do accounting in the country currency (first option above). I don't know how to follow that rule if one of the last options is implemented.

njmulsqb commented 5 months ago

Thank you for detailed response @mildred

What I am looking for is probably the third option you mentioned

* **perhaps simpler, accounts can receive funds from any currency:** this means that accounts can have funds in mixed currencies such as your client account could have 10 USD + 20 PKR. Transactions with mixed currencies need to have a conversion rate, and reports needs to apply a conversion rate on the fly. Still, there are perhaps more accounting rules to follow.

We can do everything in our reference currency i.e. PKR in this case, but we need to have hold of what income/reserves do we have in other accounts. As most of my retained earnings are in USD, I am not able to properly keep track of my profits in Frappe. We can fetch the real-time exchange rates of the currencies from APIs like https://exchangeratesapi.io/ (each user has to feed its own API key in Frappe) or free options like https://github.com/fawazahmed0/currency-api In this way, users with earnings in foreign currency will be able to see it in their reference currency. We can use multiple bank accounts here but just need to create transactional entries in foreign currencies.

This should not be very challenging as it is somewhat similar to https://docs.frappebooks.com/transactions/multi-currency-invoicing.html except that we're fetching the exchange rates on the fly now instead of hard-coded entries by the user.

As for invoices, I can make the purchase invoices in foreign currency as I am going from my reference currency PKR to USD so it happens immediately, e.g. I buy something in USD online, but I cannot do sales invoices in USD because I can't store USD in my balances and I dont immediately convert from USD to PKR so can't specify exchange rate there.

This can be a groundbreaking feature as its being offered by other paid solutions behind big paywalls. Here are some links that you can refer to, to understand their implementation:

  1. https://www.zoho.com/books/kb/banking/multi-currency-bank-account.html
  2. https://help.zoho.com/portal/en/kb/crm/organization-settings/company-settings/articles/multiple-currencies

edit: Just found a similar issue already opened: https://github.com/frappe/books/issues/183, same feature request submitted by another user 3 years ago -- so now you know which feature needs priority implementation :)

njmulsqb commented 5 months ago

I have started using GNUCash as it brilliantly handles Multi-currency; reference: https://gnucash.org/docs/v5//C/gnucash-guide/chapter_currency.html

mildred commented 5 months ago

So, an account could have funds in multiple currencies. Reports could either show the amount in those accounts in all of their currencies or would use a conversion rate (either automatic or manual) to show a unified value.

Under the hood, this probably means that AccountingLedgerEntry would need to have a currency field, and everywhere these are summed, they should be summed per account, but also per currency to then being displayed with the conversion rate.

I see those sums to happen in

Isaac-GC commented 5 months ago

@njmulsqb There already looks to be a similar multi-currency abilities here: https://docs.frappebooks.com/transactions/multi-currency-invoicing.html#multi-currency-invoicing

Not sure if this is what you are looking for?

KashifAhmed commented 4 months ago

@Isaac-GC, I believe they are seeking a solution that supports multiple currency accounts. Currently, the software only allows for saving in a single currency.