Short answer
Negotiate the level before the number. Engineering pay is set by bands, so moving from senior to staff is worth far more than any number you can argue for inside a band - and the levelling decision is usually still open when the first offer arrives.
Most salary negotiation advice is written for roles where a manager has discretion over an individual's pay. Software engineering usually does not work that way. Compensation is banded by level, and your recruiter often has meaningful room inside the band but almost none outside it. That single fact should reshape how you negotiate.
Level Beats Number
The gap between the top of one band and the bottom of the next is frequently larger than the entire negotiable range within a band. Arguing hard for another few percent inside senior, while accepting a senior level for work you have been doing at staff scope, is optimising the small variable and conceding the large one.
What leverage actually is
Leverage is not confidence or negotiating technique. In practice it is one of four things:
- A competing offer. The only leverage that reliably moves a band. It does not need to be from a more prestigious company, only real.
- Scarce, specific expertise. Genuinely hard-to-hire skills the team needs now.
- Their time already invested. By final-stage interviews they have spent significant engineering hours on you and restarting is expensive.
- Willingness to walk. Real, not performed - and this is the one people most often lack while pretending otherwise.
If you have none of these, negotiate anyway, politely and once - offers are rarely withdrawn over a single reasonable counter - but calibrate your expectations to the band rather than to negotiation folklore.
Never give the first number
When asked about expectations, redirect to their band:
The deflection
"I'd rather understand the scope and level first. What's the band for this role?" If pressed again: "I'm interviewing at a few places and I'm optimising for the right team rather than a specific number - what range do you have for this level?"
In many jurisdictions they cannot legally ask your current salary. Where they can, redirect to your target for the role rather than anchoring your new pay to your old.
The counter
One counter, one number, one reason, then silence:
Say this
"Thank you - I'm genuinely excited about the team. Based on the scope we discussed and what I'm seeing for this level in the market, I'm looking for £X base. If we can get there, I'm ready to sign."
The last sentence is the important one. It converts your counter from an opening position into a closeable deal, which is the thing a recruiter can take to a hiring manager and actually get approved.
The levelling conversation
If you are offered a level below the work you have been doing, address it directly and with evidence of scope rather than years:
Say this
"I'd like to talk about the level. For the last eighteen months I've owned the payments platform end to end, including the migration and the on-call rotation, and I've been the technical lead on two cross-team projects. That reads as staff scope to me - what would you need to see to consider it at that level?"
Beyond base pay
When base is genuinely capped by the band, these are often approved far more easily: a signing bonus (usually the most flexible line and drawn from a different budget), additional equity, an earlier first review, a title change, remote or flexible arrangements, and a learning or conference budget. Get every agreed item into the written offer - a verbal promise about an early review does not survive a manager change.
Frequently asked questions
How much can a software engineer negotiate on an offer?
Inside a level, typically five to fifteen percent on base plus flexibility on signing bonus and equity. Across levels the difference is far larger, which is why the levelling conversation is usually worth more than the salary conversation.
Should I tell a recruiter my current salary?
No, and in many places they are not permitted to ask. Redirect to the band for the role: "I'd rather understand the level and scope first - what range do you have for this role?" Anchoring on your previous salary caps your new one.
What if I don't have a competing offer?
Negotiate anyway, once, politely - a single reasonable counter essentially never costs an offer. Just calibrate expectations: without competing leverage you are negotiating within the band rather than moving it.
Is it worth negotiating an internal promotion raise?
Yes, and the leverage is different. Internally the argument is about scope rather than market: show that you have been operating at the next level for six months or more, and ask what would be needed to place you at the top of the new band rather than the bottom.