Multi-Currency Bank Accounts

or Foreign Currency Accounts (FCAs)

As at 13th Jan 2008 we don't have these.

We have bank accounts where we can enter FX payments and receipts - with the conversion back into functional (home/reporting) currency. The bank trans table records the FX amount and the exchange rate back into functional currency.

If we would want to be able to pay and receive other currencies into the FCA, to fully record FX bank transactions in another currency then we also need to record the exchange rate of the bank account currency to functional currency eg.

The functional currency of USD - and we have an FCA in AUD - we want to be able to make payments in CHF from the AUD account and recieve CAD into the AUD account as well as making AUD payments and receipts.

1 USD = 1.12 AUD

When you enter a CHF (swiss franc) payment from the AUD (Aussie Dollar) FCA (Foreign Currency Account) you would need to enter the rate to purchase CHF in AUD - 1AUD = 0.98 CHF - this would be the rate that you would need to enter the bank payment at. The system would then use the USD- AUD rate which we need some new way or recording and the AUD-CHF rate (as currently entered on payment entry) to determine the USD-CHF rate 1CHF = 1/0.984 AUD = 1/0.984 / 1.12 USD = 0.907 USD - this is the rate that the system would need to use to record the GL impacts of payments.

Obviously it would be much simpler to record payments in just two currencies the functional currency and the currency of the payment... but we lose flexibility there are times when we would wish to be able to pay a supplier using funds in an FCA in a currency other than the currency of the account. I think it would be a mistake to hack something simple up that only covers the simple case. So it is potentially a little bit tricky to build this in - and will cause confusion for folks doing data entry if we are not careful.


The Bank Accounts table needs to record the base currency for the bank account - currently all bank accounts are in the functional currency so a new field needs to flag the base currency of the account.

The Bank Trans table needs to record the conversion rate between the bank base currency and the functional currency. Currently we only have the conversion rate between the currency of the payment (that could be different from the currency of the account - we only allow functional currency bank accounts at the moment of course)
The Bank Trans table needs to record the closing balance in its base currency after the transaction is processed. (alternatively we could have a field in Bank Accounts that retains the current balance in bank account base currency.)

We need a facility to be able to revalue an FCA after entering the current exchange rates for the FCA - this facility would create GL entries in functional currency to revalue the account in functional currency and write off the difference to exchange gains/losses. The Bank Accounts table would need an additional field to allow this GL account to be specified.

We don't currently have a facility to print out bank account transactions... we would need this report to show both the currency of the bank account and in the functional currency also.

<Comment from Micheal>

'm not familiar with all the inner workings of webERP. But can add the following comments based on a study of frontaccounting which seems to handle multiple currency bank accounts well:
1) The exchange rate is kept in a table arranged by date. As new transactions take place that require an updated exchange rate it is entered into this table. This way the system always remembers what exchange rates were used for a transaction.
2) a useful button is placed in the bank transfer form to allow updating the exchange rates. This button queries an online site and looks up the most recent exchange rate for the 2 currencies - code is easy to find in FA.
3) near as I can tell the bank_trans table does not record the exchange rate used, but just records a withdrawl from one account (say account A) in that accounts currency, and a deposit in another account (say account B) in that accounts currency. No reference is made to the exchange rates in bank_trans. it is implied because different amounts are taken out/put into the different accounts.
4. the gltrans table records everything in the base currency. in gltrans, what comes out of account A is the same as what goes into account B.
-- (2008-01-14 13:01:04)

This is a complex subject, but an important omission from the current webERP. We currently deal ok with transactions in multi currencies in our functional currency bank accounts, so the problem is how to deal with transactions into foreign currency accounts.

Lets take an example. A customer gives us a cheque for USD100 in payment for an invoice of EUR80 and we wish to bank this in our EUR account and our functional currency is GBP. Lets say the standard USD->GBP rate is 2.0 and the standard EUR-GBP rate is 1.5 (these will be set up in the currencies section of webERP). However the bank gives us a USD->EUR rate of 1.4 and credits our EUR account with EUR71.43. I believe the general ledger transactions would be in GBP and are

Dr EuroBank 47.62 (EUR71.43/1.5)
Cr Debtors 53.33 (EUR80/1.5)
Dr Ex gain/loss 5.71

If the banktrans table holds the bank account (so the currency of the bank account can be obtained), and the actual exchange rate for the transaction (USD->EUR 1.4) in the above transaction, and the actual currency of this transaction (USD) this should be sufficient to recreate the euro bank account transactions - However this could produce rounding problems would it be better to add a field to hold the bank currency value of the transaction in banktrans?

We would of course need an additional field in the bankaccounts table to hold the account currency. This should not be allowed to be changed once transactions are made to that account.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki