Mindy Chen-Wishart. Contract Law (2018 6 edn). p 568.
Kindly see the red underline.
Rather than saying "If you breach these terms by doing X you agree to pay damages/penalty of..." you can phrase it as "The fee for doing X is ...".
Para 2 of the quoted text gives a good example. The bank wanted to put a limit on overdrafts. The obvious way to do this would be to just write a contract term such as:
You agree that you will not exceed an overdraft of £1,000.
The trouble is that breach of contract is limited to the direct damages actually incurred. The bank could try something like this:
You agree that the damage to us of exceeding the overdraft limit is £50 per month.
However the Penalty Clause rule says that this is not allowed: the bank still needs to prove that it actually suffered £50-worth of damage.
To get around this the bank could phrase it like this:
We will provide you with an unlimited overdraft facility. This is free for the first £1,000. Any overdraft in excess of this limit and will be charged at the rate of £50 for every £1,000 or part thereof, for each month or part thereof.
This describes the £50 as a fee for a service rather than a penalty for breach of contract, so that is considered to be OK.
However you can't get away with just charging a huge penalty and calling it a fee. That is where it gets complicated.
In the UK this often comes up in private parking. The sign shown here is typical:
£80 if you fail to pay or [list of other restrictions] (a Charge Notice to pay will be issued) and you also agree that a wheelclamp may be applied which will be released on payment of £250 (in addition to the charge notice of £80).
The notice doesn't say that there is an £80 penalty, it says that there is an £80 fee.