As much as they can get :)
Really it should be linked to functionality, hourly rate, and a cut of the action.
Functionality you reduce to simple sentences, a good dev can do about 8 (1 an hour) functionalities a day, a bad one might struggle to do 1, the average is 4 ( 3 - 5 ).
You want the 8s you don't want the 1s, so you pay the 8s ten times what you would have paid the 1s and about twice the 4s. You never hire and keep 1s, you keep the 4s, and the 8s own the project.
Hourly rate is based on what they bring to the party; knowledge of different languages, project tools, and problem spaces.
The cut of the action is a little harder but you are looking for about 10% in a medium sized project, 5% in a large, 50 - 100% in small, the % taken will probably play with the hourly rate either up or down.
If you cannot work out the action, then you shouldn't do the project, the only projects you should do are ones that increase profitability.
Consultation charge at a fixed rate per hour. In that time you negotiate the functionality required.
I have seen things like email server popped in as one functionality point, the client expects something all singing all dancing, and the developer configures sendmail, so that would be a point of negotiation. There about 16 functionality points to an average mail system set up, can go as high as 50 odd.
That is the way to do it, clients like it, management doesn't.
What management wants to do is pay a low hourly figure, harass the developer, lie about the functionality, introduce scope creep at the end, and not pay overtime. They will hide behind team building, and veiled threats of if you don't like it then leave, which actually is what the managers should be doing themselves, namely ejecting from the process.