In May 2019, my mother had Revolut balances of GBP 57.20 and EUR 35.00. She knew that later in the year she would need to make a payment of EUR 100. Therefore upon my advice, she created a limit order (which Revolut calls “auto-exchange”) to sell GBP 57.20 against EUR at a GBP/EUR rate of 1.1363 (equivalent to a EUR/GBP market convention rate of 0.8800). This would buy her EUR 65.00, which would top her EUR balance up to the required EUR 100. After she patiently waited several months, the Revolut app confirms that Revolut’s GBP/EUR rate rose above 1.1363 up to 1.1375 on Friday 20th September 2019, but her order was not filled and her Revolut app instead gave an error message of “We couldn’t perform your auto-exchange due to low balance”. The error message is implausible, because the amount of her order was exactly equal to the balance of the currency that she was selling, i.e. GBP 57.20. When she queried this with Revolut support, they responded:
Insufficient balance of £57.20; required £57.21 (extra £0.01 is required)
My mother asked Revolut support five times for its calculations to demonstrate why GBP 57.21 was required, but each time they responded with unhelpful waffling drivel, devoid of any calculations, for example:
If the price hits your set amount, we do an exchange with the market price. We don’t guarantee this price, as the price might have moved between the time the auto exchange price is hit, and the time that the server executes the price. We will just execute the exchange at the current price after the target is triggered. The exchange will only trigger once your target rate has been reached, but you should be aware that the rate could be slightly different from your target value when the auto-exchange takes place. This happens because the exchange rate never settles.
As the rate is changing constantly (every second), even if the auto exchange was triggered for the specific amount: 57.20 GBP, it can slightly change during the actual process of the exchange. And in your case, this rate changed a bit and the amount that was required to complete it changed from £57.20 to £57.21. That’s why we are stating this in advance: The exchange will only trigger once your target rate has been reached, but you should be aware that the rate could be slightly different from your target value when the auto-exchange takes place.
Auto exchange process depends on the current exchange rate. And we cannot keep a fixed rate just to complete the transaction. We don’t guarantee this price, as the price might have moved between the time the auto exchange price is hit, and the time that the server executes the price. If the rate changes while we are trying to execute the exchange that you set up, the system has to apply it, and the initial amount for completing it can be different. So, to sum up: you set up 57.20 GBP to be exchanged to EUR. When the rate was reached, auto exchange was triggered, but it could not be completed, because at that moment, the current rate changed, and the price for this exchange was raised by 0,01 GBP. As you did not have this amount in your account, we could not finish this auto-exchange. I can also send a request for the relevant team so they could check what was the exact rate when this auto exchange was triggered, so you could see how it changed when we tried to complete this exchange. Is that ok?
Our technical team has replied and the balance occurred too low due to fact that during processing this exhchange rate has changed, and 52.01 GBP was required
The last response containing the technical team’s explanation shows that they are even more incompetent than the support team, given that they believe amount of the order to be £5.20 less than it actually was. So there’s no hope of them being capable of providing a calculation.
All of Revolut’s explanations fail to understand that:
- The starting amount, i.e. the sold currency, was exactly GBP 57.20. In other words, the GBP amount was the entered amount and consequently fixed, whereas the EUR amount, i.e. the bought currency, was potentially variable, for example if the GBP/EUR rate moved immediately after the order level of 1.1363 was triggered. Therefore no movement in the GBP/EUR rate could have caused GBP 57.21 to be required.
- After Revolut failed to fill the order, it subsequently failed to fill the order at any point during the many minutes while GBP/EUR was between 1.1363 and 1.1375. If an order fails, then Revolut should not stop trying to fill it, particularly if the customer has more-than-sufficient funds in the sold currency.
I expect that the EUR/GBP interbank rate will soon drop below 0.8800 again (1.1363 in inverted GBP/EUR terms), in which case my mother will complete her transaction manually. However, as I often use limit orders in Revolut myself, I am concerned that there is a bug and that one of my own orders will in future fail in a similarly unexplained manner. My profession is an eFX consultant (foreign exchange e-commerce), which involves designing and implementing FX trading systems, including order management functionality, for tier one and two investment banks. Therefore I gave my mother carefully-worded questions to ask Revolut support. It is clear that Revolut lacks FX subject matter expertise, having implemented its “auto-exchange” functionality with this bug and another bug, and its support staff are incapable of understanding the existence of this bug or supplying calculations. My mother will be submitting a complaint to Revolut, but before she does so, can anyone shed any light on this? Has Revolut failed to fill anyone else’s orders, particularly when they sold exactly their full balance in a particular currency?