No one is forcing the client to say yes
There's no such thing as a "fair" price. In an arms-length transaction, if the client does not feel your proposal provides them good value, they can simply decline it. Use this to your advantage to charge higher prices than you might otherwise. Especially for projects where you don't care if the client says No.
An arms-length transaction "refers to a business deal in which buyers and sellers act independently without one party influencing the other." This is the situation with most new clients. But what about existing clients?
The Ethical Challenges of De Facto Monopoly Power
We do a lot of repeat business with our clients: providing ongoing technical support, adding new features to custom software, etc. The challenge in pricing these situations is that they are no longer "arms-length transactions," at least not in the practical sense (IANAL).
What I mean by this is that–as the original software developer–I have a monopoly on the knowledge used to build the application. I routinely provide my clients our source code and the right to change it. But as any developer who's taken over an existing project will tell you, having the source code is no more than half the battle. Understanding how a program works without having to sift through all the source code is a huge competitive advantage over other firms that might provide software support.
This creates something of an ethical dilemma. You want to avoid the opportunity cost of under-pricing your services. You also want to avoid using your monopoly power to price-gouge your client. (Even if you have no moral compass, this is not a good long-term business strategy.)
Proposals For Me, Extortion For Thee
When you offer only a single option, a proposal is an ultimatum. Add in some monopoly power, and that proposal can start to feel like extortion. This is especially true if the proposal is for some must-have feature (e.g., to comply with a new government regulation).
I personally struggled with this ethical dilemma for years before finding a very simple solution: always offer three options on a proposal instead of one.
The Power of Three
When I'm wielding monopoly power (i.e., I'm working with custom software I created) to deliver a must-have feature, I always try to provide at least one relatively low-cost option in my proposal.
This leaves two additional options that I can price in whatever way I want, and I can do so completely guilt-free.