The thing is you CAN charge a reasonable amount for the time it has taken you and the costs invilved in solving a dispute - IF you have a situation where the comapny is liable in a claim against them.
It works like this -
You have a contract when you purchase goods from a retailer, if that contract is broken, then they are in breach and your claim is for your losses including costs incurred to put the matter right. The costs must be reasonable and a jusge would soon throw out any "£30 per letter = £120" claims unless hte letters were actually written by a solicitor or similar.
The situation with the banks is different. You have a contract with them and that contract states that they may charge you "X" amount when you go overdrawn etc. Therefore, you have agreed to pay this sum when you do.
Try getting an online retailer to agree to pay you £30 every time you write to him during a complaint and it would stand up in court - I dont think many retialers would agree though.....