On the other hand, fixed price quotes can also be a little less than transparent, and clients like transparency about how you're charging.
I use the best of both worlds:
- Bigger jobs: anything more than 5 days, I quote a fixed cost, BUT I provided my estimated work effort in days in the quote and client can deduce my rate from there.
If I do it quicker, great, client is not worried, they already agreed to the quote, and I'm incentivised to be efficient (but also maintain quality or I wouldn't get the repeat business). If a job goes a bit longer, well that's on me and my estimates as a first point. Over the years I've got quite good at estimating work effort, and antipating issues and things that will slow projects down, so there's really been few issues with this approach. As a second point, if something is really going long I can just ask for a variation. Usually I will only need to do this if there's a strong justification, and in 100% of those situation the client has approved extra charges.
- Small jobs: just a fixed price
This is for simplicity and because small jobs have a disproportionate amount of admin and project mgmt overhead. Rather than inflating my rates for small jobs I would rather just pick a reasonable total price and then make it work at my end.
No real issues with this in over 12+ years of technology consulting. The one minor thing is when I'm subtracting to a company that does NOT like to be transparent, and then I'm basically arming them with the information to take advantage of me. So here and there I've had my services marked up 30-50% from what I'm charging (up to 20% is reasonable) but it's a relatively rare situation.
Note: internally I always track time in 15 minute increments and round up or down. So I also have the data if it's asked for but more importantly the ability to see if I'm on budget and if my quoting is accurate.