The web Browser you are currently using is unsupported, and some features of this site may not work as intended. Please update to a modern browser such as Chrome, Firefox or Edge to experience all features Michigan.gov has to offer.
Reporting Instruction Manual
Detail 2 wages and time worked
Understanding Detail 2 (DTL2) records
Every employee and working retiree needs at least one DTL2 record for each pay period. These records report the money the employee earned. They also show the retirement costs that the worker and employer must pay to the Michigan Public School Employees' Retirement System.
Required information for a DTL2 record
A DTL2 record must include these specific details:
- SSN: The employee's Social Security number.
- Name: The employee's first, middle, and last name.
- Begin and end dates: These dates usually match the school pay calendar.
- Retirement hours: The actual hours worked during the reported period.
- Reported wage code: A code that explains the type of money earned.
- Employer reported wages: The pay used to calculate retirement costs.
- Exception wages: This field is only for a specific professional leave.
- Employee contribution: The amount the worker pays. This must include cents.
- Employer contribution: The amount the employer pays into the system.
- Pay rate: The hourly rate or the total contract pay.
- Employment class code: A code that defines the job title.
- Contract begin and end dates: These are required if the worker earns $100 or more.
- Frequency of pay: This shows how many times a worker is paid in a year.
Understanding employment class codes
Employment class codes show what job an employee does at the reporting unit. You must use one of these codes on every DTL2 record.
If a worker has two different jobs, you must send a separate DTL2 record for each one. Use the correct code and pay rate for each position. For example, a person might be a bus driver (code 1610) and an aide (code 1630). Send one record for each job.
You may also use special codes like 9510, 9520, and 9530. These report different pay rates for the same job. You can report these as two records. You can also combine them into one record using an average pay rate and code 1610.
Employment class codes
-
These jobs involve making and leading policy for the school.
- 1110 Superintendent: The top manager of a school system.
- 1120 Assistant Superintendent: A person who helps the superintendent lead.
- 1130 Administrative Assistant: A person who performs professional office tasks.
- 1150 Principal: A person who leads and manages a school building.
- 1160 Supervision: A person who manages staff and programs.
- 1170 Program-Department Direction: A person who leads a specific department.
- 1180 Research: A person who studies facts to help the school system.
- 1190 Other Administration: Other management tasks.
-
These jobs use manual skills to keep schools running.
- 1610 Vehicle Operation: A person who drives a bus, truck, or car.
- 1620 Secretary Clerical Bookkeeper: A person who keeps records and uses office machines.
- 1630 Aide: A person who helps with tasks that do not involve teaching.
- 1640 Custodian: A person who cleans and takes care of buildings.
- 1650 Food Service: A person who prepares or serves food.
- 1660 Security and Monitor: A person who keeps people and property safe.
- 1670 Laborer: A person who performs basic manual work.
- 1680 Attendance: A person who helps students come to school more often.
- 1690 Other Operation and Service: Other service jobs.
-
These jobs require business knowledge and skills.
- 1310 Accounting: A person who keeps and checks financial records.
- 1320 Auditing: A person who checks that the school follows money rules.
- 1330 Legal: A lawyer for the school system.
- 1340 Personnel: A person who manages hiring and staff care.
- 1350 Architect-Engineer: A person who designs buildings and checks construction.
- 1390 Other Professional Business: Other business jobs.
-
These jobs require high levels of teaching knowledge.
- 1210 Curriculum: A person who creates plans for what students learn.
- 1220 Counseling: A person who helps students with school or personal growth.
- 1230 Library: A person who manages books and media.
- 1240 Teaching: A person who teaches students in or out of a classroom.
- 1250 Consulting: A person who provides expert advice to staff.
- 1260 Instructional Media: A person who creates learning tools.
- 1270 Visually Handicapped Media: Materials for students who cannot see well.
- 1280 Speech and Language Therapist: A person who treats speech or language problems.
- 1290 Other Professional Education: Other teaching jobs.
-
These jobs require special skills in health or social fields.
- 1410 Medical-Dental: A doctor or dentist for the school.
- 1430 Psychological: A psychologist for the school.
- 1440 Social Work: A person who helps people solve personal problems.
- 1450 Nursing: A nurse providing health care.
- 1470 Physical Therapy: A person who treats injuries with physical methods.
- 1480 Occupational Therapy: A person who helps people learn daily living skills.
- 1490 Other Professional: Other expert health jobs.
-
These codes are for people who retired from the Michigan Public Schools Retirement System.
- 9005 Retiree (Other): Use for retirees hired directly on or after July 1, 2022.
- 9025 3rd Party Retiree: Use for retirees hired through a company or contractor.
Note: Codes 9003, 9004, 9013 to 9015, and 9033 to 9045 are for specific adjustments.
-
- 1790 Other Special Payments: Money paid for special reasons.
- 1810 to 1890 Temporary Salaried: Use this for people hired as substitutes.
- 1910 to 1990 Overtime: Use this for extra hours and extra pay.
- 8000 Workers' Compensation: For members getting pay while injured.
- 8500 Short-term Disability: For members getting disability pay.
- 9001 Professional Leave: For members on released time.
- 9510 to 9530 Supplemental Employment: For members with more than one pay rate.
-
These jobs use science knowledge and hand skills.
- 1510 Data Processing: A person who works with computer data.
- 1530 Purchasing: A person who buys supplies for the school.
- 1540 Testing: A person who gives mental or school tests to students.
- 1550 Crafts and Trades: Skilled work like plumbing or fixing buses.
- 1560 Coaches-Recreational: A person who runs sports and fun activities.
- 1590 Other Technical: Other technical tasks.
Wage codes
-
How you report coaching pay depends on the job. Use these codes:
- 01 Coaching wages: Pay for coaches working every pay period.
- 11 Coaching wages: Pay for seasonal or part-time coaches.
- 25 Coaching positive adjustment: Use to add pay or hours to a past coaching report.
- 26 Coaching negative adjustment: Use to take away pay or hours from a past coaching report.
If you pay a coach every pay period, use code 01 for regular wages. Use code 11 if the job is seasonal and you pay a lump sum. A lump sum is one single payment for the whole season. For seasonal pay, the record dates should cover the whole season. This ensures the worker gets the right years of service (YOS). YOS is the amount of time a person has worked toward their retirement.
If a coach is paid by assignment, you must create an hourly rate. You can do this by dividing the total pay by a fair hourly rate, like a teaching rate. For example, if you pay $2,100 and the teaching rate is $25, you would report 84 hours.
Use wage code 11 for seasonal or part-time coaches. Use this code if you pay the coach in one lump sum. A lump sum is a single payment for the whole season. The record dates must cover the entire season. This helps the worker earn the correct years of service (YOS). YOS is the amount of time a person has worked toward their retirement.
If you pay a coach by assignment, you must create an hourly rate. Divide the total pay by a fair hourly rate, such as a teaching rate. For example, if you pay $2,100 and the teaching rate is $25, you report 84 hours. Use wage code 25 or 26 to fix a past coaching report.
-
Use code:
- 9001 Professional services leave: Pay for workers who take professional services leave.
Professional services leave is an approved leave in which an employee temporarily stops their regular job duties to perform work for an employee organization, such as a union.
Enter the same wage amount in the Employer Reported Wages field and the Exception Wages field. If the worker has regular wages in the same period, report them on a separate record.
-
This code is for active employees who work a steady schedule. If you pay a coach every pay period, use this code. Teachers who choose to get paid all year also use this code during the school year.
- 01 Regular wages: Normal pay for an active worker.
- 05 Regular positive adjustment: Use this to add pay or hours to a past report.
- 06 Regular negative adjustment: Use this to take away pay or hours from a past report.
-
This code is for retirees that return to work for a reporting unit.
- 07 Retiree wages: Pay for a retired worker.
- 75 Retiree positive adjustment: Use this to add retiree pay or hours to a past report.
- 76 Retiree negative adjustment: Use this to take away retiree pay or hours to a past report.
-
Use codes:
- 08 Summer spread wages: Pay for workers who don't work in the summer.
- 85 Summer spread positive adjustment: Use this to add pay or hours from a past summer spread report.
- 86 Summer spread negative adjustments: Use this to take away pay or hours from a past summer spread report.
Some staff work ten months but get paychecks all year. During the summer, use wage code 08 for these workers. Don't report any hours with this code. You may only use this code from June 1 through September 30.
If a teacher works summer school while getting spread pay, use two records. Use Code 01 for the summer school hours. Use Code 08 for the spread pay with zero hours. Use wage code 85 or 86 to fix a past summer spread report.
-
Use codes:
- 09 Wages without hours: Use for pay like longevity bonuses with no hours.
- 15 Wages without hours positive adjustment: Use this to add pay or hours from a past wages without hours report.
- 16 Wages without hours negative adjustment: Use this to take away pay or hours from a past wages without hours report.
Use wage code 09 for special payments like longevity bonuses. Longevity pay is a bonus for working at a job for a long time. Don't list any hours with this code. You must use the worker's regular job code. You cannot use this code for a new employee's first record. Use wage code 15 or 16 to fix a past report for this type of pay.
-
Use code:
- 8000 Weekly workers’ compensation: Use to report pay the worker would have earned.
Report the hours the employee would have worked if they were not hurt. Use the pay rate the employee normally earns. If the employee receives sick leave or bridge pay while on WWC, use a second DTL2 record. This record should use the regular job code and have zero hours. All hours belong on the record with code 8000.
DTL2 reporting rules and error fixes
-
Adjusting DTL2 records
Use an adjustment record to fix a posted record or add a missing one. Use a positive adjustment code to add money or hours. Use a negative adjustment code to take them away. To make an adjustment, follow these steps:
- Enter the original begin and end dates. These must match the dates ORS has on file.
- Enter the hours or wages you need to add or subtract.
- Select the adjustment wage code that matches the original code.
- Enter the pay rate for positive adjustments.
- Use the same job code as the original record.
ORS calculates the contribution amounts for you. If you are adjusting a previous fiscal year, use the rates from that year. Always make adjustments on your most recent unposted report.
-
Duplicate records The system doesn't allow two records with the same codes and dates. If a worker has two jobs, use a different class code for the second record. If the dates are wrong, check your records and fix them.
Missing information ORS needs the worker's name, birth date, address, and gender. If this is missing, you must submit a DTL1 record. The DTL2 record will stay stuck until the DTL1 is finished.
Pay rate issues The pay rate must be more than zero for regular, retiree, or coaching wages. If the pay rate is $100 or more, you must include contract dates. If there is no formal contract, use the dates of the fiscal year. A fiscal year is a 12 month period used for record keeping.
Adjustment errors If you change a record, the original record must be posted first. Posted means it is officially saved in the system. If you change wages to zero, you must also change the hours to zero. Negative changes cannot be larger than the original amount reported.
Retiree reporting You must report retirees with hours. You can only report retiree wages for 30 days after they retire. An exception is made for summer spread wages.
Summer spread wages Wage code 08 is for summer spread wages. You can only use this code from June through September. If you report wages without hours outside of these months, use wage code 09.
Date and year errors Record dates must stay within one fiscal year. This year runs from July 1 to June 30. All dates must match your official payroll calendar.
Stuck records Records process in order. If an old record has an error, new records will not post. You must fix the oldest error first. Once fixed, the system will process one record each night.
-
Wage and service
This section reports employees' hours worked and money earned.
Format codes for programmers:
- X: Use letters or numbers.
- 9: Use numbers only.
Field name Position Required Characters Character length Explanation Format Section Identifier 1 to 4 Yes Letters and numbers 4 Use DTL2 for this section. X(4) SSN 5 to 13 Yes Numbers only 9 The employee's Social Security number. 9(9) Last Name 14 to 43 Yes Letters only 30 The employee's last name. X(30) First Name 44 to 63 Yes Letters only 20 The employee's first name. X(20) Middle Name 64 to 83 No Letters only 20 The employee's middle name or initial. X(20) Begin Date 84 to 91 Yes Numbers only 8 The first day the employee was paid. Use the MMDDYYYY format. 9(8) End Date 92 to 99 Yes Numbers only 8 The last day the employee was paid. Use the MMDDYYYY format. 9(8) Retirement Hours 100 to 105 Yes Numbers only 6 The total hours the employee worked. 9(4)v99 Reported Wage Code 106 to 107 Yes Numbers only 2 The code for the employee record. 9(2) Employer Reported Wages 108 to 116 Yes Numbers only 9 The employee's reportable wages paid during this time. 9(7)v99 Not Used 117 to 125 No Zeros only 9 Fill with zeros. 9(9) Exception Wages 126 to 134 No Numbers only 9 Wages paid for professional services leave. 9(7)v99 Member Contributions 135 to 143 Yes Numbers only 9 Pre-tax retirement money taken from the employee's wages. 9(7)v99 Employer Contributions 144 to 152 No Numbers only 9 The money the employer pays to ORS for the employee. 9(7)v99 Not Used 153 to 161 Yes Zeros only 9 Fill with zeros. 9(9) Pay Rate 162 to 170 Yes Numbers only 9 The employee's hourly rate or full contract amount for the school year. 9(7)v99 Employment Class Code 171 to 174 Yes Letters and numbers 4 The code for the employee's job position. X(4) Contract Begin Date 175 to 182 Yes Numbers only 8 The contract start date. Use MMDDYYYY or zeros if none. 9(8) Contract End Date 183 to 190 Yes Numbers only 8 The contract end date. Use MMDDYYYY or zeros if none. 9(8) Not Used 191 to 202 Yes Zeros only 12 Fill with zeros. 9(12) Frequency of Pay 203 to 204 Yes Letters and numbers 2 The total number of pays the employee gets in a year. X(2) Health Care % Indicator 205 Yes Numbers only 1 Use 1 if the salary is under $18,000. If it's more than $18,000, use 0. 9(1) Filler 206 to 380 No Spaces only 175 Extra space for the record. X(175) -
New employee wage and service record
Record example using dashes for spaces.
Section Identifier: DTL2
SSN: 333444555
Last Name: Konstantinidi-----------------
First Name: Vera----------------
Middle Name: Dvora---------------
Begin Date: 01082025
End Date: 01142025
Retirement Hours: 004000
Reported Wage Code: 01
Employer Reported Wages: 000100000
Not Used: 000000000
Exception Wages: 000000000
Member Contributions: 000003000
Employer Contributions: 000012170
Not Used: 000000000
Pay Rate: 000002500
Employment Class Code: 1240
Contract Begin Date: 00000000
Contract End Date: 00000000
Not Used: 000000000000
Frequency of Pay: 21
Health Care % Indicator: 0
Current employee wage and service record
Section Identifier: DTL2
SSN: 222222222
Last Name: Jyoti-------------------------
First Name: Parvin--------------
Middle Name: --------------------
Begin Date: 03012026
End Date: 03142026
Retirement Hours: 008000
Reported Wage Code: 01
Employer Reported Wages: 000200000
Not Used: 000000000
Exception Wages: 000000000
Member Contributions: 000006000
Employer Contributions: 000024340
Not Used: 000000000
Pay Rate: 000002500
Employment Class Code: 1130
Contract Begin Date: 00000000
Contract End Date: 00000000
Not Used: 000000000000
Frequency of Pay: 26
Health Care % Indicator: 0
Current employee wage and service positive adjustment
Section Identifier: DTL2
SSN: 555123456
Last Name: Freudenberger-----------------
First Name: Gloria--------------
Middle Name: --------------------
Begin Date: 12042025
End Date: 12192025
Retirement Hours: 000000
Reported Wage Code: 05
Employer Reported Wages: 000010000
Not Used: 000000000
Exception Wages: 000000000
Member Contributions: 000000430
Employer Contributions: 000001217
Not Used: 000000000
Pay Rate: 000000000
Employment Class Code: 1610
Contract Begin Date: 00000000
Contract End Date: 00000000
Not Used: 000000000000
Frequency of Pay: --
Health Care % Indicator: 0
Current employee wage and service negative adjustment
Section Identifier: DTL2
SSN: 555123456
Last Name: Yamashita---------------------
First Name: Hyun-woo------------
Middle Name: Yasu----------------
Begin Date: 04302026
End Date: 05142026
Retirement Hours: 000000
Reported Wage Code: 06
Employer Reported Wages: 000010000
Not Used: 000000000
Exception Wages: 000000000
Member Contributions: 000000430
Employer Contributions: 000001217
Not Used: 000000000
Pay Rate: 000000000
Employment Class Code: 1610
Contract Begin Date: 00000000
Contract End Date: 00000000
Not Used: 000000000000
Frequency of Pay: 26
Health Care % Indicator: 0
-
Edits and validations for DTL2 records
The Michigan Office of Retirement Services (ORS) runs checks on your records. These checks ensure your data is correct and complete.
Bad format
The system won’t process a record if it has a bad format. This means the record doesn’t follow the technical rules for the file. You can’t use letters or symbols in the following fields. You must use numbers only for:
- Social Security Number.
- Begin Date and End Date.
- Contract Begin Date and Contract End Date.
- Retirement Hours.
- Employer Reported Wages and Exception Wages.
- Member Contributions and Employer Contributions.
- Pay Rate and Frequency of Pay.
Additional formatting requirements:
- You can’t leave the following fields blank or report an amount less than zero: Reported Wages, Member Contributions, Employer Contributions, Pay Rate, Class Code, Begin Date, or End Date.
- You can’t leave the Begin Date or End Date fields empty.
- You can’t use dates outside the range of Jan. 1, 1900, to Dec. 31, 2999. All dates must be valid calendar dates.
- You can’t use a Social Security Number that is all zeros or all nines.
Suspend
The system will suspend a record if it finds an error. This action stops the record from moving forward. You must fix these errors before the system can complete the work.
Missing or invalid information
- You can’t submit a record without an SSN, Begin Date, End Date, Wage Code, and Class Code.
- You can’t use Employment Class Code and Wage Code that doesn’t exist in the reporting system.
- You can’t submit a DTL2 record if the member is missing full demographic details on file. Demographics include First Name, Last Name, Date of Birth, Address, and Gender.
- You must submit a DTL4 record if the benefit structure requires one. This applies to most wage codes except class 8000 or 8500.
Date and calendar rules
- You can’t submit dates that don’t match the ORS payroll calendar.
- You can’t report adjustments for pay periods ending before Oct. 1, 2002.
- You can’t submit a Begin Date that’s earlier than the day your reporting unit became active.
- You can’t use class code 8000 and wage codes 07 and 75 if the End Date is on or after July 1, 2010.
- You can’t submit a Begin Date that’s later than the End Date.
- You can’t submit a Begin Date for a retiree that is less than one month after their retirement date.
- You can’t report wage codes 09 or 15 if the begin and end dates cross into different fiscal years.
- You can’t use wage code 04 or 45 if the record's End Date is on or after the report's Begin Date.
- You can’t report a Pay Rate over 100 without contract dates. The Contract Begin Date can’t be later than the Contract End Date.
Pay, wage, and hour accuracy
- You can’t report a Pay Rate higher than $300,000.00.
- You can’t report a Pay Rate of zero for regular or coaching wages (codes 01, 07, 08, 09, 11). This rule doesn’t apply to class code 8000 (workers' compensation).
- You can’t report an hourly rate that is off by more than 5% of the Pay Rate if the rate is under 100. This rule doesn’t apply to class code 8000 (workers' compensation).
- You can’t report zero for Employer Reported Wages unless you use a negative adjustment code (06, 16, 26, 46, 76, or 86).
- You can’t report hours for wage codes 04, 08, 09, 15, 45, or 85.
- You can’t use wage codes 07, 75, or 76 if you aren’t using a Retiree Class Code.
- You can't use wage code 04 or 45 for past dates if the employee has no record of wages for those dates on a DTL2 record.
- You can’t report Exception Wages that are higher than the total Employer Reported Wages.
- You can’t report Exception Wages greater than zero without using class code 9001.
Adjustments and overlaps
- You can’t report the same SSN twice with the same code and overlapping dates.
- You can’t report an adjustment if the original record hasn’t been posted.
- You can’t use adjustment codes for dates that fall within the current report dates.
- You can’t submit a negative adjustment that makes the fiscal year balance go below zero.
- You can’t use negative adjustment codes 06, 26, or 76 to remove all money if hours remain on the record.
Retiree and new employee rules
- You can’t report new employees during their 75-day window if they haven’t chosen a benefit plan.
- You can’t report a health care rate for new hires (after July 1, 2010) that differs from previous records for that period.
- You can’t use Retiree Class Codes with any codes other than 04, 07, 45, 46, 75, or 76.
- You can’t report zero retirement hours for retirees unless you use codes 04, 45, 46, or 76.
- You can’t use Retiree Class Codes 9013 through 9045 for any date before Dec. 27, 2012.
Flag
The system will flag a record if the data is valid but seems unusual. A flag doesn’t stop the system from processing the record. You should review these records to ensure the data is correct.
Pay rate checks
- If the Pay Rate is under 100, the system checks the math for an hourly rate.
- If the Pay Rate is over 100, the system checks the math for an annual rate.
You should check any record if:
- Employer Reported Wages are greater than $10,000 for the pay period.
- Employer Gross Earnings are greater than $25,000 for the pay period.
- The employee is younger than 19 years old.
- The Retirement Hours are greater than 200.
- Reported wages for the year are higher than IRS limits.
- The employee's name doesn’t match the name in the ORS system.
- The employee is a retiree and they are reported with an active employment class code.
- The employee's account status is listed as refunded or transferred.
- The Pay Rate isn't higher than minimum wage (unless using specific adjustment codes).
- A retiree has Member Contributions greater than zero.
-
Contribution rules and descriptions
General
The system calculates how much money each employee must pay into their retirement account. It saves this amount in the val_calc_ empe_contrb_amt field. These calculations follow the specific benefit plan assigned to each employee.
Fixed contribution rates
From 1987–1989
Employees at a fixed contribution rate between Jan. 1, 1987, and Dec. 31, 1989, pay a specific amount. This amount equals 4.0% of the wages reported by their employer.
1990 and later
Employees at a fixed contribution rate on or after Jan. 1, 1990, pay a different amount. This amount equals 3.9% of the wages reported by their employer.
Graded plans
Some employees pay contribution rates that change based on how much they earn in a school fiscal year. These rates apply to the total wages earned at each individual employer:
- Employees earning $5,000 or less pay 3.0% of those wages.
- Employees earning between $5,000.01 and $15,000 pay 3.6% of those wages.
- Employees earning more than $15,000 pay 4.3% of those wages.
If a single paycheck moves an employee from one level to the next, the system splits the math. For example, an employee earned $4,000 so far. If their next paycheck is $3,000, the first $1,000 uses the 3.0% rate. The remaining $2,000 uses the 3.6% rate.
Member Investment Plan rules used for Basic Plan
Member Investment Plan (MIP) Graded rules should be used for employees listed as Basic Plan who have no wage and contribution records after Jan. 1, 1987.
All others in Basic Plan
Other employees with the Basic Plan don’t pay member contributions.
MIP Plus
Employees with the MIP Plus contribution rate also pay based on their total earnings per employer each fiscal year:
- Employees earning $5,000 or less pay 3.0%.
- Employees earning between $5,000.01 and $15,000 pay 3.6%.
- Employees earning more than $15,000 pay 6.4%.
Like the graded rates, the system will split the calculation if a paycheck spans two different levels.
Health care
On or after July 1, 2010, all employees pay an extra 1.5% or 3% for health care based on earnings. This money goes into a health fund trust. It doesn’t go into the employee’s personal account.
Fiscal year 2010
An existing employee in fiscal year (FY) 2010 that stayed working for the same employer paid:
- An extra 3% if they earned $18,000 or more in FY 2010.
- An extra 1.5% if they earned less than $18,000 in FY 2010.
If an employee had multiple jobs in 2010 and joined a new employer, the system used the highest rate at any employer. The employee paid:
- An extra 3% if any 2010 employer paid more than $18,000.
- An extra 1.5% if all 2010 employers paid $18,000 or less.
Employees with wage codes 08, 85, or 86 (summer spread wages) didn’t pay into the health care fund between July 1, 2010, and Sept. 30, 2010. On or after Oct. 1, 2010, the standard FY 2010 health care rules applied to them.
New employees hired on or after July 1, 2010, paid based on a specific indicator. If the indicator is 1, they pay 1.5%. Otherwise, they pay 3%.