Box 7 Distribution Codes a Federal Employee's Guide
You open the mail from the Thrift Savings Plan or the Office of Personnel Management, glance at your 1099-R, and your eyes land on Box 7. There's a code there. Maybe it's 7. Maybe G. Maybe something less familiar.
That small box carries a lot of weight. It tells the IRS what kind of distribution you received and how that payment should be treated on your tax return. For federal employees and retirees, that matters because TSP withdrawals, Roth balances, annuity payments, death benefits, and rollovers don't all get handled the same way.
A generic glossary won't help much if you're trying to figure out whether your TSP rollover was coded correctly, whether your Roth TSP payment is taxable, or why an OPM annuity form looks different from a TSP form. That's where people get tripped up. The code looks simple, but the tax result often isn't.
Why Box 7 on Your 1099-R Is So Important
You receive a 1099-R from the TSP or OPM, glance at Box 7, and see a single character. That one code helps tell the IRS what kind of payment you got and how the payment should be handled on your return.
Box 7 works like a label on a file folder. The number or letter does not tell the whole tax story by itself, but it tells the IRS which story to start with.
Here is why that matters in real life. A retired employee who takes a regular TSP withdrawal after reaching the usual age requirement may see Code 7. A different retiree who sends money straight from the TSP to an IRA should usually see Code G. A worker who takes money out early may see Code 1 if the payer does not know of an exception. Those codes can lead to very different tax treatment, even if the dollar amount is the same.
For federal employees, the confusion often comes from having more than one retirement system in play at the same time. You may have a TSP form, an OPM annuity form, or both. You may also have a traditional balance and a Roth TSP balance. That mix is why a generic definition of a Box 7 code often falls short. The federal angle matters.
A few common situations show why:
- A direct TSP rollover to an IRA should not look the same as a cash withdrawal you kept.
- A Roth TSP distribution may include money that is not taxed the same way as traditional TSP money.
- A FERS or CSRS annuity payment can be coded differently from a TSP distribution, even though both arrive on Form 1099-R.
- A beneficiary payment after a death follows a different reporting path from a retiree's own withdrawal.
That is why Box 7 deserves a careful look before you file.
One mistake shows up again and again. A federal retiree sees Code 7, reads "normal distribution," and assumes the full payment must be taxable. Sometimes that is correct. Sometimes it is not. If part of the payment comes from after-tax contributions, or if the form reports a Roth TSP distribution, the code identifies the type of distribution first. The taxable amount is a separate question.
The safer approach is to read Box 7 as a starting point, not a verdict. First ask, "What kind of payment was this?" Then ask, "Which account did it come from?" That extra pause helps catch the errors federal employees run into most often, especially with rollover coding and Roth TSP reporting.
Quick-Reference Table for All Box 7 Codes
A quick scan of Box 7 can save you from reading a 1099-R the wrong way. If you are a federal employee or retiree, that matters more than it does on a generic tax form summary, because the same code can show up on a TSP withdrawal, an OPM annuity payment, or a beneficiary distribution, and those are not the same situation.
Box 7 Distribution Codes at a Glance
| Code | Meaning |
|---|---|
| 1 | Early distribution, no known exception. |
| 2 | Early distribution, exception applies. |
| 3 | Disability distribution. |
| 4 | Death distribution paid to a beneficiary or estate. |
| 7 | Normal distribution, generally for someone age 59½ or older. |
| D | Nonqualified annuity payment. |
| G | Direct rollover to a qualified plan or IRA. |
| H | Direct rollover of a designated Roth account distribution to a Roth IRA. |
| K | IRA distribution includes assets without a readily available fair market value. |
| L | Loan treated as a deemed distribution. |
| Q | Qualified distribution from a Roth IRA. |
| R | Recharacterized IRA contribution. |
| T | Roth IRA distribution where an exception applies. |
| Y | Qualified Charitable Distribution code used with certain primary codes. |
The table is a map, not the full trip. Box 7 tells you what kind of payment happened. It does not answer every tax question by itself.
What to watch for in the table
Some entries appear as a single code. Others show up as a combination of two characters. That usually means the payer is describing two features of the same payment, much like a file label that tells you both the folder and the document type.
For example, a federal retiree could see a normal distribution code paired with another letter that adds detail about the source or tax treatment. A TSP rollover can also be easy to misread if you focus only on whether money moved out, instead of whether it was paid to you or sent directly to another retirement account.
That distinction matters a lot for federal employees. A Code G generally points to a direct rollover, while Code H is the code that often gets attention in Roth TSP situations because it signals a direct rollover of a designated Roth account distribution to a Roth IRA. If a taxpayer expected Roth TSP money to be moved one way and the coding shows something else, that is a good moment to stop and compare the 1099-R to the actual transaction.
Code Y is newer and works only with certain primary codes, so if you see it, read the full Box 7 entry together instead of one character at a time.
Two characters in Box 7 often mean the payer is adding detail, not reporting an error.
For federal employees, the codes that usually deserve the closest look are 1, 2, 7, G, H, 4, and L. Those are the ones that come up most often with TSP withdrawals, Roth TSP rollovers, annuity payments, beneficiary claims, and taxable loan defaults.
Understanding Common Distribution Codes in Detail
A Box 7 code works like a short label on a case file. The label is brief, but it changes how the IRS reads the payment. For federal employees, that matters because TSP withdrawals and FERS or CSRS annuity payments can look similar on the surface while carrying very different tax treatment.
The four codes that cause the most confusion are 1, 2, 7, and G. If you can read those correctly, you can avoid many of the mistakes that show up on returns after a separation, retirement, or rollover.

Code 1
What it means
Code 1 means an early distribution with no known exception. The payer is saying, in effect, "this payment went out before normal retirement age, and we did not code an exception on the form."
What often confuses federal employees
Code 1 does not always mean the taxpayer owes the extra tax. It means the payer did not report an exception in Box 7. Those are different questions.
This distinction comes up often with TSP withdrawals after an employee leaves government service earlier than planned. A former employee may qualify for an exception on the tax return even though the 1099-R still shows Code 1. If the payment schedule involved understanding Substantially Equal Periodic Payments, the code on the form and the final tax result may not match automatically.
Federal example
A 52-year-old employee leaves federal service, takes money from the TSP to cover living expenses, and receives a 1099-R with Code 1. The form signals an early payment with no exception reported by the TSP. The employee should pause there and review whether a separate exception can still be claimed on the return.
Code 2
What it means
Code 2 signals an early distribution, exception applies.
That is an important difference from Code 1. The payment was still early, but the payer recognized an exception when preparing the form.
Why this matters in federal cases
Federal employees sometimes assume Code 2 means "tax-free." It does not. The amount can still be taxable income. Code 2 mainly tells you the early-distribution penalty issue was handled differently from a Code 1 payment.
Federal example
A federal employee receives a TSP payment before age 59½ under circumstances the plan recognizes as qualifying for an exception. The 1099-R shows Code 2. The money may still be included in income, but the form is not flagging it the same way an ordinary early cash-out would be.
Code 7
What it means
Code 7 means a normal distribution. In plain terms, the payment was made at an age or under conditions the IRS treats as a regular retirement-age distribution.
What Code 7 does and does not tell you
Code 7 usually answers the penalty question. It does not settle the taxable amount by itself.
That point gets missed all the time with federal retirees. A TSP or annuity payment can be coded as normal and still include a taxable and non-taxable portion. With a FERS or CSRS annuity, for example, part of each monthly payment may represent recovery of after-tax employee contributions. With Roth TSP money, a person may also assume "Roth" means no tax issues remain, but the reporting still depends on whether the distribution was qualified and how the rollover or withdrawal was processed.
Federal example
A retired CSRS employee begins receiving monthly annuity payments and sees Code 7 on the 1099-R. That code fits because the payments are normal retirement distributions. Even so, the retiree still needs to review how much of each payment is taxable and how much reflects previously taxed contributions.
Code 7 tells you the payment was normal for age or status. It does not tell you that every dollar is taxable, or that every dollar is tax-free.
Code G
What it means
Code G is used for a direct rollover from one eligible retirement account to another.
The easiest way to read it is this: the money moved between accounts without being paid to you first.
Why federal employees should look closely
This code shows up often when a federal employee leaves service and moves TSP money to an IRA or another employer plan. It is also one of the most important codes to verify because rollover mistakes can create tax notices later. If you asked for a direct rollover but the payment came to you instead, the coding may be different and the tax treatment may change.
This is also where Roth TSP reporting deserves extra attention. A direct rollover of traditional TSP money and a direct rollover involving Roth TSP money are not always coded the same way, so federal employees should compare Box 7 to the actual destination account rather than assuming every rollover belongs under one code.
Federal example
A retiring employee instructs the TSP to send traditional TSP funds straight to a traditional IRA. The 1099-R shows Code G. That coding tells the IRS the money stayed inside the retirement system instead of being treated as cash paid out for current use.
Navigating Codes for Early Distributions and Exceptions
A federal employee leaves service at 57, pulls money from the TSP to cover the gap before a pension starts, and opens the 1099-R expecting one clear answer. Instead, Box 7 shows a code that seems to decide whether there is an extra tax. That is why early-distribution codes cause so much confusion.
Box 7 is reporting what the payer knew when the form was issued. It is not a final ruling on every exception you may be able to claim on your tax return. For federal employees, that distinction matters because TSP withdrawals, disability retirements, and age-based exceptions do not always line up neatly with what people expect.
Why Code 1, Code 2, and Code 3 matter
These three codes often look similar at first glance, but they answer different questions.
Code 1 means the payment was reported as an early distribution and the payer did not apply a known exception.
Code 2 means the payment was early, but the payer reported that an exception applies.
Code 3 means the distribution was reported as disability-related.
A good way to read them is to picture a traffic signal on the form. Code 1 says, "possible penalty issue, check further." Code 2 says, "early payment, but the form already reflects an exception." Code 3 says, "this is being treated under the disability category rather than as a routine early withdrawal."
What federal employees often miss
Federal workers often assume age alone controls the code. Age matters, but so does the reason for the payment and what the TSP or annuity payer could verify.
For example, a FERS employee who takes money from the TSP before age 59½ may receive Code 1 if no exception was built into the reporting. That does not always mean the extra tax applies in the end. It may mean the payer left the exception for the taxpayer to claim separately, often through Form 5329.
By contrast, if the payer knows an exception applies, Box 7 may show Code 2. The practical result is different because the form itself is already signaling that the payment was early but falls into a recognized exception category.
Federal examples
A 55-year-old former employee takes a cash distribution from the TSP after leaving federal service and uses the money for living expenses. If the TSP reports the payment with Code 1, the form is telling the IRS the distribution was early and no exception was confirmed on the payer's side.
Now take a different case. An employee retires on disability and starts receiving payments tied to that status. If the payment meets the disability standard used for 1099-R reporting, Box 7 may show Code 3. That puts the distribution in a different bucket from a standard early withdrawal.
One more area causes confusion for federal employees who set up scheduled withdrawals to avoid the additional tax. Those arrangements have technical rules, and a mistake can affect the tax treatment of the entire series. If that situation applies to you, read about understanding Substantially Equal Periodic Payments.
Why Roth TSP withdrawals need extra care
Early Roth TSP withdrawals can be especially confusing because two separate questions are in play. One question is whether Box 7 shows an early-distribution code. The other is how much of the payment is earnings versus contributions, and whether the distribution is qualified.
That is why federal employees should not stop at the code alone. If your withdrawal involved Roth TSP money, it helps to review how a TSP to Roth IRA rollover works for federal employees, because reporting often gets muddled when Roth money, early access, and rollover decisions intersect.
Important distinction: The Box 7 code reflects the payer's reporting position. Your final tax result can still depend on the forms you file and the exception you can support.
A careful review here can prevent a common mistake. Federal employees often see Code 1 and assume the issue is settled, even when the return may support a different tax outcome.
Rollover and Roth-Specific Distribution Codes
A federal employee retires, asks the TSP to send the money to a new IRA, and later opens the 1099-R expecting everything to look straightforward. Then Box 7 shows a code that does not match what the employee thought happened. That is where rollover reporting starts to matter, especially if part of the account was Roth TSP.

Code G and Code H
For federal employees, Code G usually signals a direct rollover of pre-tax retirement money to another eligible retirement account. A common example is a retiring employee who moves a traditional TSP balance straight into a traditional IRA. The money goes from trustee to trustee, so the 1099-R should reflect a direct rollover rather than a taxable cash payout.
Code H is narrower. It applies to a direct rollover from a designated Roth account to a Roth IRA. In federal terms, this often means Roth TSP money moved directly into a Roth IRA after separation or retirement.
Those two codes look similar, but they do different jobs. Traditional TSP dollars rolled directly to a traditional IRA point to Code G. Roth TSP dollars rolled directly to a Roth IRA point to Code H.
If you are comparing those choices before initiating the transfer, this guide to a TSP to Roth IRA rollover for federal employees explains the practical side of the decision.
Why these codes get mixed up
Federal retirees often say, “I rolled it over,” as if that settles the reporting. Box 7 asks a more precise question. What kind of money moved, and how did it move?
A direct rollover works like handing a sealed package from one custodian to another. If the payment is made to you first, even if you intend to put it back into a retirement account, the reporting may look different because the transaction itself was different.
Here is the cleanest way to sort it out:
| Situation | Box 7 issue to watch |
|---|---|
| Traditional TSP moved directly to a traditional IRA | Look for Code G |
| Designated Roth account moved directly to a Roth IRA | Look for Code H |
| Money paid to you instead of moved directly | It may be reported as a distribution first, not a direct rollover |
This is one of the biggest trouble spots for federal employees. A retiree may remember giving rollover instructions, but if a check was issued to the participant instead of sent directly to the new custodian, Box 7 may not show the rollover code the retiree expected.
Roth reporting adds another layer
Roth TSP reporting causes confusion because Box 7 does not answer every Roth question by itself. The code tells you the type of distribution the payer is reporting. It does not, by itself, explain whether the Roth distribution was qualified or how much of the payment represents contributions versus earnings.
For example, a federal employee might roll Roth TSP money directly to a Roth IRA and see Code H. That code points to the direct rollover. It does not replace the need to confirm that the payer correctly tracked the Roth source and that the rest of the form lines up with the transaction.
This walkthrough helps illustrate how these transfers are commonly reported and why the details matter:
Before filing, match three pieces of the story:
- The source account. Traditional TSP, Roth TSP, IRA, or annuity.
- How the money moved. Direct rollover or paid to you first.
- The Box 7 code. Especially G or H in rollover cases.
If one of those pieces does not fit, pause and review the 1099-R closely. That small code often reveals whether the transaction was reported the way you intended.
Special and Less Common Distribution Codes Explained
A federal employee often notices the unusual code only after the 1099-R arrives. The payment looked straightforward, but Box 7 tells a more specific story about why the money was paid and how the IRS expects it to be classified.
These less common codes matter because they often show up during life changes, not routine retirement income. A death benefit, a private annuity outside your federal benefits, or a TSP loan problem can all produce a code that feels out of place if you were expecting a simple retirement distribution.
Code 4 for death distributions
Code 4 means the payment is being reported as a death distribution. The money may still come from a retirement account you recognize, but the tax form is reflecting the fact that the payment is being made after the participant's death.
For a federal example, a surviving spouse might receive a TSP death benefit after the account owner dies. That payment is not reported the same way as a retiree's own TSP withdrawal. The account may be familiar. The reporting reason is different.
This is a common point of confusion for families handling federal benefits for the first time. They see TSP on the form and assume the same codes used for the employee's withdrawals should apply. Code 4 tells you the IRS sees this as a beneficiary-related payment.
Code D for nonqualified annuity payments
Code D applies to nonqualified annuity payments. In plain language, this usually means the annuity was not held inside a qualified retirement plan such as the TSP or a traditional employer plan.
Federal retirees may run into this if they bought a private annuity with personal savings separate from FERS, CSRS, or TSP money. In that case, the 1099-R can arrive alongside federal retirement documents, even though it comes from a completely different type of income source.
That distinction matters. A FERS or CSRS annuity has one reporting framework. A private annuity has another. If you are trying to sort out how your retirement income fits together, this guide to calculating annuity payments like a pro can help you place that payment in the broader income picture before you work through the tax form.
Code L for plan loans treated as distributions
Code L identifies a deemed distribution from a plan loan. The easiest way to understand it is to picture a loan that stopped meeting the plan's rules. The money may have started as a loan, but for tax reporting purposes, the IRS now treats it as a distribution.
For federal employees, this often points back to a TSP loan issue. If loan payments were missed or the loan otherwise failed plan requirements, the tax result can shift quickly. What felt like an account maintenance problem becomes a taxable event on Form 1099-R.
Code L is one of the clearest examples of why Box 7 does more than label voluntary withdrawals.
A simple way to sort unusual codes
When you see a code you do not recognize, start by asking what kind of event caused the form:
- Life event. A death or similar status change affected who received the money.
- Account type. The payment came from a nonqualified annuity rather than a federal retirement plan.
- Administrative event. A TSP loan or plan rule triggered reporting even though no standard withdrawal happened.
That approach helps federal employees avoid a common mistake. They focus on where the money came from, but Box 7 often makes more sense when you focus on what happened to trigger the payment in the first place.
Box 7 Codes for Federal Employees TSP and Annuities
Generic advice often falls short. Federal employees often have a mix of TSP money, Roth TSP balances, and OPM annuity income. The code may be familiar, but the account behind it changes what you should do next.

TSP distributions are not all alike
A TSP withdrawal taken at the right age may show Code 7. A direct rollover from the TSP should be coded as a rollover, not as a normal distribution. A Roth-related rollover follows its own coding path. And a TSP loan issue can create a code that looks nothing like a normal retirement withdrawal.
That's why I tell federal employees not to focus only on the code number. Focus on the transaction itself. Ask what happened to the money.
The Roth TSP confusion point
One of the biggest trouble spots is Roth TSP reporting. An underserved but important issue is that federal employees may confuse Code 7 with taxable treatment when the distribution involves Roth money. BoomTax's discussion of this federal-retiree reporting gap notes that TSP participants may misclassify Roth TSP normal distributions as taxable income because the 1099-R shows Code 7 without clearly signaling that Roth earnings may be tax-free.
That's the kind of mistake that leads people to overpay.
A federal retiree sees Code 7, enters the whole amount as ordinary taxable retirement income, and moves on. But if the payment includes Roth TSP funds and meets the rules for tax-free treatment, the result can be a return that overstates taxable income.
OPM annuity forms need a different mindset
FERS and CSRS annuity payments often feel simpler because they're ongoing monthly payments, not one-time transfer events. Even so, the 1099-R code still matters. The form is telling the IRS how that annuity payment should be categorized.
Federal retirees who receive both an annuity and TSP distributions should avoid one common shortcut: treating every 1099-R the same just because they arrive in the same tax season.
Use a separate review for each form:
- Match the payer. TSP and OPM forms reflect different benefit systems.
- Match the event. Was it a withdrawal, a rollover, an annuity payment, or a beneficiary payment?
- Match the code to the account type. Traditional and Roth money can produce very different tax results.
If you're comparing withdrawal paths before retirement or after separation, this guide to TSP withdrawal options can help connect the transaction choice to the reporting you may later see on Form 1099-R.
Federal employees run into Box 7 trouble when they assume the code answers every tax question. It doesn't. It answers the classification question first.
That mindset shift clears up a lot of confusion.
How to Verify and Correct Box 7 Code Errors
If your Box 7 code doesn't seem to fit the transaction, don't just override it on your return and hope for the best. Start by checking your own records.
A practical correction process
- Review the transaction details. Look at the withdrawal request, rollover paperwork, TSP confirmation, or annuity correspondence.
- Identify the payer. A TSP-issued 1099-R should be reviewed with TSP records. An annuity form should be checked against OPM records.
- Compare what happened with the code reported. If you requested a direct rollover, the form should reflect rollover treatment.
- Contact the payer directly. Ask whether the coding matches the transaction they processed.
- Request a corrected 1099-R if needed. Keep notes of who you spoke with and what documents you sent.

Keep your paperwork organized
The correction process goes much smoother when you can quickly produce the supporting documents. That's especially true if you're dealing with multiple retirement accounts or coordinating with a tax preparer. A strong system for secure client document processes can make it easier to gather confirmations, forms, and correspondence without losing the paper trail.
If the payer agrees there was an error, ask for a corrected form before filing whenever possible. If you must file while the issue is still being resolved, get tax help from someone who understands retirement reporting and can document the position taken on the return.
Frequently Asked Questions About Box 7 Codes
A lot of federal retirees reach this point after doing everything carefully, then one small box on the 1099-R still raises questions. That is normal. Box 7 is short, but it can change how a TSP withdrawal or OPM annuity payment is read on your tax return.
Can Box 7 contain more than one code
Yes. Some 1099-R forms use more than one code because one payment can have more than one tax characteristic.
For a federal employee, a common point of confusion is a rollover involving Roth money. A direct rollover from Roth TSP to a Roth IRA is generally reported differently from a direct rollover of traditional TSP money. The code tells the IRS what kind of money moved and where it went. It works like a label on a file folder. The amount may look similar, but the tax treatment depends on the label.
If your form shows multiple characters in Box 7, slow down and match them to the actual transaction that occurred.
Does Code 7 mean my whole distribution is taxable
No. Code 7 means the distribution is treated as a normal distribution based on age or status. It does not mean every dollar is taxable.
That matters for federal employees with after-tax or Roth money in the TSP, and for retirees whose annuity includes an already-taxed cost basis. For example, a retired federal worker may receive a normal TSP distribution after age 59½, but part of that payment could still be non-taxable if it came from qualified Roth TSP contributions. In the same way, part of an OPM annuity payment may reflect recovery of employee contributions.
Code 7 answers one question. It does not answer every tax question.
What if my tax preparer disagrees with the code
Start with the paperwork behind the transaction. A TSP withdrawal election, rollover confirmation, or OPM annuity notice usually tells the story more clearly than the code by itself.
If the form says one thing but your records show something else, ask the payer to explain how the code was chosen. This comes up often with rollovers and Roth TSP reporting because the movement of funds can sound simple in conversation but be classified very specifically for tax purposes. Your preparer may be right to question it, but the fix usually begins with the payer, not with changing the form on your own return.
Do Box 7 codes control state taxes too
They can affect how the payment is categorized, but your state may apply its own rules to retirement income.
For example, a Box 7 code may show a normal distribution from TSP or an annuity payment from OPM, yet your state may exclude some federal retirement income or tax it differently. Use the federal code as the starting point, then check the state treatment separately.
If you want help making sense of TSP withdrawals, annuity reporting, or retirement tax forms before a mistake turns into a tax headache, Federal Benefits Sherpa offers guidance built specifically for federal employees and retirees. A second set of trained eyes can be especially helpful when your 1099-R includes rollover codes, Roth TSP distributions, or multiple retirement income sources.