A fixed bid prices the unknown by hiding it
A single fixed price for a whole project looks like the safe option: you know the number up front. But software projects rarely know everything up front, so that number has to absorb every unknown that has not been discovered yet. The vendor either pads the bid to cover the risk, or protects the margin later by pushing back on anything that looks like scope. Both directions quietly work against you.
The deeper problem is what the fixed bid does to visibility. Once the price is set, the incentive is to disappear and reappear at the deadline with a finished thing. You find out whether it matches what you needed at the worst possible moment to change course.