Multi-currency Bank Transfers
Currently, if I try and send a Bank Transfer through the APIs between 2 accounts with different currencies, I get an error response with the message:
"Multi currency Bank Transfers are not currently supported"
There is a field for the "CurrencyRate" in the documentation for GET, however, setting this for a PUT call, results in the same error message.
It's possible to do this through the UI as a user, it should also be possible to do this through the APIs.
I managed to find a workaround for this, although it's still a bit annoying that the api doesn't support multi-currency transfers.
It's possible to do currency transfers through a regular account listed in your chart of accounts, so just create a new transfer account for the currency pair you are dealing with, then use the api to add regular bank transactions to it and then withdraw the same amount with the correct exchange rate.
create GBP_AUD_TRANSFER account
Add "spend money" transaction from AUD account to the transfer account, e.g. A$30
Add "receive money" transaction to GBP account from the transfer account and pass "currencyRate" as one of the fields for the transaction set to the rate you want to get back in GBP to zero out the transfer account, e.g. if you receive £15 the exchange is A$30/£15 meaning it will withdraw the original $A30 from the transfer account leaving it empty.
This is a must have for businesses which make a large number of FX transactions between their accounts. I imagine the lack of support for multi-currency bank transfers in the Xero API is the reason why neither the Revolut nor the TransferWise integrations with Xero offer the ability to automatically create the bank transfer between the two accounts with the correct exchange rate. Instead, the user must manually enter the buy/sell amount when reconciling the transaction from the account statement of the sell/buy currency.