Start with capacity economics, then adjust for scope, risk, urgency and value. A sustainable floor is more useful than copying somebody else’s hourly rate.
Add the monthly income you need, business expenses, taxes or statutory obligations you are responsible for, and a buffer for downtime. Divide that by realistic billable hours, not total hours worked.
If you work 160 hours in a month but only 90 can reliably be billed, pricing on 160 hours underestimates the rate required to sustain the business.
Fixed-price projects should include uncertainty, revision boundaries and dependency risk. A project that depends on an undocumented third-party API carries more risk than a repeatable design task, even if both take similar visible effort.
Use milestones for larger projects so payment and feedback occur before the entire scope is complete.
A proposal should state what is included, what is excluded, who supplies content/data/access, how many revision cycles are included, payment terms and what happens when scope changes. Clear commercial boundaries protect the relationship as much as they protect margin.