Automatically recognise realised FX gain/loss when transferring the full balance of a foreign currency bank account
Problem
When a user uses Xero's Transfer Money function to transfer the entire balance of a foreign currency bank account, the foreign currency balance correctly becomes zero.
However, due to exchange rate differences between the original transaction date and the transfer date, Xero may leave a residual balance in the base currency (for example, SGD) within the account transaction history.
This remaining balance represents a realised foreign exchange gain or loss arising from the disposal of the foreign currency funds. Therefore, Xero should automatically recognise this FX difference and clear the bank account balance.
The expected accounting outcome should be:
• Foreign currency balance: 0.00
• Base currency balance: 0.00
• Realised foreign exchange gain/loss correctly recognised in the appropriate FX gain/loss account
Current system limitation
Currently, when a user transfers the full balance of a foreign currency bank account using Transfer Money, Xero does not automatically recognise the realised foreign exchange gain or loss generated from the transaction.
As a result:
• The foreign currency balance is already zero.
• The bank funds have already been fully transferred.
• However, a residual base currency balance may remain in the account transaction history.
This prevents users from completing the accounting process through the normal Transfer Money workflow.
Issue with the suggested Spend Money / Receive Money solution
Xero Support previously suggested creating additional Spend Money / Receive Money transactions and adjusting the FX amount to clear the remaining balance.
However, this suggestion is not applicable for Singapore Xero organisations for the following reasons:
1. The Singapore version of Xero does not provide a function to independently override the base currency amount in a Spend Money / Receive Money transaction.
2. Creating an additional foreign currency transaction would change the foreign currency bank account balance and would not naturally maintain the foreign currency balance at zero.
3. These transactions do not represent actual banking activity. They would only be created to force the system balance to clear.
4. This approach would result in:
o Artificial transactions appearing in the bank account history.
o Additional accounting adjustments.
o Reduced transparency and auditability.
o More complicated bank reconciliation processes.
Therefore, Spend Money / Receive Money is not a standard or appropriate solution for Singapore Xero users facing this scenario.
Suggested product improvement
Enhance Xero's multicurrency functionality so that when a user transfers the full balance of a foreign currency bank account:
1. Xero automatically calculates the realised foreign exchange gain or loss.
2. Xero automatically posts the FX difference to the correct realised currency gain/loss account.
3. Xero automatically clears:
o The foreign currency balance; and
o The corresponding base currency balance.
4. The accounting record remains accurate by keeping only the actual Transfer Money transaction, without requiring artificial adjustment entries.
Example scenario
A USD bank account receives USD 16,800,000, recorded at SGD 21,759,346.81 based on the exchange rate on the receipt date.
The full USD 16,800,000 is later transferred to an SGD bank account using Transfer Money, recorded at SGD 21,742,560.00 based on the exchange rate on the transfer date.
Result:
• USD bank account balance: USD 0.00 (correct)
• Remaining SGD difference: SGD 16,786.81
The SGD 16,786.81 difference represents a realised foreign exchange gain/loss and should be automatically recognised by Xero as part of the Transfer Money process.
Currently, users are required to find manual workarounds, but these workarounds are either unavailable in Singapore Xero organisations or do not represent proper accounting treatment.
Benefits
• Provides an accounting workflow that reflects real-world foreign currency transactions.
• Avoids creating artificial bank transactions.
• Improves audit trail transparency.
• Reduces manual adjustments and user errors.
• Provides a more consistent multicurrency experience across Xero regions.
Requested enhancement
Please consider adding functionality so that when a user transfers the full balance of a foreign currency bank account using Transfer Money, Xero automatically recognises the realised foreign exchange gain/loss and clears both the foreign currency and base currency balances.
In addition, Xero Support guidance should be updated to avoid recommending Spend Money / Receive Money adjustments in regions where the required functionality is not available.
Thank you for raising this as a Product Idea. We reviewed the scenario and confirmed that Xero can record this using the existing foreign-currency transfer workflow.
When money is transferred between bank accounts in different currencies, Xero calculates the transfer exchange rate from the amounts entered on each side of the transfer. It does not use the exchange rate saved in the organisation’s currency settings for this calculation.
This workaround allows you to record the transfer using the exchange rate that applied when the USD deposit was originally recorded, and then account separately for the difference caused by the exchange rate used when the funds were transferred to the SGD account.
In this example:
- USD 16,800,000 is received into the USD bank account on 1 July 2026.
- The funds are then transferred from the USD bank account to an SGD bank account.
- The exchange rate used when the funds are transferred to the SGD account differs from the rate used when the USD deposit was originally recorded, resulting in a different SGD amount.
Work around:
- Confirm the relevant amounts:
- The exact USD amount leaving the USD bank account.
- The SGD amount calculated using the exchange rate applied when the USD deposit was originally recorded.
- The actual SGD amount received in the SGD bank account when the transfer was completed.
- The difference between the SGD amount entered in the transfer and the actual SGD amount received.
- In Xero, select the plus (+) icon and choose Transfer money.
- Select the USD bank account as the From account and the SGD bank account as the To account.
- Enter the actual transfer date.
- Enter the exact USD amount leaving the USD account and the SGD amount calculated using the exchange rate applied when the USD deposit was originally recorded. Xero will calculate the transfer exchange rate from these two amounts.
- Save the transfer.
- Reconcile the USD bank statement line against the USD side of the transfer. Because the transfer uses the exact USD amount, it should match the statement line.
- In the SGD bank account, create a Spend money transaction for the difference between the SGD amount recorded in the transfer and the actual SGD amount received:
- Enter the SGD difference as the transaction amount.
- Assign the transaction to the Realised Gains and Losses account.
- Use the transfer date, or the date the difference is recognised in the bank account.
- Add a reference explaining that the transaction records the exchange-rate difference between the original USD deposit and the later transfer.
- Reconcile the SGD bank statement line by selecting both the SGD transfer receipt and the exchange-rate-difference transaction. The transfer receipt less the adjustment should equal the actual SGD amount received in the SGD bank account.
- Run the Account Transactions report for the SGD bank account to confirm that the transfer and fee together match the bank statement and that there is no remaining difference.
The SGD amount entered in the transfer should be the amount calculated using the exchange rate applied when the USD deposit was originally recorded. The separate spend-money transaction then records the difference caused by the later transfer rate. Do not enter the actual SGD deposit in the transfer and also record the difference separately, as this would duplicate the adjustment.
If the entire USD balance is transferred out, the USD account will have no remaining balance from this transaction to revalue after the transfer date. The exchange-rate movement up to the transfer date remains a genuine foreign-exchange difference and is represented through the transfer rate and the separately recorded Realised Gains and Losses transaction.