Can I keep a non-refundable deposit if a client cancels?
It depends on what the deposit is doing. Where a customer cancels and you have genuinely incurred cost - materials bought, time spent, a slot held that you could not fill - keeping the amount that covers that loss is compensation, and most scholars permit it. Keeping the entire deposit regardless of what you actually lost is a penalty rather than compensation, and scholars are much more cautious about that, because you would be taking wealth beyond any harm suffered. There is a recognised classical arrangement close to this: arbun, an earnest payment where the buyer may withdraw and the seller keeps the deposit, which the Hanbali school permits explicitly and AAOIFI has adopted for Islamic finance. The practical resolution most scholars point to is to size the deposit to the real cost of a cancellation, state clearly at booking what happens if the customer cancels and when, and return anything above your actual loss.