The most common 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 transactions 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 the MMS back to Caterbook. Cancelling a transaction in this way will still leave the record of the original payment in the booking record. To balance the booking you would need to add a refund in the booking record using the 'Miscellaneous Refund' payment Type.
For this reason we'd advise you not to use this method 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.