This is a loaded topic but, I always go hourly. I can give them the hours I expect to need which gives them a "flat rate" to prepare for and if they want to add to the scope, it's easy to explain how many hours it would add. I also tell them to never try to micromanage my hours or the contract is over. Some people will try to tell you how much you should be able to do in an hour, avoid them.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.