The commonest reason for a Caterpay refund to fail, is that the money hasn't yet been settled by your acquirer (via your Merchant ID or "MID"). You have not received the money at this point.
This usually happens when you are trying to refund on the same day as you have charged a card.
Think about this for a moment. You could refund the full value of the transaction, but then have the original "Sale" transaction be declined by the guest's bank, leaving you not just without the original payment, but also having refunded them for money you have not received.
These days, most transcations will be settled overnight, so normally you would be able to process the refund the following day.
It is possible to effectively "cancel" the transaction from your Merchant Management System (MMS) login, so that it is never sent for settlement, and therefore would not need refunding.
From the Transactions tab, find the payment in question, and if it is showing as having a status of CAPTURED (rather than ACCEPTED which means the transaction is settled) you can choose to CANCEL SALE from the drop down.
WARNING. There is no link from MMS back to Caterbook. Cancelling a transaction in this way will still leave the record of the original payment in the booking record. You would need to add a -ve priced extra in order to make the booking "balance" and make a note of this when you come to do your payment reconciliation. This report will not balance with your actual payments when you perform a CANCEL SALE in MMS.
For this reason we strongly advise you NOT to do this except in extreme circumstances (for example, you added an extra zero onto the payment by mistake, and tried to collect £1000 instead of £100.) In most cases, you are better waiting until the following day and processing the refund correctly.