Being within the last month of his contract, he decided to change to a different company, fully aware that he would still owe a cancellation payment to O2. He calculated that it would be a pro rata amount for the two remaining weeks of his contract, which sounds reasonable to me.
He received a final bill of £322.
When he inquired he was told that they had no "mechanism" to charge him less than one months payment and the £300 was the "admin fee".
A further thought which occurred to me was that, if he paid monthly in advance, which he did, then he has already over paid beyond the end of his contract.
Nice way to say "Thanks for your business".