With globalization in full force, companies have customers, suppliers, investors, and other business partners across the globe. So it's important that business management software supports multiple currency accounting(MCA).
1. Why Do We Need Multi-currency Accounting?
Let’s understand this with an example. We, Frappe Technologies Pvt Ltd are based in India and the local currency is INR. We use ERPNext to manage our business(no surprise here :P). Can we post all our transactions in INR to simplify the bookkeeping? For example, when we receive a payment from a client based in a foreign country, can we calculate the amount in INR as of the prevailing exchange rate and post the receipt and be done with it?
No, we can’t. And there are multiple reasons for that.
- Clients would like to receive the invoice in their currency and not in INR. At the same time, we need to record our income in INR.
- We need file reports about payments received from overseas clients with details of currency to the government.
- We have bank accounts in other countries and the bank account statements will be in relevant currencies. In order to reconcile the bank account ledger we need transactions to be posted in relevant currencies
- We need to track foreign exchange loss or gain when we move money from bank account in one country to an account in another country.
So we need MCA. Multi-currency accounting.
2. The Base Currency
The base currency is the currency of the country where the business is primarily based. It is also known as the functional currency. Generally, this is the currency in which most of the transactions occur. Also, the financial statements like balance sheet, profit and loss, and cash flow are published in this currency.
In ERPNext, the base currency is set while creating the company. Once the base currency is set, it cannot be changed.
Each ledger in your chart of account also has a currency associated with it. It may be the same as base currency or different. All the ledgers which are created automatically by ERPNext, when a company is created have base currency as their currency. Some ledgers will have a different currency. For example, if you open a bank account in another country, you will have to choose the relevant currency in the ledger.
3. Transaction Currency
Transactions like sales invoice, purchase invoice, payment entry, and journal entry can be posted in any currencies. For example, an invoice can be raised in USD or EUR. ERPNext comes with 146 currencies and 8 of them are enabled by default. You can enable other currencies as per your requirements. You can also create additional currencies if needed.
For every currency that you raise sales invoices or purchase invoices in, you need to have corresponding debtors or creditors ledger with respective currency and they must be linked in customer and supplier master as shown below.
4. Multi-currency in GL Entry
When a transaction is posted with a non-base currency, the GL entry of that transaction will have numbers in both base currency and transaction currency. This happens only for those ledgers which have non-base currency as their currency. This helps in showing reports in both currencies.
5. Multi-currency in Reports
As GL entry records amount in both base and transaction currency, it allows the financial statements to be published in base currency and also show reports in other currencies.
6. The Currency Exchange Rates
The currency conversion rates are very dynamic and change every second.
There are two ways to handle this.
You can set a fixed exchange rate for a specific period and post all your transactions at this exchange rate and revaluate your assets like bank balance and receivables and liabilities like payables at the end of the quarter/year or a specific period. You can create a 'Currency Exchange' record as shown below.
You can record the real-time exchange rates in your transactions.
ERPNext handles the currency conversion rates as following.
- First, it will check if 'Currency Exchange' is defined, if so it will fetch that.
- If not it will fetch the latest exchange rate from a third-party service https://www.frankfurter.app/
- If it cannot determine a rate by the above-mentioned methods, then it will force the user to provide an exchange rate.
- Even if an exchange rate is fetched by either of the above methods, you can overwrite manually in the transactions. This may be needed in specific cases. For example, if you are a company based here in India and import materials, you need to use the exchange rate as of BOE(Bill of Entry) issue date which is issued by the Customs department.
If a sales invoice is raised to customer in a foreign currency and payment is received later into the bank ledger with the same foreign currency then you can maintain the same exchange rate. However, if the payment is received into a ledger with the base currency you can record the exchange gain/loss at the payment entry time.
7. The Exchange Rate Revaluation
Periodically(i.e every month/quarter/year), you can revaluate your assets and liabilities which are recorded in the non-base currency as of prevailing exchange rates.
You can post an 'Exchange Rate Revaluation' entry and this will post exchange gain or loss.
I hope this helped you understand the basics of multi-currency!
ERPNext is free and open-source software. You can install it on your own server by following installation instructions here https://github.com/frappe/erpnext
Or you opt for managed hosting and support by signing up on https://erpnext.com/