Some contractors can certainly charge monies for estimates if the estimates are for designs and the like.  However, to simply charge to give only an estimate without a design (that you can presumably take to someone else) is highly fraudulent and unconscionable. You may wish to contact the licensing authority for contractors in your state and/or your state attorney general and file a consumer complaint.