As long as the cancellation fee is disclosed to customers in advance, in some resonable way (e.g. not buried in tiny small print in obscure language, or only on your website on a rarely visited page) it is enforceable. If it's one of the terms of your service that you can show customers are--or at least, reasonably should be--aware of when they contract for your services, then it is an enforceable term. If it's in your service agreement, fairly prominently, and the agreement is signed in advance, then you should have good grounds to charge this fee, the same way many doctors and dentists will charge a fee if a patient cancels with too little notice, or a hotel can charge a night's stay if a customer doesn't cancel 24 hours in advance. It's all about showing that it was a known (or should  be known) term which people were made aware of prior to signing.