Check what a tax code means
Every UK tax code explained, with exact tax-free pay for each pay schedule.
The D0 tax code tells an employer to tax every pound of pay from a job or pension at the higher rate of 40%, with no Personal Allowance and no basic rate band, against a standard allowance of £12,570 under the usual 1257L code in the 2026-27 tax year [1] [7]. HMRC issues it for a second job or pension when the main source of income already uses both the allowance and the 20% band [5].
For the employee, D0 is often the most alarming code on a payslip: a £1,000 monthly payment from a second job loses £400 in income tax before National Insurance. For the employer, it is one of the simplest codes to operate, because it is a flat multiplication with no free pay. The difficulty is not the arithmetic but the judgement behind it: D0 is correct only when the employee's other income already reaches the higher rate threshold.
HMRC's internal guidance puts it in one line: "Use Code D0 when tax is due at higher rate and all the allowances are fully given elsewhere" [3]. When that condition fails, D0 overtaxes, and the excess is only returned after the year end.
This guide explains what D0 means, when HMRC issues it, how payroll calculates it on the cumulative and week 1 or month 1 bases, the Scottish and Welsh versions, worked figures from the Moonworkers calculation engine, how it compares with BR, 0T and D1, and the checks an employer should run when a D0 notice arrives.
Key takeaways
- D0 taxes all income from that job or pension at the higher rate, 40% in England, Wales and Northern Ireland, with no tax-free allowance [2] [4].
- HMRC uses it for a second job or pension when the main employment fully uses the Personal Allowance and the basic rate band [5] [3].
- Scottish taxpayers receive SD0, taxed at the 21% intermediate rate, while Welsh taxpayers receive CD0 at 40% [4].
- D0 can run cumulatively or on a week 1 or month 1 basis, and HMRC's PAYE service defaults to week 1 or month 1 [3].
- D0 changes income tax only; National Insurance is worked out separately for each job [20] [15].
- An employer cannot choose D0 itself: it applies the code only when HMRC sends it, and updates the record before the next pay day [13].
What the D0 tax code means
Most UK tax codes are a number followed by a letter, such as 1257L, and give the employee a share of the Personal Allowance in each pay period [1]. D0 belongs to a different family. It has no number representing an allowance and no suffix letter, and it tells payroll to apply a single rate to the whole of the pay [3].
The definition in HMRC guidance
GOV.UK's tax codes guide describes D0 as income that is all "taxed at the higher rate", usually used where the person has more than one job or pension [1]. HMRC's PAYE Manual states that "the code charges the full taxable pay at the first higher rate" [3]. The coding notice sent to the employee, the P2, states that all income from the job or pension is taxed at the 40% higher rate [4].
The "D" stands for a code that deducts at a rate above basic rate, and the digit selects which higher rate. D0 uses the first higher rate and D1 the second, the 45% additional rate [3] [4].
How D0 sits among the special codes
D0 is one of a small group of codes that HMRC treats as special cases. The table below compares them using the definitions in the employer guide [2] and the PAYE Manual [3].
| Code | How tax is deducted | Typical use |
|---|---|---|
| 1257L | Personal Allowance given, then the rate bands | One job or pension |
| 0T | No allowance, but pay still runs through the 20%, 40% and 45% bands | Allowance used up, or missing starter details |
| BR | 20% on all pay | Second job or pension within the basic rate band |
| D0 | 40% on all pay | Second job or pension where other income reaches the higher rate |
| D1 | 45% on all pay | Second job or pension where other income reaches the additional rate |
| NT | No tax deducted | Very specific cases |
The Moonworkers guides to the BR tax code and the 0T tax code cover the neighbouring codes in detail.
Why HMRC issues a D0 code
A person with two sources of employment income receives one Personal Allowance and one basic rate band for the year. PAYE has to decide which job uses them. HMRC normally allocates both to the main job, and codes the second job to collect the right rate on everything else [5].
Second jobs and pensions above the higher rate threshold
The 2026-27 bands for England and Northern Ireland are 20% on taxable income up to £37,700, 40% up to £125,140 and 45% above that [6] [7]. With the standard allowance, the higher rate starts at £50,270 of gross income [7].
LITRG explains that HMRC applies D0 to a second job or pension to prevent an underpayment of tax when the main job already uses the full tax-free allowance and the whole 20% band [5]. Typical cases are a senior employee with a paid non-executive role, a consultant drawing a salary from a second company, and a higher-rate earner who also receives an occupational pension [3] [5].
Why the starter checklist never produces D0
An employer cannot reach D0 from its own records. A new starter who ticks Statement C on the starter checklist, confirming another job or a pension, is put on BR, not D0 [21] [26]. The checklist does not ask about the level of the other income, so only HMRC, which sees both jobs through Real Time Information, can decide that the second job belongs in the higher rate.
The usual sequence is therefore BR first, then D0 after HMRC matches the two employments. The change reaches the employer as a tax code notice, sometimes called a P6, through PAYE Online, the Desktop Viewer or payroll software [13] [24].
Pensions, bonuses and mid-year changes
HMRC changes a code when income goes up or down, for example when a second job starts or stops or when a bonus pushes the main pay higher [25]. Since 2 July 2017, when HMRC amends a code during the year it carries out a full calculation for the year, and the amended code may be issued on a week 1 or month 1 basis [12]. A D0 code that appears in the middle of the year is often the result of such a recalculation [13].
How payroll calculates tax under D0
The calculation is a single step. HMRC's Tax Tables B to D instruct employers to "always multiply the whole pay by 0.40 (40%)" for code D0 [6]. The same document maps D0 to Table D1, the English and Northern Irish higher rate table at 40%, and D1 to Table D2 at 45% [6].
Cumulative or week 1 and month 1
Most codes are operated cumulatively, using tax tables and free pay tables to give a share of allowances and bands in each pay period [11]. Since 6 April 2010, employers can operate D codes both cumulatively and on a week 1 or month 1 basis [11]. The PAYE Manual states that the PAYE service defaults to week 1 or month 1 for D0 and SD0 [3].
The basis matters for refunds. On week 1 or month 1, the instruction is to use taxable pay tables D and "do not make any refunds"; on the cumulative basis, tax is worked out from the totals since 6 April and refunds can be made [3]. A non-cumulative code is marked W1, M1 or X, and the tax is then based only on the current pay period [2] [1].
| Basis | How tax is worked out | Refunds through payroll |
|---|---|---|
| Cumulative (D0) | From total pay and tax since 6 April | Possible |
| Week 1 or month 1 (D0 W1, D0 M1, D0 X) | On the current period's pay only | Not made |
The table summarises the PAYE Manual rules [3] [11].
Worked examples from the calculation engine
The figures below were produced with the Moonworkers calculation engine for the 2026-27 tax year, using National Insurance category A [7] [15]. The same gross pay is shown under 1257L, BR and D0 to isolate the effect of the code.
| Monthly gross pay | Tax code | Income tax | Employee NI | Net pay |
|---|---|---|---|---|
| £3,000 | 1257L | £390.20 | £156.16 | £2,453.64 |
| £3,000 | BR | £600.00 | £156.16 | £2,243.84 |
| £3,000 | D0 | £1,200.00 | £156.16 | £1,643.84 |
| £1,000 | BR | £200.00 | £0.00 | £800.00 |
| £1,000 | D0 | £400.00 | £0.00 | £600.00 |
Under D0, the £3,000 example pays £1,200 in income tax, against £390.20 on 1257L and £600 on BR. Employee National Insurance is identical in all three rows, because the code does not touch National Insurance [15]. The employer's secondary National Insurance on the £3,000 example is £387.45 whichever code applies [23].
When D0 is right, and when it overtaxes
D0 is correct only if the other job already uses the whole basic rate band. Two annual examples show the difference, again computed with the engine [7] [5].
An employee whose main job pays £55,000 on 1257L has used the allowance and the full basic rate band in that job, so a second job paying £15,000 is correctly taxed at 40% under D0: £6,000 a year. An employee whose main job pays only £40,000 is in a different position. Adding the £15,000 second income lifts the total from £40,000 to £55,000, and the engine puts the extra tax at £3,944.20, the gap between £5,484.20 and £9,428.40. D0 would collect £6,000 and BR would collect £3,000, so neither code is exact, and HMRC's usual answer is to split the allowance or the band between the two jobs [5].
| Main job salary | Second job pay | Tax on second job under D0 | Extra tax actually due on the combined income |
|---|---|---|---|
| £55,000 | £15,000 | £6,000.00 | £6,000.00 |
| £40,000 | £15,000 | £6,000.00 | £3,944.20 |
Any excess collected through PAYE is returned after the tax year ends, normally through a P800 tax calculation sent between June and March of the following year [14]. The Moonworkers tax code checker shows the effect of a code on any salary before the next pay run.
Scottish and Welsh versions of D0
Tax codes for Scottish taxpayers start with S and those for Welsh taxpayers with C, so that the right rates are applied [9] [3]. Because Scotland has more bands, the digit after D maps to a different rate.
The S and C prefixes
The P2 notes in the PAYE Manual set out the rate attached to each code [4], and HMRC's Tax Tables give the multiplier employers use [6].
| Code | Applies to | Rate on all pay |
|---|---|---|
| D0 | England and Northern Ireland | 40% (higher rate) |
| D1 | England and Northern Ireland | 45% (additional rate) |
| CD0 | Wales | 40% (Welsh higher rate) |
| CD1 | Wales | 45% (Welsh additional rate) |
| SD0 | Scotland | 21% (intermediate rate) |
| SD1 | Scotland | 42% (higher rate) |
| SD2 | Scotland | 45% (advanced rate) |
| SD3 | Scotland | 48% (top rate) |
LITRG notes that SD0 is applied in a similar way to the BR code, while SD1 to SD3 work like D0 [5]. For 2026-27, the Scottish intermediate rate applies to gross income above £29,526 and up to £43,662, with the Scottish higher rate above that [8] [10].
Worked Scottish and Welsh figures
The engine examples below apply each code to £2,000 of monthly pay, so the only variable is the rate [8] [9].
| Code | Monthly gross pay | Income tax | Net pay |
|---|---|---|---|
| D0 | £2,000 | £800.00 | £1,123.84 |
| CD0 | £2,000 | £800.00 | £1,123.84 |
| SD0 | £2,000 | £420.00 | £1,503.84 |
| SD1 | £2,000 | £840.00 | £1,083.84 |
| SD3 | £2,000 | £960.00 | £963.84 |
A common payroll error is to treat SD0 as the Scottish equivalent of D0 and apply 40% or 42%. The PAYE Manual is explicit that SD0 deducts at the Scottish intermediate rate, the first band above basic rate [3] [4].
D0, National Insurance and the 50% limit
A tax code governs income tax only. Employee and employer National Insurance are calculated on each job's earnings against that job's own thresholds [20] [15].
National Insurance is unchanged
Employee Class 1 contributions are 8% between the £12,570 Primary Threshold and the £50,270 Upper Earnings Limit, and 2% above it, regardless of the tax code [15] [23]. In the £1,000 monthly example above, employee National Insurance is nil because the pay is below the £1,048 monthly Primary Threshold, even though D0 takes £400 in tax [23]. The employer still pays 15% above the £417 monthly Secondary Threshold [15].
The overriding 50% limit
Since 6 April 2015, the regulatory limit that stops tax exceeding 50% of pay in a period has applied to all tax codes, not just K codes [18] [19]. LITRG summarises it as "no tax code can take tax of more than half of that period's pay or pension" [5].
Because the highest flat rate in the D family is 48% under SD3, a D code applied to ordinary pay stays below the limit on its own [4]. Where an in-year adjustment would push a code over 50%, HMRC collects the balance in the following year instead [12].
What the employer must do when a D0 notice arrives
The employer's role is to operate the code it is given, accurately and on time. It does not assess whether D0 is right for the employee, but it can help the employee get it corrected.
Applying the code
HMRC sends an email alert when an employee's code changes, and the new code is available in PAYE Online, the Desktop Viewer or payroll software [13] [24]. The employer must update the payroll record as soon as possible and before the employee is next paid [13]. The basis marker (W1, M1 or X) must be carried across exactly, since it decides whether refunds can flow through payroll [2] [3].
Payroll software that holds the HMRC-recognised badge downloads coding notices and applies them automatically. The HMRC-recognised payroll software for SMEs built on the Moonworkers engine handles every prefix and suffix code, including D0, SD0 to SD3 and CD0, alongside the emergency and K codes [27].
Controls before the next pay run
A short set of controls catches most D0 errors. Each follows from the HMRC guidance on codes and changes [13] [11].
- Confirm the code was received from HMRC and not typed in from a payslip or email.
- Verify the prefix: SD0 for a Scottish taxpayer is 21%, not 40%.
- Verify the basis: D0 M1 must not produce payroll refunds.
- Confirm the employee is not on D0 in their main job, which would point to a misallocated allowance.
- Leave National Insurance unchanged, since the code does not affect it.
Helping an employee who disputes D0
When an employee believes D0 is wrong, the employer cannot change the code itself. The employee updates income details with HMRC, which then issues a corrected code to the employer [16]. The employee can also check the code and the estimated tax for the year through HMRC's online service [17].
LITRG suggests asking HMRC to split the Personal Allowance between the jobs or pensions where the second income straddles the bands [5]. If tax has still been overpaid at the year end, the P800 process returns it [14]. Accountants managing this across many clients often use a multi-client payroll dashboard that flags D codes for review.
D0 compared with other codes in practice
D0 is easiest to understand alongside the codes it is most often confused with.
D0 and BR
Both are flat-rate codes for a second source of income, but BR takes 20% and D0 40% [2]. BR assumes the second income sits inside the basic rate band; D0 assumes the band has already been used elsewhere [5]. The move from BR to D0 is the most common change for second jobs, once HMRC sees that the main salary exceeds the higher rate threshold [25].
D0, 0T and the emergency code
0T gives no allowance but still runs pay through the 20%, 40% and 45% bands, so the first slice of pay is taxed at 20% [3]. The emergency code is 1257L on a week 1 or month 1 basis, marked W1, M1 or X, and is used when the employer lacks the details to apply a proper code [22] [5]. The emergency tax codes guide and the 1257L tax code guide explain those codes.
For platforms that need to process every code variant programmatically, the HMRC-recognised payroll API exposes the same calculation engine used for the examples in this guide.
Test a D0 code against a salary
Before the next pay run, an employer can test the effect of D0, BR or any Scottish or Welsh variant on a given pay figure with the Moonworkers tax code checker, which applies the 2026-27 bands and rates.
On your payslip, P45 or P60. Suffixes W1, M1 or X welcome.
What you'll get
Enter any UK tax code to see:
- · what each letter and number means
- · which nation's rates apply (S and C prefixes)
- · cumulative vs emergency W1/M1/X basis
- · the exact tax-free pay for every pay schedule, to the penny
Try 1257L, a K code, or an emergency W1 code.
Payroll that applies every tax code correctly
Moonworkers runs the full HMRC exact percentage method on every payslip, including K codes, emergency codes and in-year code changes, and files RTI automatically.
Conclusion
D0 is mechanically the simplest code in PAYE and conceptually one of the most demanding. The payroll step is a flat 40% (or 21%, 42%, 45% or 48% in Scotland), but the code is only correct when another employment has already used both the allowance and the basic rate band. When that condition holds, D0 prevents a large underpayment at the year end; when it does not, it collects too much until HMRC corrects the code or issues a P800.
As Real Time Information gives HMRC a fuller picture of multiple employments, coding notices arrive more often and more quickly within the year. Payroll systems that ingest notices automatically, respect the week 1 or month 1 marker and apply the right regional rate turn what used to be a source of complaints into a routine update.
Frequently asked questions
Is the D0 tax code an emergency tax code?
No. D0 is a special code issued by HMRC for a second job or pension where income is due at the higher rate [1]. Emergency codes are 1257L with a W1, M1 or X marker [22].
Can an employer put an employee on D0 without an HMRC notice?
No. The starter checklist leads only to 1257L, BR or emergency codes, and a new starter with another job goes on BR [21]. D0 is applied only when HMRC issues it through a tax code notice [13].
Does D0 mean the employee pays 40% on their main job too?
No. The code applies only to the job or pension it is issued for, while the main job normally keeps a code such as 1257L [2]. D0 exists precisely because the main job has already used the allowance and basic rate band [5].
How does an employee get overpaid tax back after a D0 code?
If D0 took more tax than was due, HMRC normally refunds it after the tax year ends through a P800 tax calculation [14]. On a cumulative D0 code, a corrected code during the year can also produce a refund through payroll, which week 1 or month 1 codes cannot [3].
Image prompt: Documentary-style photograph, a payroll officer seen in three-quarter view from behind at a standing desk in a converted textile warehouse office in Leeds, holding two printed payslips side by side over a desk with a printed HMRC tax code notice and a closed laptop, a pencil and a mug of tea at the edge of frame, soft north-facing daylight through tall arched windows, late morning, muted palette of warm grey, oak, paper white and faded brick red, Victorian red-brick warehouses visible through the window, off-centre composition with the figure in the right third and the papers in the lower left, shot on a Leica Q3 at 28mm f/2.8, photojournalism, 35mm film grain, no AI artefacts, no warped hands, no warped text, landscape orientation 16:9.



