Understand NetSuite Shipping Revenue, Costs and Margin Review

This article is relevant if you are looking to plan how NetSuite will drive shipping revenue and shipping costs to thus consider shipping margin.


One of the challenges in the NetSuite platform is gross margin analysis. The topic can be tricky depending on the processing model and the configuration of the system. I have written before about Learn how to Reliably Measure NetSuite Gross Profit and Margin to help guide thinking.

Often when I am advising clients on this topic, I try to emphasize that it is important to think of product margin and not to mix in other elements, such as shipping and tax when performing gross margin analysis. Fair enough. Yet, shipping can be a profit center and it can also eat into the overall profitability of an order. Often times, commission programs have some sort of point-of-view on how shipping influences the shared compensation arrangement.

Thus, I believe it is important to center yourself how NetSuite works to drive shipping revenue and shipping costs so you can make informed decisions in your specific situation.

NetSuite Shipping Fundamentals

NetSuite offers a number of shipping options with an included integration to third-party carriers, such as United Parcel Service (UPS) and FedEx. NetSuite can offer up a number of ways to set up how you calculate shipping which includes flat rate, by weight, by item, and by tables. Third party add-in companies have entered into the NetSuite community to help enhance the shipping logic offered by NetSuite and to more closely connect to specific carrier solutions.

I won’t go into all the options here — suffice to say that the assessment for how to determine what you will charge for shipping takes some planning and is relevant against your margin reporting objectives. However, what I will discuss are some ways that NetSuite drives shipping costs based on transaction processing and to consider how these values route to the general ledger to ultimately help you think about shipping revenue and shipping costs.

NetSuite Shipping Costs with Sales Orders and Item Fulfillments

The first thing to get centered on is that the native shipping costs on a sales order represent an estimate. Meaning, it is subject to change based on subsequent processing during an item fulfillment (shipment). Also, the sales order field label “Shipping Cost” can be misleading as this is not your cost, but it is the revenue you may intend to earn by charging to ship a product to your customer.

However you come up with the shipping costs on sales order, the amount that will get charged to the customer is realized on the invoice event. What then gets charged on the invoice (and thus realized) then depends on what happens on related item fulfillments.

During the item fulfillment (shipment) event, NetSuite tries to be helpful by supplying the sales order estimated shipping cost to the item fulfillment. At this point, you may have new information from the shipping carrier that you may want to supply in this field. If you modify the default amount provided by NetSuite, then this new amount is what will ultimately get charged to the customer on the subsequent invoice.

If you have subsequent item fulfillments (partial shipment situation), then the specific shipping costs on those item fulfillments will get transferred over to the invoice. In these scenarios, it is easier to see that the sales order ship cost is simply an estimate — it has no impact on the amount that eventually went to the invoice.

Thus, here is a summary of the basic rule:

NetSuite Shipping Cost Rule

  1. Sales order can be an estimate and may be the amount you want to actually charge but depends on your item fulfillments.
  2. On the first item fulfillment only, NetSuite will default the amount for shipping as shipping cost. This is your one chance to get that estimated sales order value to the invoice.
  3. If you modify the defaulted shipping costs on the item fulfillment, then the new amount will get transferred to the invoice. Subsequent item fulfillments from the sales order will default to zero shipping costs.
  4. If you have multiple sales orders, your invoice shipping revenue will be the sum of the underlying item fulfillment shipping costs.

Discussion about Shipping Revenue and Shipping Costs

With these rules in mind, you should now be armed with more information on how you will shape your shipping revenue as realized during invoicing. Yet, what about shipping costs as it relates to the actual liability to the shipping carrier? NetSuite does not natively book any transactional shipping costs to the general ledger. In my mind, this is unfortunate because it makes it more difficult to understand shipping margin.

In the NetSuite model, you book actual shipping costs as you receive your shipping carrier vendor bill. Under this model, you can then see in aggregate your shipping margin (shipping revenue via invoices less shipping costs via vendor bill) via the general ledger. You will likely have accounting period mismatch problems clouding your ability to see a clear picture.

Yet, I can see another way with some SuiteGL SuiteScript. It is feasible to do the following on the item fulfillment by lifting the supplied shipping costs:

Dr: Shipping Costs (cost of goods sold)

Cr: Accrued Shipping Costs (liability)

At this point, we then have information about shipping costs at the transaction line level and thus we have an opportunity to then determine shipping margin transactionally. I understand this can bring up a separate discussion about shipping revenue markups in a shipping profit center scenario — I won’t go into that here.

When the vendor bill arrives, our accounting would look like the following:

Dr: Accrued Shipping Costs (liability)

Cr: Accounts Payable

Thus, we would land shipping costs in the right accounting period to follow the Matching Principle and we would be able to assess the reasonableness of the accrual and actual bill because we would have something to compare to.

For those interested in automating NetSuite based allowance and accrual programs, consider my article Automate Allowance Programs using NetSuite SuiteGL. You may also want to see my discussion on landed costs, Offer: Superior NetSuite Landed Cost Practice with Late Vendor Bills.

NetSuite Gross Margin Considerations for Shipping

Thus, when conversing about NetSuite gross margin, it is important to distinguish the constituent components that drive the overall revenue earned and overall costs incurred on transactions. NetSuite out-of-the-box reporting for margin leaves many in wonder. As this article suggests, due to the way NetSuite accounts for shipping revenue, it may be easy to miss the related shipping costs. Thus, I recommend you carefully consider what you want Gross Margin to mean. Most of the time, I get inquiries from prospective clients that have gross margin based compensation (commissions) plans and they express they are challenged to easily measure margin to drive commission processing. Shipping (and thus handling and other related costs) complicate the assessment. Readers may want to review my article, Learn how to Reliably Measure NetSuite Gross Profit and Margin, to learn more.

Perhaps you want to get in front of your shipping revenue and shipping costs and more reliably measure margin? If so, 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, ERP, NetSuite, Reporting | Leave a comment

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>