D0 Tax Code: Why HMRC Is Taking 40% From You
The D0 tax code means every penny you earn from a job is taxed at 40% with no personal allowance. Here's why it happens and how to fix it fast.

Is 40% of your wages disappearing before you even see them? If your payslip shows a D0 tax code, that is exactly what is happening, and there is a good chance HMRC should not be taking that much at all.
The D0 tax code is one of the most financially punishing codes HMRC can assign to a PAYE worker. Unlike the standard 1257L code, which lets you earn £12,570 tax-free before anything is deducted, D0 applies a flat 40% rate to every single pound of income from that employment, with zero personal allowance attached. For someone earning £2,500 a month in a second job, that is £1,000 gone before it lands in your account.
This post explains exactly what D0 means, why HMRC assigns it, when it is correct, and, crucially, when it is a mistake that is costing you real money every month.
- D0 means all income from that employment is taxed at 40% with no personal allowance applied.
- It is typically used for second or third jobs where your full personal allowance is already used elsewhere.
- D0 is frequently assigned incorrectly, meaning many workers overpay tax for months without realising.
- You can challenge a D0 code by contacting HMRC directly or updating your details via your Personal Tax Account.
- If D0 was wrong, you are entitled to a refund for every month you were overtaxed.
- D0 Tax Code
- A PAYE tax code assigned by HMRC that instructs your employer to deduct income tax at the higher rate of 40% on all earnings from that employment, with no personal allowance taken into account. It is typically applied to a second or additional job where the personal allowance has already been allocated to a primary income source.
What the D0 Tax Code Actually Does to Your Pay
To understand why D0 is so significant, it helps to compare it with the standard code. Most employees in England, Wales, and Northern Ireland have the tax code 1257L. That number tells your employer to treat the first £12,570 of your annual earnings as tax-free. Only income above that threshold is taxed, starting at 20%.
D0 does the opposite. There is no free portion. There is no 20% basic rate band. Every pound from that particular employment is taxed at 40%, which is the higher rate typically reserved for income above £50,270.
Here is what that looks like for a real person:
If you earn £1,800 a month from the employment carrying the D0 code, your employer will deduct £720 in income tax every single month. Under the standard 1257L code on that same salary, assuming your personal allowance was available, you would pay roughly £171 a month. The difference is £549 per month, or £6,588 over a full year.
That is not a rounding error. That is a significant chunk of your annual income.
Why Does HMRC Assign a D0 Code?
D0 is not inherently wrong. There are circumstances where it is the correct code, and understanding those helps you work out whether your own situation is legitimate or a costly HMRC error.
You Have Multiple Jobs or Income Sources
The most common and legitimate reason for a D0 code is that you have more than one employment. Your personal allowance of £12,570 can only be applied once. HMRC allocates it to your primary job, the one where you earn the most or where they expect your main income to come from.
For your second or third job, there is no personal allowance left to give. HMRC also assumes that your combined income from all sources may push you into the higher rate band. To avoid an end-of-year underpayment, they apply D0 to the secondary employment.
If you genuinely earn more than £50,270 across all your income sources combined, a 40% deduction on your secondary income is probably accurate. It is inconvenient, but it is correct.
HMRC Does Not Have Enough Information
Here is where the system starts to break down. HMRC does not always know your full income picture in real time. When you start a new job and do not provide a P45 from your previous employer, your new employer may apply an emergency tax code, or HMRC may default to D0 as a precautionary measure.
The same happens if HMRC receives conflicting information from different employers, if you recently became self-employed alongside a PAYE job, or if your circumstances changed mid-year and HMRC has not updated their records. Their assumption, in the absence of clear data, is often to over-tax rather than under-tax. That is cautious for their books. It is damaging for yours.
Your Income Pushed You Into the Higher Rate Band Last Year
HMRC sets tax codes partly based on previous year data. If your combined income last tax year exceeded £50,270, HMRC may have assigned D0 for the current year on your secondary employment, even if your circumstances have since changed. Perhaps you left one job, reduced your hours, or your primary salary dropped. HMRC may not know that yet unless you tell them.
When D0 Is Wrong, and What It Costs You
The uncomfortable truth is that D0 is frequently applied incorrectly. HMRC's own data shows that millions of tax code errors occur each year across the PAYE system. The most common scenario for a wrong D0 is straightforward: your total income across all jobs does not actually reach the higher rate threshold of £50,270.
Imagine you have a main job paying £28,000 and a part-time second job paying £9,000. Your combined income is £37,000. You are a basic rate taxpayer. Your second employer applies D0 because HMRC issued it. You are paying 40% on that £9,000 of part-time income when the correct rate should be 20%. The overpayment on that secondary income alone is £1,800 for the year.
You would not necessarily notice from your payslip. The code D0 appears, the deduction is made, and unless you specifically know what that code means and what it should be, the money quietly disappears.
This is exactly why checking your tax code is not a bureaucratic nicety. It is, in concrete financial terms, one of the most valuable five minutes you can spend. You can check your tax code free at /check-my-tax-code right now, before you finish reading this article.
D0 Versus Other Emergency and Flat-Rate Codes
D0 sits within a family of codes that apply fixed rates without a personal allowance. Understanding where it fits helps you assess whether yours makes sense.
- BR: Applies the basic rate of 20% to all income from that employment, with no personal allowance. Typically used for second jobs where combined income stays below £50,270. We covered this in detail in BR Tax Code Meaning UK: You Are Paying 20% on Everything.
- D0: Applies the higher rate of 40% to all income. Used when HMRC believes your total income exceeds the higher rate threshold.
- D1: Applies the additional rate of 45% to all income. Used when HMRC believes your total income exceeds £125,140.
- 0T: Applies graduated rates with no personal allowance. Often used as an emergency code when no other information is available.
If your second job pays, say, £15,000 and your main job pays £30,000, the combined total of £45,000 does not breach the higher rate threshold. A D0 code in this scenario is wrong. BR would be closer to correct, though your employer would still need a proper coding notice from HMRC.
People also ask
How to Check Whether Your D0 Code Is Correct
You do not need an accountant to work this out. The logic is simple:
- Add up your total expected gross income from all sources this tax year. Include all employments, any self-employment income, rental income, and any other taxable income.
- If that total is below £50,270, you are a basic rate taxpayer. A D0 code on any of your jobs is likely wrong.
- If that total is above £50,270, D0 on your secondary employment may be correct, though the exact allocation of your personal allowance matters.
If you are unsure, the simplest next step is to check your tax code at /check-my-tax-code. It takes a few minutes and can immediately flag whether what you are paying matches what you should owe.
For those with more complex income, including side income from self-employment or property, our salary tax calculator and multiple income tax calculator can give you a clearer picture of your actual liability before you call HMRC.
What to Do If Your D0 Code Is Wrong
Once you have confirmed that D0 is incorrect for your situation, the process to fix it is straightforward, if not always fast.
Step One: Gather Your Information
Before contacting HMRC, have ready your National Insurance number, your employer's PAYE reference (on your payslip), your most recent payslip or P60, and an estimate of your expected income from all sources this year.
Step Two: Contact HMRC
Call HMRC's Income Tax helpline on 0300 200 3300 (lines are open Monday to Friday, 8am to 6pm). Explain that you believe your D0 code is incorrect and provide your income breakdown. Alternatively, update your employment income details through your Personal Tax Account at gov.uk, which can trigger a code review without a phone call.
Step Three: Confirm the New Code With Your Employer
HMRC will issue a new coding notice directly to your employer. You do not need to hand anything over yourself, but it is worth checking your next payslip to confirm the new code has been applied. Payroll departments can sometimes take a pay period to process the change.
Step Four: Claim Back What You Overpaid
This is the part most people miss. If D0 was wrong for weeks or months, you have overpaid tax. HMRC will often adjust this automatically through your payroll once the correct code is in place, by reducing future deductions until the balance is restored. But if you have left the employment, or if the year has ended, you will need to claim a refund directly. Our guide on Tax Code Refund: How to Claim What HMRC Owes You walks through the exact process.
You can also ask HMRC to confirm in writing how much you overpaid, which gives you a clear figure to track.
A Note for Workers With Both PAYE and Self-Employment Income
If you are employed and also run a side business or freelance, your tax situation is more complex, and D0 may actually be closer to correct than it appears. HMRC sometimes adjusts your PAYE tax code to collect tax on your self-employment income at source, through a mechanism called a Simple Assessment or coding-out adjustment.
In that scenario, you might see D0 or a heavily reduced coding on your employed income to pre-collect tax you would otherwise pay via Self Assessment. This is legal and increasingly common. If you are in this position, it is worth reading How UK Tax Codes Work: A Payslip Decoder to understand how HMRC is using your PAYE code as a collection mechanism for other liabilities.
The Bigger Issue With HMRC's Coding Process
D0 errors are not random bad luck. They are a structural feature of a system that processes millions of tax codes using historic data, employer-reported information, and automated rules. When any one of those inputs is wrong, the code is wrong, and the worker bears the cost.
HMRC does not proactively alert you when your code looks unusual. Your employer cannot question it. Your payslip shows the code, but most people do not know what to look for. The result is a quiet, ongoing transfer of money from workers to HMRC, corrected only when someone takes the time to investigate.
If D0 is on your payslip and your total income is not comfortably above £50,270, treat it as an urgent task, not a distant admin job.
The Bottom Line
We started with a simple question: is 40% of your wages disappearing before you see them? If you have a D0 tax code and your combined income is below the higher rate threshold, then yes, it is. And HMRC is under no obligation to point that out to you.
The fix is not complicated. Check your tax code now at /check-my-tax-code, confirm whether D0 is justified for your income level, and if it is not, contact HMRC to have it corrected. Every month you wait is another month at 40% instead of 20%.
You might also like
Ready to simplify your tax filing?
Join the waitlist and be the first to know when TapTax launches.

