Thursday, February 20, 2014

Foreign Currency Revaluation

The foreign currency revaluation periodic function is used to recalculate currency amounts based on a new exchange rate. At the time of the transaction, the system uses the spot rate setup in the currency exchange rate table. At month end, the currency amounts should be reevaluated based on the month end rate (for BS accounts) or the monthly average rate (for P&L accounts).

Also, if your company is setup with a reporting currency, this function must be used to recalculate correctly the reporting currency amounts. One example is to reevaluate the open balances with the correct exchange rate (see previous post on this blog to understand why the open balances are not properly translated).

Before the function can be executed, the exchange gain/loss accounts must be setup. Ensure those accounts are setup properly before executing the function otherwise the adjustments will be posted to the same account as the original transaction. This will not adjust the balance of your trial balance and also the adjustments will not be updated if the setup is changed after the fact, you would have to do a manual reclass. There are two areas to setup those accounts:

- General Ledger > Setup > Ledger: this setup is company wide and not specific to a currency. Specify the realized gain and loss accounts for transactions that are fully settled and setup the unrealized gain and loss accounts for transactions that are open (invoices not paid for example).

- General Ledger > Setup > Currency > Currency revaluation accounts. First select the currency you want to setup the accounts for, this will override the setup on the ledger form (see above).

The next step is to setup the exchange rate that the function will use to reevaluate. By default, the rate used is the one setup in the table selected on the ledger form. For BS accounts, it will use the last rate setup for the period so nothing should be changed, however for P&L we need to calculate the average of the period.

You will need to calculate your average off system and manually add it to the currency exchange rates type table found under General Ledger > Setup > Currency > Currency exchange rates. 
Create a new exchange rate type to make sure the spot rates are not overridden and manually add the rate for the period and the currency in that new exchange rate type.

The last step is to setup the number sequence that the system will use to post the adjustments entries. This is important for audit purpose since those transactions are system generated.
Go to General Ledger > Setup > General ledger parameters > Number Sequences and select the Foreign currency revaluation number sequence. I used "GL-FCR-" as a prefix so I can easily identify those transactions on the account.

Once the setup is completed you can then execute the revaluation. The function is located under General Ledger > Periodic > Foreign currency revaluation:
   - The function can be executed either for a specific account or for the entire chart of account. You will want to select a single account when you reevaluate bank accounts for example, this will prevent foreign transactions posted to other accounts to be reevaluated.
However, if you want to reevaluate the reporting currency, you can select the entire chart of account (select the first account of your COA in the from main account and the last account of your COA in the To main account field).
   - The from and to dates are used to only reevaluate transactions that have been posted in that period.
   - The currency code will be the currency you want to reevaluate. For bank account it would be the currency of the original transaction posted as opposed to reporting currency would be the reporting currency setup on the company and not the currency of the transaction.
   - Select which account type you want to reevaluate BS or P&L. This is an extra filter if you enter a range of accounts in the from and to main account but only want to reevaluate the P&L accounts for example. If you want to reevaluate the entire COA then you will check both check boxes.

Before you click Ok make sure the correct exchange rate type is selected on the ledger form so the correct exchange rate will be used. Also, keep in mind that if you modify the default exchange rate type on the ledger form, it will impact the rest of your business if they post transactions, so you might need to run this reevaluation outside of business hours to prevent errors.

Once the function has been executed, you can verify the posted transactions in the account being reevaluated and in the account setup for exchange gain/loss. The voucher of those transactions will be based on the setup of your number sequence previously done.

I hope this will help you and if you have any questions please do not hesitate :)


  1. Thank you Caroline for the post.

    In the post you mentioned that before we run the Foreign Currency Revaluation ,we need to change the Default Exchange rate type .

    What i under stood is We need to maintain the 3 exchange rate types
    a) Default - for normal transactions.
    b) Closing - For balance sheet account for FCR job
    c) Average - For P&L accounts for FCR Job.

    Intailly i would define the default exchange rate type in the ledger form for all normal transactions.

    When i need to run the FCR batch job for BS accounts , then i need to go the Ledger form and change the exchange rate type from Default to Closing and run the batch job .

    Same way for the P&L accounts select the code to Average and run the batch job.

    After completing the two then we need to re select the Default type for normal transactions .

    Am i right ?

    b) generally we need to run the FCR batch job for BS accoutns only. But why we need to run the FCR batch job for P&L accounts .
    Please explain with an example .

    C) In AX , we dont have the FCR batch job for the Bank accounts , So How to revalue for the bank accounts ( in AX we have the Subledger and main ledger ) ?

    Thank in advance.

  2. Hi Lally,

    a) Yes you are correct regarding the ledger setup and how to change it to what you need when you run the FCR.

    b) P&L accounts are reevaluated with the average rate of the month. This is a GAAP requirement to reevaluate the expense recorded in a period.

    c) The bank accounts should be reevaluated on the GL side only. The bank transactions in the local currency are what you will use to do your bank reconciliation and those are not reevaluated. Only the GL balance of the bank account will be reevaluated in the accounting currency (the bank balance will not change)

    Let me know if this doesn't make sense.

  3. Hi Caroline ,

    Thank you for the reply.

    Generally we need to run the FCR batch job for BS accoutns only. But why we need to run the FCR batch job for P&L accounts .
    For example , when i am doing the FCR for the Accounts payable , in that case obviously i would place the check mark in the field " Include balance sheet accounts only " , then it would post to Accounts payable account and Unrealized accounts .

    But my question is in which scenario i need to select include P&L accounts also ?

    Please share your experience with an detailed example.

  4. Great post it’s really very important to blog about something which you are passionate about Foreign Currency Revaluation, you will have very hard time in doing so thanks for sharing.

    Foreign Coin Currency Exchange

  5. Hi Caroline - Thanks for the great guide. I have one follow-up question that I'm struggling to find an answer for:

    Is it possible to set different revaluation accounts based on the main account? For example, I want to revalue most accounts to gain/loss on foreign exchange (PL account) but goodwill/investment accounts to other comprehensive income (Equity account). Is this possible or does it require a manual adjustment to move the revaluation amounts to the right account?


  6. Hi Caroline, I have a question on bank account revaluation.

    We have a few foreign currency bank accounts (GL cash accounts) that we need to revalue at the end of the period. Is it possible to post the gain/loss on these accounts to the realized gain/loss account when you run the revaluation (as opposed to the unrealized account)?


  7. This comment has been removed by the author.

  8. Hi,

    We have been using the foreign currency revaluation function for pretty long time. Now we want to track how much is the Unrealised gains from each customer and vendor based on the invoices. Though the simulation gives a fair picture before posting the entries, i am unable to calculate or view through a report what is the actual unrealised gains from each invoice.
    Basically im trying to build a report on the unrealised gains and realised gains. Is there any specific table in AOT which tracks the same? please help me on this.