£7k in damages for you breaking a relatively large contract seems pretty reasonable
Yes, I said “for you breaking” because terminating the contract before it expires is a breach of the contract by you. When you break a contract the other party is entitled to damages - to be placed in the position they would have been in if you hadn’t broken the contract.
While described as an “exit fee” it appears that the £40 per unit is actually a liquidated damages clause - a pre-agreed figure of the damage the breach will cause to save the cost and time involved in actually working out the actual damages, through the courts or otherwise. These are totally enforceable providing they represent a genuine pre-estimate of the loss - £40 per unit doesn’t seem like a lot - and anyway, the time to object to such a clause is when you enter the contract, not when you try to leave.
You refer to “incompetence, poor financial management and all round ineptitude” (be careful what you say because defamation is a real thing) but unless and until this is a breach of their obligations under the contract, the law doesn’t care. If you can point to their acts and omissions and how these fail to meet their obligations under the contract, then they will be in breach and you would be entitled to damages for that breach. However, unless the contract specifically allows for termination for those breaches or unless those breaches amount to failure of consideration (i.e. they have done virtually nothing they were contracted to do), it will not give you a right to terminate.
So long as they have done the bare minimum that the contract requires, whether or not you find that satisfactory, they are not in breach and you don’t have a right to terminate. That’s why you terminating is a breach - breach by one party does not justify breach by the other.
Next time, make sure the factor’s obligations and your expectations are aligned in the contract.