Tuesday, March 15, 2011

Forgot the FUTA? Slacking on SUTA? Fix it now!

I know, I know, I know...I am on a payroll bender lately.  I promise more diverse topics soon :)  But here is one last payroll fixin' blog post.

Despite our best efforts, pay codes are sometimes set up incorrectly.  Pay codes that should have been marked as FUTA and/or SUTA taxable are not.  Or, even worse, the Pay Code Setup (Tools>>Setup>>Payroll>>Pay Code) is correct but the employee record has been changed (Cards>>Payroll>>Pay Code).  Unlike other taxes, FUTA and SUTA are not calculated and posted on a per payroll basis.  These entries are generated from the Period End Payroll Reports window (Reports>>Payroll>>Period End).  For this reason, discrepancies in FUTA and SUTA wages are often not uncovered until after payroll(s) has been completed.  

So what do you do if you process a payroll (or multiple payrolls) for an employee (or multiple employees) with a pay code that has incorrectly NOT been marked as FUTA and SUTA taxable?  Correcting manually can be a chore, especially if mulitple records are involved.  You would have to back out the wages using a Manual Check/Beginning Balance (Transactions>>Payroll>>Manual Checks), while the pay code FUTA and SUTA boxes are NOT marked.  Post.  And then re-enter the wages in the same manner while the pay code FUTA and SUTA boxes ARE marked.  Ugh.  Time consuming and with a high potential for error.

Thinking that there has to be a better way, I went hunting in the payroll tables and found that the FUTA and SUTA summary reports (Reports>>Payroll>>Period End) rely on the Payroll Transaction History (UPR30300) table for two specific fields:
  • SBJTFUTA - Subject to FUTA: set to 1 if subject to FUTA, 0 if not
  • SUTASTAT- SUTA State: populated with the approprate state if subject to SUTA, blank if not
So, I created two scripts to identify records where the Pay Code Setup (Setup>>Payroll>>Pay Code) is marked as subject to FUTA and/or SUTA but the payroll transaction is not.  These records can then be updated with a script to update the appropriate records with a SUTA state (SUTASTAT) or by setting the Subject to FUTA (SBJTFUTA) field to 1.  As with all database level updates, always always always make a backup before running any update statement and always always always always run against a test company and validate the results (by printing the FUTA and SUTA Summary reports, Reports>>Payroll>>Period End) before completing on your live company.

--Shows employee historical transactions that do not have a SUTA state, but the pay code setup record does have the SUTA tax flag marked
select UPR30300.EMPLOYID as EmployeeID, UPR30300.CHEKNMBR as CheckNumber, UPR30300.YEAR1 as TrxYear, UPR30300.CHEKDATE as CheckDate, UPR30300.PAYROLCD as PayCode, UPR30300.UPRTRXAM as TrxAmount, UPR30300.SUTASTAT as SUTAState, UPR30300.SBJTFUTA as SubjectToFUTA, UPR40600.PAYRCORD AS PayCodeSetup, UPR40600.SBJTFUTA AS SubjectToFUTASetup, UPR40600.SBJTSUTA AS SubjectToSUTASetup FROM UPR30300 INNER JOIN UPR40600 ON UPR30300.PAYROLCD=UPR40600.PAYRCORD WHERE UPR30300.SUTASTAT='' AND UPR40600.SBJTSUTA=1 AND UPRTRXAM>0.00

--Shows employee historical transactions that are not marked as subject to FUTA, but the pay code setup record does have the FUTA tax flag marked
select UPR30300.EMPLOYID as EmployeeID, UPR30300.CHEKNMBR as CheckNumber, UPR30300.YEAR1 as TrxYear, UPR30300.CHEKDATE as CheckDate, UPR30300.PAYROLCD as PayCode, UPR30300.UPRTRXAM as TrxAmount, UPR30300.SUTASTAT as SUTAState, UPR30300.SBJTFUTA as SubjectToFUTA, UPR40600.PAYRCORD AS PayCodeSetup, UPR40600.SBJTFUTA AS SubjectToFUTASetup, UPR40600.SBJTSUTA AS SubjectToSUTASetup FROM UPR30300 INNER JOIN UPR40600 ON UPR30300.PAYROLCD=UPR40600.PAYRCORD WHERE UPR30300.SBJTFUTA=0 AND UPR40600.SBJTFUTA=1 AND UPRTRXAM>0.00

6 comments:

cbetts said...

You described my problem perfectly!, but what are these "Scripts" you are talking about? Is this something the average user can do?

Christina Phillips said...

Not normally an "average" user, but a power user might be able to based upon how much access has given them. To run scripts, you would need access to SQL Server Management Studio, the ability to back up the database, and enough knowledge to not inadvertently delete anything. It you are unsure, you should work with your IT or GP support team/consultant/coworker :)

Carolyn Grady said...

Is this the same table where an employee's SUTA state and WC code can be changed for prior pay periods?

Christina Phillips said...

Yes, Carolyn, this is the payroll transaction history table.

Howard Joslin said...

Have you noticed that the voided check transactions do not have the SUTA State or Subject To SUTA flag?

A client just happen to have only two checks in a period which were both voided.

Surely I'm missing something here.

Christina Phillips said...

Hi Howard-

I have not seen that. I actually just tested, and the void I did does have the SUTA and FUTA information on it. Since it creates a negative entry, it just offsets the original one.

Take care,
Christina