Without getting into many technical details, mastercard card payments are a two step process: when you pay with your card (the authorization), and when the merchant collects the money (clearing and settlement).
We receive messages from Mastercard for both of these and we need to match them up to say “yep, this clearing message is collecting the money for this authorization”.
In some cases we are unable to match them due to data quality issues. In a perfect world, this wouldn’t happen, but in the real world this is a constant problem. When data quality issues happen with big merchants (like Tesco in this case) it’s up to each bank to decide how to handle them. For this particular case, a particular data element we were expecting contains wrong information and as such we can’t easily match them together.
While there’s certainly room for improvement, this is a balancing act where we need to provide as much accuracy when matching as we can without overdoing it. The implementation we have weights heavily on that data we’re currently receiving incorrectly, and changing this could spawn a whole load of new issues, so we have to be very careful whenever we change it.
As we explore our options, we’re in conversations with the acquirer sending us this unexpected data so we can understand why they’re doing this and how we can work together to find the best possible solution.
In the meantime, I wholly understand this is annoying, but the best course of action I can suggest is to speak with Monzo support. I am not in the fincrime / disputes team, so I cannot speak for their reasons to enable or disable the in-app funds releasing option that was there before (mostly because I don’t know them). I will let our support managers that this is a problem so they can review their processes and see if we can allow for Tesco funds to be released when this happens.