Tax code D0 — higher-rate flat 40%, no personal allowance
If your latest payslip shows tax code D0, HMRC has told this employer or pension provider to deduct 40% on every pound with no personal allowance. D0 is the higher-rate sibling of BR, used when HMRC knows your other PAYE source has already used both the £12,570 allowance and the £37,700 basic-rate band, so this second income is entirely in the 40% band.
What this code means
Per gov.uk's tax-code guidance, the “D0” prefix tells payroll to apply the higher rate of UK income tax (40% for 2026/27) to every pound of gross pay, with no allowance and no band stepping. There is no number prefix, because no allowance is being granted on this source. It exists so HMRC can collect the right higher-rate tax on a second income without having to wait until self-assessment or P800 reconciliation.
D0 sits between BR (basic rate flat) and D1 (additional rate flat). The trigger is your total projected income across all PAYE sources. If HMRC's estimate has you between £50,270 and £125,140, D0 on the second source is the textbook setup. Above £125,140, HMRC typically switches the second source to D1.
Who gets tax code D0
Per HMRC, D0 is reserved for cases where the higher rate is the correct marginal tax rate on every pound of this PAYE source. The most common scenarios are below.
- Main job already uses allowance and full basic-rate band
- Per gov.uk's tax-code guidance, the personal allowance can only sit against one PAYE source. If your main job pays enough to use both the £12,570 allowance and the £37,700 basic-rate band, HMRC moves any second job straight to the higher-rate band, which is what D0 represents. Every pound on the secondary source is taxed at 40%.
- Two reasonably-sized PAYE sources
- A common D0 pattern: £55,000 main job on 1257L + £10,000 second job on D0. The main job uses all the allowance and the basic-rate band; the second job is pure higher-rate income. Net effect across both is the same as one £65,000 source on 1257L, just split across two payslips.
- Occupational pension paid alongside a higher-rate job
- Drawing an occupational pension while still in a higher-rate job is a frequent D0 scenario. HMRC keeps the allowance on the wage and runs the pension at 40% flat. The arithmetic balances at year end.
- After HMRC re-codes a previously BR-coded second job
- If you started a second job on BR and total income then climbed into the higher rate band, perhaps after a pay rise or bonus, HMRC will normally re-issue D0 mid-year. Watch out for a one-off catch-up deduction in the first pay run on the new code.
- Pension drawdown above basic-rate band
- Larger pension drawdowns or annuity payments commonly start on D0 when HMRC believes the basic-rate band is already used elsewhere. P800 reconciliation can refund any over-deduction.
Worked example — £10,000 second job on D0
Main job pays £60,000 on 1257L. Second job pays £10,000 on D0. Total income £70,000.
| Step | Main (1257L) | Second (D0) |
|---|---|---|
| Gross pay | £60,000 | £10,000 |
| Personal allowance | £12,570 | £0 |
| PAYE at 20% (band £37,700) | £7,540 | £0 |
| PAYE at 40% on the rest | £3,892 | £4,000 |
| Combined PAYE | £15,432 across both jobs | |
That £15,432 matches the PAYE you would pay on £70,000 as a single source on 1257L. D0 has correctly pre-collected the higher-rate tax on the second job so no liability rolls into self-assessment.
Common mistakes & red flags
- D0 on your only job. Always wrong. Provide a P45 or starter checklist and tell HMRC this is your only job.
- D0 when total income dropped below £50,270. You may have left the higher-paid job, but HMRC has not updated. Ask for a switch to BR.
- D0 when total income now exceeds £125,140. HMRC should move you to D1, D0 will under-deduct on the additional-rate slice.
- D0 plus underpayment notice. If HMRC is also collecting an underpayment via your main code, double-check that the totals make sense.
What to ask payroll
- “Which HMRC coding notice put me on D0?”
- “Is the D0 cumulative or W1/M1?”
- “What is my year-to-date PAYE figure for this employment?”
- “If HMRC re-issues a different code, will the in-year refund / catch-up flow through this payroll?”
- “Are any benefits in kind being payrolled here too?”
How to fix it if D0 is wrong
- Confirm both PAYE sources. Sign in to your HMRC personal tax account and check the income estimate for each.
- Tell HMRC about an income change. If a job has ended or pay has dropped, update HMRC.
- Wait for re-issued codes. HMRC normally swaps D0 for BR (lower total) or D1 (higher total) within a few days.
- Refund flows automatically. Once payroll runs the new cumulative code, the next payslip evens up.
Frequently asked questions
- What does tax code D0 mean?
- Per gov.uk, tax code D0 means every pound paid through this PAYE source is taxed at the higher rate of 40% with no personal allowance. It is used when HMRC knows your main job has already absorbed both the personal allowance and the basic-rate band, so any income from this second source falls entirely in the higher-rate band.
- Why have I been put on D0?
- You almost certainly have a main PAYE source on which HMRC has applied your personal allowance and used the full basic-rate band of £37,700. A second job or pension on D0 collects the higher-rate tax that would otherwise be missed on the secondary income. This is the standard pattern when total income sits between £50,270 and £125,140.
- Is D0 correct for me?
- D0 is correct when (a) you have at least one other PAYE source already on a code like 1257L plus full basic-rate band, and (b) your total income is firmly in the higher-rate band but below £125,140. If either condition fails, D0 is usually wrong and HMRC should swap to BR (lower combined income) or D1 (additional rate).
- How much tax does D0 take on £10,000 of second income?
- D0 deducts 40% on every pound. On £10,000 of secondary income that is £4,000 of PAYE. Compared with BR (£2,000) and 1257L (£0 because the allowance would shelter it), D0 is the harshest of the three by design, it pre-collects the higher-rate liability rather than leaving it for a self-assessment bill later.
- How do I change D0 if it is wrong?
- Sign in to your HMRC personal tax account, confirm your main job and projected total income, then use "Tell HMRC about a change of income". HMRC will redistribute the codes, typically dropping the second job to BR if your total income is back below £50,270. Or call HMRC PAYE on 0300 200 3300.
Related reading
- Tax code BR — flat 20%
The basic-rate sibling of D0.
- Tax code D1 — additional rate 45%
The additional-rate sibling of D0.
- Tax code 1257L — standard allowance
The code that should sit on your main job paired with D0 elsewhere.
- Every UK tax code, explained one page at a time
The full tax-code index hub.
- Wrong tax code checker
Run a guided check.
Last reviewed
Last reviewed:
Next review:
Reviewed each tax year and sooner if HMRC changes higher-rate thresholds.
Educational guidance only — not regulated tax, financial or payroll advice. Always verify with HMRC or your payroll team before acting. To run a real check, the wrong-tax-code checker is the place to begin.