TL;DR

The EU Pay Transparency Directive (2023/970) had to be written into national law by 7 June 2026. By late September, only five of the 27 member states had done it in full: Italy, Malta, Lithuania, Slovakia and Greece. Poland and Estonia have the hiring rules in force, while Germany, the Netherlands, France, Spain, Ireland and Cyprus haven’t passed their laws yet. Where the law applies, you get the salary or its range before the interview, nobody may ask what you earn now, and you can request average pay by gender for people doing your job. Where it doesn’t, most tech job ads still hide the number: in a scan I ran of a German job board on 30 September, only 9 of the 81 companies hiring for tech roles named a salary in any of their ads.

FactValueSourceVerified
Transposition deadline7 June 2026Directive (EU) 2023/970, Art. 34Sep 30, 2026
Fully transposed5 of 27: IT, MT, LT, SK, GRTrusaic tracker, updated 28 Sep 2026Sep 30, 2026
Hiring rules in force via partial lawsPoland (since 24 Dec 2025), Estonia (since 13 Jul 2026)RSM Poland, TrusaicSep 30, 2026
Job postings showing pay, Germany / Netherlands12% / 48% (March 2026)Indeed Hiring LabSep 30, 2026
First gender pay gap reports (150+ staff)by 7 June 2027Directive, Art. 9Sep 30, 2026
Cyprus draft penaltiesfine up to €10,000 or up to 6 months in prison (draft, reported)Emerald Zebra summary of the draft billSep 30, 2026

Milan vs Munich: one directive, two job searches

A backend developer applying to a company in Milan this autumn gets the starting salary, or its range, before the first interview. A recruiter who asks “what are you on now?” is breaking Italian law: Legislative Decree 96/2026 took effect on 7 June 2026. The same developer applying in Munich gets whatever the company feels like sharing, which is usually nothing, because Germany hasn’t passed its law yet.

The EU adopted the directive in May 2023 and gave member states three years, and most of them spent that time on consultations. As of 1 September, only five countries had fully transposed it, and the large developer markets (Germany, France, the Netherlands, Spain) are all targeting 2027 or later.

This guide is written for engineers on the receiving end of a job offer. It isn’t legal advice; for a dispute, talk to a local employment lawyer or your works council.

What the directive gives developers

The full text is Directive (EU) 2023/970 on EUR-Lex. Most of its 37 articles deal with reporting and enforcement machinery. For an individual developer, eight provisions do the work:

What you getArticleWho has to comply
Starting pay or pay range, before the interviewArt. 5(1)Every employer, public and private
No questions about your current or past payArt. 5(2)Every employer
Gender-neutral job ads and job titlesArt. 5(3)Every employer
Access to the criteria used for pay and progressionArt. 6Every employer (progression part can be waived under 50 staff)
Your pay level plus average pay by gender for the same work or work of equal value, within 2 months of askingArt. 7Every employer
Pay secrecy clauses can’t stop you disclosing your payArt. 7(5)Every employer
Published gender pay gap figuresArt. 9250+ staff yearly and 150-249 every 3 years (first by June 2027); 100-149 every 3 years (first by June 2031)
Joint pay assessment when a gap of 5%+ in a worker category is unexplained and not fixed within 6 monthsArt. 10Employers that have to report

Everything above the reporting rows applies only once your country’s transposing law takes effect.

Article 3 defines “pay” broadly: the basic salary plus “any other consideration, whether in cash or in kind”, received directly or indirectly. Bonuses, allowances and benefits in kind are in. How national laws treat equity (RSUs, options) is less settled, so don’t assume your stock grant shows up in a pay range.

A “competitive salary” line doesn’t give you the initial pay or its range that Article 5 requires; the employer has to name a figure or a range. The directive lets the employer choose the channel (the ad itself, a message before the interview, or another route), but some countries went further; Italy’s decree requires the figure in the job advertisement.

The directive bans questions about your pay history but says nothing about expectations, and Polish practitioners read Poland’s version the same way: employers there can still ask what you want. You’ll still need your own number (the 2026 European developer salary benchmarks are a starting point).

Once a country transposes, Article 16 gives full compensation, including back pay and bonuses, and national law may not cap it in advance. The burden of proof moves to the employer once you show facts suggesting discrimination (Article 18), and you get at least three years to bring a claim (Article 21).

The directive’s scope leaves out most contractors. It covers applicants and workers with an employment contract or relationship, so if you invoice through your own company as a contractor, you’re probably outside it, unless a court decides you’re a worker in all but name under EU case law.

Where each country stands (September 2026)

Trackers disagree on details, so this table combines Trusaic’s member-state monitor (updated 28 September 2026), the September 2026 update from People Performance Reward, and country-specific legal briefings. “Hiring rules” means the salary-before-interview and no-pay-history rules.

CountryStatusHiring rules in force?Expected
ItalyTransposed (Legislative Decree 96/2026)Yes, since 7 Jun 2026In force
MaltaTransposedYes, since 5 Jun 2026In force
SlovakiaTransposedYes, since 7 Jun 2026In force
LithuaniaTransposedYesRight-to-information part phased to 2027 (per Trusaic)
GreeceTransposedNot yetRules apply from 1 Nov 2026 (per Trusaic)
PolandPartial: recruitment rules onlyYes, since 24 Dec 2025Rest of the directive pending
EstoniaPartialYes, since 13 Jul 2026, plus a pay secrecy banReporting rules pending
GermanyNo bill passedNoGovernment targets early 2027
NetherlandsBill before parliamentNo1 Jan 2027 target (at risk: plenary debate expected January 2027)
FranceGovernment bill presented 10 Sep 2026, now before the SenateNoNot set; new reporting indicators planned from 2028
SpainDraft; consultation closed 24 Aug 2026NoNot set
IrelandHeads of bill in preparation, not prioritised for autumn 2026NoNot set
CyprusDraft (January 2026 version) awaiting the Council of MinistersNoNot set
Czechia, Denmark, FinlandBills in progressNo1 Jan 2027 target
UK (not in the EU)Government consultationNoConsultation closes 27 Oct 2026

Germany is the gap that hurts developers most, since it’s the EU’s largest tech job market. A government expert commission on a “low-bureaucracy” implementation handed over its final report in November 2025, and the trackers now expect the amended Pay Transparency Act (Entgelttransparenzgesetz) to take effect in early 2027. The early-2027 date isn’t the whole story: Trusaic reports that the ministry’s plan pushes the individual right to information and the reporting duties back to June 2028, so a German developer’s Article 7 request may have to wait until then.

The Dutch government announced well ahead of time that it would miss the deadline and aim for 1 January 2027, and the European Commission said it wouldn’t accept a postponement. The Commission can open infringement proceedings against late member states, but that process takes years and doesn’t give an individual applicant anything today.

The UK isn’t bound by the directive, but plenty of EU-based developers apply for London roles. In July 2026 the government opened a consultation on requiring pay and conditions in job adverts, running until 27 October 2026. Unlike the EU text, the UK proposal doesn’t include a pay-history ban.

What job ads look like right now

The best large-scale data comes from Indeed. In a May 2026 Hiring Lab analysis, Hiring Lab’s Lisa Feist reported the share of job postings with salary information in March 2026: UK 56%, Netherlands 48%, France 43%, Ireland 39%, Italy 36%, Spain 17%, Germany 12%. Her summary is that progress “has stalled”. Italy was the exception, climbing from around 20% at the start of 2025 to 36% as its law approached, while the UK slipped from about 65%.

Indeed covers all occupations, including jobs where pay comes straight from a collective agreement. I wanted a developer-specific view, so I built two small datasets on 30 September 2026.

The first uses the monthly Hacker News “Who is hiring?” threads, which are full of European startups and remote teams. The script pulls every top-level post through the public Algolia HN API, tags each one as Europe-located, US-located or both using city and country names, and checks whether it states a pay figure. This is the core of it (the location regexes, trimmed here, list every EU country and major tech city):

SALARY = re.compile(r"[$€£]\s?\d{2,3}\s?[kK]\b"
                    r"|[$€£]\s?\d{1,3}[.,]\d{3}\b(?![.,]\d)"
                    r"|\b\d{2,3}\s?[kK]\s?(-|–|to)\s?[$€£]?\d{2,3}\s?[kK]\b"
                    r"|\b(EUR|USD|GBP|CHF)\s?\d{2,3}([.,]\d{3}|\s?[kK])"
                    r"|\b\d{2,3}([.,]\d{3}|\s?[kK])\s?(EUR|USD|GBP|CHF|€|\$)")
PERK = re.compile(r"budget|bonus|refer|weiterbildung|allowance|stipend", re.I)


def states_pay(post):
    # Skip figures that sit next to a perk: training budgets, referral or signing bonuses.
    return any(not PERK.search(post[max(0, m.start() - 60):m.end() + 25]) for m in SALARY.finditer(post))

# per monthly thread:
item = get(f"https://hn.algolia.com/api/v1/items/{tid}")
posts = [clean(c.get("text")) for c in item["children"] if c.get("text")]
eu = [p for p in posts if EU.search(p)]
eu_only = [p for p in eu if not US.search(p)]
us_only = [p for p in posts if US.search(p) and not EU.search(p)]

Running it against September 2025 plus May through September 2026 printed this (each cell is posts, posts with a pay figure, share):

month    posts     EU-any (n, paid, %)             EU-only             US-only
2025-09    299          68    8  11.8%      45    6  13.3%     163   40  24.5%
2026-05    322          66   11  16.7%      38    6  15.8%     175   43  24.6%
2026-06    317          59    7  11.9%      39    2   5.1%     183   49  26.8%
2026-07    260          52   12  23.1%      35    6  17.1%     149   47  31.5%
2026-08    232          48    9  18.8%      30    4  13.3%     130   39  30.0%
2026-09    255          59   14  23.7%      37    9  24.3%     145   48  33.1%

The second dataset is German. Arbeitnow runs a free public job-board API focused on Germany. I pulled 736 current listings and kept the tech roles physically located in Germany: 138 ads from 81 companies, after dropping remote, UK, French and other non-German locations. The detector is the HN regex with German number formats added. Without the perk filter, a “training budget of 10.000 EUR” in one of today’s ads would count as a salary. A keyword filter still can’t catch everything, so I read all 27 flagged ads. Three weren’t pay: a €1,000-a-year wellbeing benefit, a referral bonus worded in German (“Empfiehl die Person und erhalte 3.000€”), and a lab-automation ad asking why a “€500,000 solution” costs that much. The German-specific regex branches and the tally look like this:

# added to the HN pattern for German ads: "60k bis 80k", "62.000 € – 72.000 €", "5.000,- Euro"
r"|\b\d{2,3}\s?[kK]\s?(-|–|to|bis)\s?[$€£]?\d{2,3}\s?[kK]\b"
r"|\b\d{1,3}([.,]\d{3}|\s?[kK])(,-)?\s?(EUR|Euro|USD|GBP|CHF|€|\$)"

# after reading all 27 flagged ads: wellbeing benefit, German referral bonus, "a €500,000 solution"
FALSE_POSITIVE = {63, 135, 137}
real = [a for a in d["flagged"] if a["i"] not in FALSE_POSITIVE]
by_co = Counter(a["company"] for a in real)
top2 = sum(n for _, n in by_co.most_common(2))

It printed:

German tech ads:            138 from 81 companies
flagged by the regex:       27
real pay figure (by hand):  24 (17.4%)
  from the two biggest posters: 15 (8, 7)
  everyone else:            9 ads from 7 companies
companies naming pay in any ad: 9 of 81 (11.1%)

The 17.4% ad-level figure flatters the market. One Munich employer posted eight near-identical ads, all at “5.000 € brutto im Monat” whether the title said Associate or Senior, and a consultancy posted seven with published bands (“Gehaltsspanne … 62.000 € – 72.000 € brutto/Jahr”). Counted by employer, 9 of 81 companies named pay anywhere, not far from the 12% Indeed measured across all German postings.

9 of 81
Companies hiring tech roles in Germany on Arbeitnow that named pay (30 Sep 2026)
13% → 24%
Europe-only HN hiring posts naming pay, Sep 2025 vs Sep 2026
33%
US-only HN hiring posts naming pay, Sep 2026

Read these numbers with care. The HN samples are small (37 Europe-only posts in September), June’s 5.1% shows how noisy a single month is, and HN comments are informal posts, often from companies hiring in several countries at once, so they aren’t the formal job ads the law regulates. The Arbeitnow scan is one day’s snapshot of one board, and as the two bulk posters show, a single employer can swing it by several points. Still, the direction is consistent: Europe-focused posts naming pay roughly doubled year over year, and three out of four still don’t. Nine in ten companies hiring developers in Germany on that board named no figure at all, which is nowhere near what the directive will require. I wouldn’t credit the law with the rise. Germany, the Netherlands and France, where much of Europe’s startup hiring happens, haven’t transposed yet, so the likelier explanation is employers getting used to publishing bands ahead of the rules, plus sampling noise.

How to use the new rights

When you’re applying

In a country with the hiring rules in force (Italy, Malta, Slovakia, Lithuania, Poland, Estonia, and Greece from November), expect a figure before the first interview. If it doesn’t come, ask for it in writing; the employer is supposed to give it without a fight. If a recruiter asks for your current salary, you can decline, and a written question like that is useful evidence if something goes wrong later.

Everywhere else, nothing forces the employer’s hand yet, though the HN numbers above show more Europe-based teams naming pay than a year ago. Asking for the range on the first call is a normal request in 2026. Offer expectations rather than history, and anchor them to data: the Cyprus salary breakdown and the Europe-wide numbers linked above show what mid-level and senior roles pay by country.

Remote roles across borders are messier. Under the Rome I Regulation (Article 8), an employment contract defaults to the law of the country where you habitually work, and even a contract that names another country’s law can’t strip you of that country’s mandatory protections. A developer living and working in Berlin for a Milan company is likely covered by German rules either way. Before you rely on a particular country’s version, check which law your contract names and where you’ll actually be working.

When you’re already employed

In a transposed country, Article 7 lets you request your own pay level and the average pay, broken down by gender, for the category of workers doing the same work or work of equal value. The employer has to answer within a reasonable time, at most two months, and must remind all staff once a year that they have this right. A short written request is enough:

Under [national law transposing Directive (EU) 2023/970, Article 7], I request in writing (1) my individual pay level and (2) the average pay levels, broken down by sex, for the category of workers performing the same work as me or work of equal value, together with the criteria used to define that category.

Pay secrecy clauses in your contract stop working too. Article 7(5) says workers can’t be prevented from disclosing their pay for the purpose of enforcing equal pay, so comparing salaries with a colleague for that purpose is protected.

While your country is still late

EU directives don’t bind private employers directly. Until your national law exists, you can’t sue a private company for leaving the range out of an ad, and Morgan Lewis’s June 2026 briefing says as much: without transposition, employees “cannot bring claims against an employer” for failing to comply.

There are two caveats. Public-sector employers can be held to clear, unconditional provisions of an overdue directive, and national courts are expected to read existing equal-pay law in line with the directive where the wording allows it. And the underlying equal-pay principle in Article 157 of the EU treaties has applied between private parties since the Court of Justice’s 1976 Defrenne II ruling, so you could already sue a private employer for unequal pay for equal work; the directive adds the information you need to spot a gap.

For engineering managers: career levels become pay categories

The reporting and joint-assessment rules only bite at 100+ employees. Article 7 requests can come from anyone at a company of any size, though, and answering one means defining which people do “the same work or work of equal value”. The directive’s criteria are skills, effort, responsibility and working conditions. For most engineering orgs, the career ladder (L3, L4, L5, or junior/mid/senior) is the obvious starting category.

Company-wide averages can hide the problem. Here’s a toy calculation on a made-up 12-person team, using the directive’s definition of the gap as the difference between men’s and women’s average pay, as a share of men’s:

import statistics as st

# (level, gender, annual base pay in EUR) for a made-up 12-person engineering team
team = [
    ("L3", "F", 58_000), ("L3", "M", 61_000), ("L3", "M", 60_500), ("L3", "F", 59_000),
    ("L4", "F", 71_000), ("L4", "M", 78_500), ("L4", "M", 77_000), ("L4", "F", 72_500),
    ("L5", "F", 92_000), ("L5", "M", 94_500), ("L5", "M", 93_000), ("L5", "F", 95_000),
]


def gap(rows, avg=st.mean):
    men = [p for _, g, p in rows if g == "M"]
    women = [p for _, g, p in rows if g == "F"]
    return 100 * (avg(men) - avg(women)) / avg(men)


print(f"company-wide mean gap:   {gap(team):5.1f}%")
print(f"company-wide median gap: {gap(team, st.median):5.1f}%")
for level in ("L3", "L4", "L5"):
    rows = [r for r in team if r[0] == level]
    g = gap(rows)
    flag = "  <- >= 5%: explain it or fix it within 6 months" if g >= 5 else ""
    print(f"{level} mean gap: {g:5.1f}%{flag}")

Running it prints:

company-wide mean gap:     3.7%
company-wide median gap:   7.7%
L3 mean gap:   3.7%
L4 mean gap:   7.7%  <- >= 5%: explain it or fix it within 6 months
L5 mean gap:   0.3%

The headline mean gap of 3.7% looks fine. The L4 band sits at 7.7%, and at a company big enough to report, a gap like that in one category has to be justified with objective, gender-neutral criteria or fixed within six months, or it triggers a joint pay assessment with worker representatives. Article 9 also asks for the median gap, the gap in bonuses and other variable pay, and the gender split across pay quartiles, so a real report needs more than base salary. If your team sets pay one offer at a time without written bands, a single Article 7 request will expose that quickly.

Cyprus: a strict draft with no date

Cyprus published its draft in November 2025 and a revised version on 26 January 2026, under the working title “The Strengthening of the Implementation of the Principle of Equal Remuneration through Wage Transparency and Enforcement Mechanisms Law of 2026”. Emerald Zebra’s summary of the draft describes the same recruitment rules as the directive (initial pay or range in the ad or before the first interview, no pay-history questions) and reporting on the directive’s schedule: employers with 150+ staff from June 2027, 100-149 from June 2031.

The draft also carries criminal sanctions, up to six months in prison or fines up to €10,000, on top of administrative ones, according to the same summary. As of late September the bill still hadn’t passed. Earlier in the month, Labour Minister Marinos Mousiouttas said it was expected to go before the Council of Ministers in September and then to the House of Representatives.

For developers in Limassol and Nicosia, nothing changes until then. Once it passes, every Cypriot employer, including the international firms that moved engineering teams to the island, will have to state pay up front. Given the island’s small, relationship-driven hiring market, a published range will probably shift negotiating power more there than in Berlin. The AI Act will change hiring too, on a slower clock: its rules for AI hiring tools were pushed to December 2027.

FAQ

Does the EU Pay Transparency Directive apply to small companies?

Yes, for the parts developers deal with most. The recruitment rules (pay before the interview, no pay-history questions) and the right to request pay information apply to every employer regardless of size. Gender pay gap reporting only starts at 100 employees, and member states may exempt employers under 50 staff from having to make their pay-progression criteria available to staff.

Do employers have to include salary ranges in job ads?

The directive requires the starting pay or range before the interview; the job ad is one of several allowed channels. Some countries are stricter. Italy’s decree requires it in the advertisement itself. Vague wording like “competitive” or “negotiable” doesn’t meet the requirement anywhere.

Can an employer still ask about my current salary?

In countries that have transposed the directive, no: Article 5(2) bans questions about your pay history in current or previous jobs. Employers can still ask about your salary expectations. In countries that haven’t transposed yet, the question isn’t illegal under this directive, but you can decline to answer it.

When does the EU Pay Transparency Directive come into effect?

Member states had until 7 June 2026 to put it into national law, but it only binds private employers once a country’s own law takes effect. That happened in Italy, Malta, Slovakia and Lithuania around the deadline, with Greece from 1 November 2026 per Trusaic. Germany, the Netherlands and several others are targeting 2027. The first pay gap reports are due by 7 June 2027 for employers with 150 or more staff.

Does the pay transparency directive apply in the UK?

No. The UK left the EU before the directive was adopted. The UK government is running its own consultation on requiring pay in job adverts until 27 October 2026, without the EU’s ban on pay-history questions.

Sources

Bottom line

The salary range before the interview is the part of this directive developers will feel first, and for most of Europe’s tech workforce it’s still a promise. With Germany, France, Spain and the Netherlands all late, a job search in most of the EU’s big developer markets in autumn 2026 still looks a lot like it did in 2023, give or take a few more startups posting bands.

My advice is to behave as if the law already applies everywhere, and to treat the Article 7 request as an annual habit once it applies to you. A company that dodges the range question now will need written bands anyway once its country’s law lands, so its reluctance tells you something about how it sets pay today.