# Salary Negotiation for Developers: The Three Moments Where the Number Is Set

CareerCTO · 2026-08-29 · 14 min read · Salaries

Most advice about salary negotiation assumes the number gets decided on a
phone call near the end of the process. You prepare a script, you wait for
the recruiter to say a figure, and you push back.

That is not where the number actually gets set. By the time someone reads
you a figure on a call, it has usually already been anchored twice and
capped once - all before you spoke to anyone who could change it.

This guide covers the three moments that actually decide your number: the
screening question about your current salary, the expectation field on the
application form, and the internal band a hiring manager gets handed before
your resume even reaches them.

If you are also negotiating a notice period buyout at the same time, keep
[our guide to notice period buyouts](/blog/notice-period-buyout-india) open
alongside this one - the two conversations often overlap.

## Why the final call is usually too late

By the final negotiation call, three things have already happened. A
recruiter has your current CTC on file. A number sits in an internal
tracker next to your name. And a hiring manager has a band in mind that was
set before your interview started.

The final call mostly confirms or nudges a number that was fixed earlier.
That is why "just negotiate harder at the end" often produces disappointing
results - the room to move has already shrunk.

This does not mean the final call does not matter. It means the earlier
moments matter more, and most candidates spend zero effort on them.

Part of the reason is that these moments do not feel like negotiation at
all. A form field or a screening question reads as paperwork, not as a
decision point, so most people answer on autopilot and move on.

That autopilot answer is exactly what gets carried forward into every
later calculation, often without anyone revisiting it. Treat each of the
three moments below as a deliberate answer, not a formality to get past.

## Moment one: the current CTC question

This usually comes from a recruiter, on the first screening call or in a
form, phrased as "what is your current CTC" or "what is your expected
CTC". It feels routine. It is not.

Whatever number you give here becomes the anchor for every offer
calculation that follows. Recruiters and finance teams commonly price a
new offer as a percentage increase over your stated current salary, not as
an independent assessment of your market value.

If you understate your current CTC out of modesty, or round down because
you are not sure what counts, you have capped your own offer before anyone
has evaluated your skills.

### What actually counts as CTC

CTC, or cost to company, is not just your monthly take-home multiplied by
twelve. It typically includes your base pay, allowances, employer
provident fund contribution, and the notional value of any bonus or stock
component.

| Component | Usually counted in CTC | Common mistake |
|---|---|---|
| Base salary | Yes | Confusing with take-home |
| Fixed allowances | Yes | Forgetting to add these in |
| Employer PF contribution | Yes | Most candidates omit this |
| Variable or bonus | Often, at target value | Quoting only if paid out |
| ESOPs or stock | Sometimes, at grant value | Ignoring entirely |

Pull your actual CTC breakup from your last appraisal letter or payslip
before any screening call, not from memory. Recruiters can often tell when
a number is a guess.

Stock or ESOP value is the component candidates most often skip entirely,
usually because it feels uncertain or speculative. If your current company
issued a grant with a stated notional value, include it, and say plainly
that its actual realized value depends on vesting and a future liquidity
event.

Leaving stock out entirely understates your package on paper, even though
its cash value is genuinely uncertain. The honest move is to state it with
that uncertainty attached, not to omit it or to treat it as guaranteed
cash.

### What to actually say

State your CTC as one figure with its components named, not a vague range.
Something close to: "My current CTC is [figure], which includes base,
allowances and PF. My last variable payout was [figure] on top of that."

This does two things. It gives the recruiter an accurate anchor instead of
an understated one, and it signals that you know your own compensation
structure - which itself reads as a small credibility marker.

If you are asked for expected CTC in the same breath, do not answer with a
single number yet. Say you would like to understand the role and band
first, and that you are open to discussing a range once you do.

## Moment two: the expectation form

Long before you speak to a human, many applications ask for an "expected
CTC" field on a form, sometimes with a required numeric entry. This field
is quietly one of the most consequential inputs in the whole process.

Applicant tracking systems frequently use this field to filter candidates
before a recruiter ever opens your resume. A number outside the role's
band, in either direction, can silently deprioritize your application.

### Why a specific number here is risky

A single hard number gives the system - and later, the recruiter - a fixed
data point to negotiate down from. It also removes your own flexibility
before a conversation has even started.

A number that is too high can filter you out automatically. A number that
is too low anchors your entire negotiation below what the role might
actually pay.

### What to write instead

Where the form allows free text, write a range anchored to your research,
not a single figure: "Expected CTC: [lower figure] to [upper figure],
depending on role scope and total compensation structure."

Where the form forces a single number, use the midpoint of your researched
range rather than your ideal figure or a deliberately low number meant to
"get through the filter". A number far outside a realistic band gets
filtered either way.

Before you fill this field in, spend twenty minutes checking what similar
roles typically pay. If the role is a .NET position, for instance,
[our guide to .NET developer salaries in India](/blog/dotnet-developer-salary-in-india)
lays out indicative ranges by experience band to calibrate against.

### If the form has no range option at all

Some applicant tracking systems accept only a single integer and reject a
range entered as text. In that case, quote the top third of your
researched range rather than the midpoint.

The logic is simple: a system-filtered number can only work against you if
it is set too low, since a number that is genuinely too high usually still
reaches a human reviewer who can ask a clarifying question. A number that
is too low may never surface again.

If you later learn on a call that the actual band sits below what you
entered, you have lost nothing - you can still move down in a live
conversation far more easily than you can move up from a number already
on file.

## Moment three: the internal band, before you ever spoke to anyone

This is the moment almost nobody talks about, because it happens entirely
inside the company. Before a role is even posted, someone - usually in
finance or HR, sometimes with input from the hiring manager - sets a salary
band for the position.

That band is often built from the previous person's salary in the role,
a market benchmark the company subscribes to, and a budget ceiling set at
the department level. None of those three inputs has anything to do with
you specifically.

### Why this caps your ceiling before the interview starts

A hiring manager frequently cannot offer above the top of the band without
an internal approval process, regardless of how strong you are in
interviews. This is a structural ceiling, not a reflection of your
performance.

Knowing this reframes what "negotiation" even means at many companies. You
are not negotiating a number that a hiring manager can move freely - you
are negotiating where inside a fixed band you land, and occasionally
whether an exception process gets triggered at all.

### What to actually ask, and when

Ask the recruiter directly, ideally in the first or second conversation:
"Is there a defined salary band for this role, and where in that band would
a candidate with my experience typically land?"

This is a normal, professional question. Recruiters answer it more often
than candidates expect, because a defined band is not usually treated as
confidential the way an individual offer is.

If the answer suggests you would land near the top of the band already,
your negotiation strategy shifts - you are pushing for an exception, not a
routine adjustment. If you would land near the bottom, there is likely
real room to move within the band alone.

### How to push past a band that is too low

If the band itself is below your target, a single push-back rarely works.
What tends to work is surfacing a specific, structural mismatch: scope
that exceeds the leveled role, or a skill set the band was not built
around.

Something close to: "The scope we discussed - owning the migration and
mentoring two engineers - reads closer to a senior-level responsibility
than what this band typically covers. Can we revisit the level, not just
the number?"

This asks for a reclassification, which unlocks a different band, rather
than an exception inside the existing one. Reclassification requests
succeed more often than simple number requests, because they solve a
labeling problem instead of asking someone to override a budget.

### When there is genuinely no room

Some bands are fixed with no exception path at all, particularly at large
services companies where compensation runs through a centralized system
rather than a hiring manager's discretion.

In that situation, the more productive move is shifting the conversation
to what is negotiable alongside the band: joining bonus, review timeline,
remote work days, or a defined promotion checkpoint at a fixed interval
after joining.

None of those move the CTC figure itself, but they change what the total
offer is actually worth to you over your first year in the role.

![Line drawing of three separate gates in a row, each narrower than the one before it](/blog/salary-negotiation-for-developers-1.webp)

## When your current employer counters your resignation

A retention counteroffer is a fourth pressure point that can undo careful
work at the other three moments, so it deserves a plan before it happens,
not after.

Once you resign with a competing offer in hand, your current manager may
come back with a matched or higher figure to keep you. This puts a second,
unplanned number into a process you had already worked to control.

The honest question to ask yourself first is why the raise is only
arriving now. If your case for a higher salary was strong, the counteroffer
is really an admission that your employer was underpaying you until you
threatened to leave.

Accepting a counteroffer does not undo the reasons you started looking in
the first place - a capped band, a stalled role, or a mismatch in scope
usually persists even after the number moves. Treat the counteroffer as
one more data point, not an automatic reason to stay.

If you do decide to stay, get the new figure and any promised
role change written into a formal revision, not left as a verbal
promise from the same conversation where you announced you were leaving.

## Putting the three moments together

None of these three moments works in isolation. An accurate current CTC
answer, a sensible expectation range, and a known band together set the
outer limits of what the final call can do.

| Moment | When it happens | What you control |
|---|---|---|
| Current CTC question | First screening call or form | Stating an accurate, complete figure |
| Expectation field | Application form | Giving a range, not a single number |
| Internal band | Set before the role is posted | Asking about it, and where you land |

Get all three right and the final negotiation call becomes a formality
that confirms a number you already influenced. Get them wrong and the
call becomes a fight over a number that was never really in play.

## What the final call is actually for

Once the three earlier moments are handled, the final call has a narrower
job: confirming the number, negotiating the shape of the total package,
and settling start-date logistics.

This is where you can still move variable pay, joining bonus, notice
period buyout support, or non-cash terms like remote work days - even when
the base figure itself is closer to fixed.

If a buyout is part of your move, that conversation deserves its own
attention rather than folding into the salary call. [Our guide to notice
period buyouts](/blog/notice-period-buyout-india) breaks down who typically
pays that and how to ask.

## Reading the offer letter, not just the number

A verbal number on a call is not the offer. The written offer letter is
where the actual terms live, and it is worth reading closely before you
accept anything verbally.

Watch for a gap between the CTC figure discussed on the call and the
components listed in the letter - a lower fixed component with a larger
"variable, subject to performance" line changes what that number actually
means in practice.

If you are unsure what belongs in an offer letter versus what shows up
only in the formal appointment letter later,
[our comparison of offer letters and appointment letters](/blog/offer-letter-vs-appointment-letter)
walks through the difference before you sign anything.

## What changes if you are moving from services to product

The three-moment pattern holds across company types, but the numbers
behind each moment shift if you are moving from a services company to a
product company.

Product companies more often work with wider bands and more variable
compensation, while services companies tend to run tighter, more
standardized bands with less room for exception. Your current CTC anchor
also reads differently across the two, since services CTC structures often
carry a larger variable or bench component.

If that transition applies to you,
[our guide to switching from service-based to product-based companies](/blog/switching-from-service-based-to-product-based)
covers what else changes in the process besides the compensation
structure.

## A note on how CareerCTO fits into this

None of this negotiation guidance depends on CareerCTO, and it should not.
But if you are searching while you prepare for these conversations, it
helps to know what you are looking at.

Every posting on [CareerCTO's reviewed job board](/jobs) goes through a
review step before publication, which is a different kind of screening
than a salary band, but it means you are not negotiating against a listing
nobody has checked.

If you are the one hiring and want to reach candidates who already
understand how to have this conversation professionally, you can [post a
job](/post-a-job) with a stated band rather than leaving candidates to
guess at moment three entirely on their own.

![Line drawing of a scale balancing a stack of coins against a folded letter](/blog/salary-negotiation-for-developers-2.webp)

## What CareerCTO's verification does and does not tell you here

CareerCTO's verified badge confirms one specific thing: Questpond's records
show that a developer completed a named cohort on a specific date. It says
nothing about their current salary, their negotiation history, or what
band any past employer placed them in.

Employers browsing [verified developer profiles](/graduates) still need to
run their own compensation conversation with each candidate - verification
shortens the trust gap on skills and training, not the salary
conversation.

If you are hiring and want to see how comparable roles are typically
structured before you set your own band, [browsing companies already
hiring through the directory](/companies) can give you a reference point
before you write the job description.

## Handling the awkward moments in real time

Some parts of these three conversations feel uncomfortable no matter how
prepared you are. A few short scripts help more than a long explanation.

**When pushed for an exact expected number on a call:** "I would rather
understand the role and band first, but if it helps move things along, my
range is [lower] to [upper] based on my current CTC and market research."

**When the recruiter says the band is fixed with no flexibility:** "Understood
- is there room to discuss variable pay, joining bonus or review timeline
instead of the fixed component?"

**When you suspect you are below the band's midpoint:** "Given the scope of
this role, where would a candidate with my experience typically land
within your band?"

Each of these keeps the conversation factual and specific, rather than
emotional or vague, which tends to get a clearer answer either way.

![Line drawing of a speech bubble with a single coin inside it, resting on an open notebook](/blog/salary-negotiation-for-developers-3.webp)

## A short note on the numbers in this article

Every salary figure and range referenced here is indicative only. Actual
compensation varies by city, company type, seniority, stack and the
specific hiring budget for a role at a given time.

Treat any number you calculate from this guide as a planning input for
your own research, not a benchmark to hand a recruiter as fact. Where your
own offer letter or company policy differs from a pattern described here,
your own documents are the ones that govern.

## The one thing to do next

Before your next screening call, write down your exact current CTC with
its components, decide on a researched expectation range instead of a
single number, and prepare the one question about the internal band.

Those three things take less than an hour to prepare, and they influence
your final number more than anything you could say on the negotiation
call itself.

Do this before your next application, not just your next interview. The
expectation field on the form and the current CTC question both arrive
earlier than most candidates expect, and by then the preparation window
has already closed.

---

Source: https://careercto.dev/blog/salary-negotiation-for-developers
