How To: Input Payroll into NetSuite while Optimizing Margin Reporting

This article is relevant if you are looking to for a practice to input payroll entries into the NetSuite system and you are considering gross margin analysis using items.


It’s pretty much a given that when we take on a new NetSuite implementation, our clients are already using a third party payroll provider. For the most part, our clients simply want to get the payroll information entered into the general ledger in a fast and simple way. Unless the payroll provider has an existing NetSuite integration, the common thinking is to use a CSV import file to constitute a journal entry.

Recently, I needed to change out our firm’s payroll provider and I too was sitting in the same concern as I find our clients. I decided I wanted to solve this in a more optimized way given I had some operational margin reporting objectives to meet. As such, this article is to meet two objectives:

  1. A Payroll Input Practice
  2. Item based Margin Reporting

Key Reporting Goals Driving Payroll Input Practice

In our practice, we have a mixture of employees and independent contractors. Most of our business is billed on a time and materials basis. Accordingly, there is a strong correlation between the time entered by our consultants and our revenue. Likewise, our cost of services for employees is effectively salaries and payroll taxes. Just like any business, I seek to line up our revenue with associated direct costs to understand margin.

To help produce proper margin reporting, I designed our NetSuite service item structure as resale items so they can be used in both a revenue and cost context. For outside contractors, this works well as the same NetSuite service item to generate invoice revenue is used to purchase their service. It’s easy to run a NetSuite Saved Search that looks as the related item’s revenue and costs and then determines margin. To help you see the technique I used, see the associated Saved Search screenshot which produces a margin analysis by item.  This saved search should work for any company using NetSuite and they have captured item revenue and costs (think drop shipment).

However, when it comes to our salaried employees, we don’t purchase their services the same way. Thus the service item, for salaried employees, can’t be used as a key to query the general ledger to gather revenue and costs like I can for our contractor purchased services. Now that I had a new payroll provider, it was time to optimize the way we conduct our NetSuite payroll operations and solve our salaried based service item margin reporting challenge.

Practice to Organize Payroll for Input Processing

Because we are satisfied with the detailed payroll tax obligation reporting offered by our outside payroll service provider, we have an opportunity to summarize information that serves our internal margin reporting and cash management requirements. In this case, since our payroll provider automatically removes monies from our banking account to fund payroll operations, we leverage NetSuite’s built-in Check (bank draft) record to give us structure and to help us in our month-end bank reconciliation prctice.

The following payroll elements are relevant:

  1. Employee Salary: part of cost of services
  2. Employer Related Payroll Tax: part of cost of services
  3. Employee Related Payroll Tax: employee tax obligations we, as an employer, hold on their behalf

If we look at the fundamental accounting, we see the following general pattern given our payroll provider uses electronic funds transfer to pay our employees:

Dr  Salaries (income statement)
Dr  Employer Related Payroll Expenses (income statement)
	Cr  Employee Related Payroll Tax Obligation (balance sheet)
	Cr  Employer Related Payroll Tax Obligation (balance sheet)
	Cr  Cash (balance sheet)

Each employee effectively paid through a check (the credit to cash) and we need to enter it as a transaction to help us easily reconcile our bank statement. At the same time, our Payroll Provider removes funds from our bank account, in summary, to pay our respective tax agencies. Here is the general accounting pattern:

Dr  Employee Related Payroll Tax Obligation (balance sheet)
Dr  Employer Related Payroll Tax Obligation (balance sheet)
	Cr Cash (balance sheet)

Thus we see two transactions are needed to book Payroll using Check entries:

  1. Booking Employee Payroll (in our case, in an enhanced manner to solve margin reporting)
  2. Booking the Payroll Tax Obligation Funding

I am not a fan of using Journal Entries because they usually don’t have enough extra information for tracking. I like structured transactions, such as the Check, especially because I must take care of them during our monthly bank reconciliation. I created NetSuite memorized transactions because our salaries are consistent each month. Each employee gets their own memorized transaction — yet, the entire practice could be done with CSV imports.

Booking Employee Payroll in an Enhanced Manner for Margin Reporting

We are going to book payroll in a conventional manner using a NetSuite Check as noted in the related image. But we are going to also to book an item-based entry that effectively drives burdened salary cost into the item structure helping us with our margin reporting challenge while avoiding financial impact. The key to this innovation is to debit the service costs based on the item (so it will line up as a matched component of related revenue; like we do for independent contractor revenue) and then use a Payroll Offset item that will effectively credit out (or wash) the burden salary. The net effect is the income statement looks conventional, but for margin reporting, I can use the item structure to assess economic performance.

Booking the Payroll Tax Obligation Funding

Finally, a memorized check is used to pay the tax agency obligations as managed by our payroll tax provider. Here, we offset the liabilities we created in the first step to record the salaries and related payroll expenses.  Pretty simple.

Payroll Input Practice In Summary

My hope is that you can see that thinking about all the concerns you want to address can be solved creatively in the NetSuite platform. There may be many ways to address recording payroll in the general ledger; yet considering your larger context of concerns opens up the space for getting creative and producing innovation. Here, I solved our Payroll inputs, our item-based margin reporting and streamlined out month-end bank reporting practice. I am pleased.

Optimize NetSuite Accounting Practices

If you are a frequent reader of the blog, you know that I could have created a way to use SuiteScript to input these payroll entries. As a side note, I may write an article on NetSuite’s scriptable Payroll Paycheck Journal (id: ‘paycheckjournal’) to help readers understand the concerns to address when working with that record structure. However, just because I can script doesn’t mean I should. In my mind, the key is to leverage creative use of built-in capacities first before going to SuiteScript or Workflows to drive a desired accounting operation. If you have a challenging NetSuite accounting concern, let’s have a conversation.

Be Sociable, Share!

Marty Zigman

Holding all three official certifications, Marty is Southern California's NetSuite expert and leads a team of senior professionals at Prolecto Resources, Inc. He is a former Deloitte & Touche CPA and has held CTO roles. For over 25 years, Marty has produced leadership in ERP, CRM and eCommerce business systems. Contact Marty to set up a conversation.

More Posts - Website - Twitter - Facebook - LinkedIn - Google Plus - YouTube

| Tags: , , , | Category: Accounting, NetSuite, Reporting | 3 Comments


  1. Jason Sjobeck
    Posted April 29, 2016 at 11:53 am | Permalink

    Brilliant. As usual. I have needed that solution for years.

  2. Posted March 29, 2017 at 11:44 am | Permalink

    This is great Marty, very unique and focused on the business decision making ability. Question: Since you’re booking each payroll check individually with the employee as the vendor, does that create a discrepancy when you do your bank rec? On your statement you’ll have one withdrawal from ADP, but in your register you’ll have numerous checks – total should match, but you know how that goes… Maybe pushing the checks to employees to a clearing account (instead of the bank account) and the withdrawal from ADP to a clearing account (instead of salaries) would keep it cleaner? Curious what you think. Thanks.

  3. Posted April 1, 2017 at 7:03 pm | Permalink

    Hi Eric,

    I find that the bank rec is working out fine. Each employee paycheck is coming over correctly as a disbursement in my model. Note, I am generally in favor of clearing account if they help in the practice.


Post a Comment

Your email is never published nor shared. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>