Personally whenever I need to pay 123reg (or anyone similar) for a domain I use a virtual credit card, loaded with only enough credit for the transaction. Then, any attempt to reuse it always fails.
Works well for car insurance renewals as well - since they are likely to try to charge your card for another year (at a rip off renewal price, of course) even though you've told them you're going elsewhere.