effect of broken COGS | includes a healthy COGS scorecard

COGS: And Its Real Effect on Your Margins

Quick Links

If you run a growing eCommerce business long enough, there may be a point where Cost of Goods Sold (COGS) turns from a metric into a mystery. The numbers just stop making sense.

Most teams instinctively look to accounting when this happens. That makes sense. COGS lives on the income statement. Accountants close the books. But after years of watching this pattern repeat, we have learned if your COGS looks wrong, accounting is almost never the place where it broke. Let me explain.

COGS & Your Gross Margin

We usually hear about it after a tense meeting, when someone finally says out loud that gross margin doesn’t really line up with reality. The business seems healthy from the outside, but the income statement tells a stranger story.

At this stage, most teams assume the problem lives in the numbers. Maybe accounting is being too conservative. Maybe costs are hitting the wrong period. When gross margin stops making sense, it’s often because the system reporting that margin has been muddled for some time.

Let’s break down COGS and the effect on gross margin:

What is COGS?

COGS, or Cost of Goods Sold, is the direct cost of producing or purchasing the products a company sells during a given period. Think materials, direct labor, and manufacturing or procurement costs that scale with volume. If it doesn’t change when you sell more or less, it’s probably not COGS.

Cost of Goods Sold, or COGS is the direct cost of producing or purchasing the products a company sells during a given period. It is an expense reported on your income statement.

This number sits between revenue and gross profit on your income statement, which makes it one of the most important levers in your business. Get it wrong and everything downstream—gross margin, pricing strategy, inventory valuation, and even cash flow—becomes unreliable.

COGS on the income statement

What is included in COGS:

For product-based businesses, COGS typically includes: 

  • raw materials
  • components
  • direct production labor
  • certain factory overhead
  • freight in

For distributors, it’s usually the purchase price of inventory plus inbound shipping and handling. 

What is not included in COGS:

These live in operating expenses, not COGS:

  • sales and marketing
  • admin salaries
  • office rent
  • ERP subscription

And these would be added to find your landed cost:

  • freight & duties
  • tax
  • insurance & risk

Many growing companies misclassify COGS, either by oversimplifying it or by dumping too much overhead into it to make margins look better. That might work for a board deck, but you’re essentially lying to yourself. Accurate COGS gives you a true gross margin, which tells you whether you actually have a scalable business model, or just a busy one.

With good NetSuite accounting for ecomm, properly defining and automating COGS connects operations, inventory, and finance into something real. Because you really want to trust your financial statements.

How COGS break with these 4 inventory mistakes

Accounting inherits the outcome of dozens of upstream decisions about how inventory is received, how items are set up, how orders flow through systems, and how exceptions get handled.

By the time your accounting team sees the numbers, those numbers are locked in. NetSuite is not guessing. It’s doing exactly what it was told to do. If inventory was entered at the wrong cost, if fulfillment relieved inventory inconsistently, or if integrations skipped key steps, accounting can only report the result. No journal entry can undo a workflow that keeps producing distorted data month after month.

Related Read: NetSuite Reporting Issues 6 Warning Signs to Look For

1). Incorrect Inventory Costs

One of the most damaging mistakes we see is inventory entering NetSuite at selling price instead of acquisition cost. This can happen during:

  • item creation
  • a Shopify or 3PL integration
  • entering an old SKU without fully resetting the cost logic

In the moment, margins may even look fantastic. Yay, right?

The problem emerges once inventory starts moving. 

Every fulfillment now shows inflated value, pushing COGS higher with each order shipped. Gross margin erodes without any operational explanation that matches reality. Teams chase freight, labor, and discounts, while the true cost sits buried in the item record and inventory layers.

This is what makes the issue so dangerous. The error does not correct itself. It compounds. And fixing it later is not a small undertaking.

2). Failing Shopify Integrations

Most Shopify integrations appear to be stable at the surface-level, but it’s easy to run into problems once gaps begin to form. Some of the issues we see with clients using Shopify Integrations:

  • Inventory relief may be missing or delayed
  • Cost mappings may be incomplete
  • Duplicate items
  • Refunds bypass COGS logic entirely
  • 3PLs send partial data that NetSuite accepts without resistance

Over time, “mostly working” becomes the most dangerous state an integration can be in. Weeks turn into months before anyone realizes gross margin has been drifting the entire time.

If the integration only delivers part of the story, the financials will reflect that incomplete version with total confidence. Yet another reason it’s so important to run a proper NetSuite implementation.

3). Inventory Adjustments: The Myth of Clean-Up Entries

When margins look wrong, the instinct is to fix them directly. But inventory adjustments are not neutral. They hit COGS immediately and often obscure the operational issue that caused the discrepancy in the first place.

Repeatedly with new clients, we see inventory adjustments wreaking havoc with their margins.

Cleanup entries do not solve COGS problems. They mute the symptoms without addressing the cause. 

This is where tightening up your user permissions can have a big impact. Only team members that truly understand the adjustment they’re making and its effect on your financial reporting should have access to make adjustments. Introduce inventory accounting SOPs before your COGS begins lying to you about your margins.

4). Poor or Overlooked Training

Once your business grows, it demands speed. Inventory gets received quickly, orders get pushed through manually when systems lag and here’s where it gets dangerous: counts get adjusted to keep operations moving. None of this is malicious. It is practical decision-making under pressure.

The risk is that inventory transactions carry enormous financial weight. One incorrect receipt affects every order that follows. One skipped step compounds across hundreds or thousands of fulfillments. When untrained hands handle high-impact transactions, NetSuite faithfully records the outcome and locks it into history.

Later, accounting is asked to explain the numbers, even though the numbers were shaped by operational shortcuts taken long before the close ever began.

What Healthy COGS Actually Looks Like in NetSuite

Healthy COGS is not pristine or perfectly smooth. 

  1. Inventory enters the system at acquisition cost. 
  2. Fulfillment relieves it consistently. 
  3. Integrations agree with each other. 
  4. Adjustments are rare and investigated, not normalized.

Gross margin then shifts for reasons you expect like promotions, freight changes or supplier shifts.

This is the result of workflows designed for scale instead of patched together in reaction to growth.

Healthy vs. Broken COGS comparison

Fix the Workflow

You won’t find the fix on your income statement. We begin with workflows, accurate costing and structure to help teams untangle COGS issues:

  1. Diagnosis
  2. Mapping workflows comes before adjustments
  3. Structure over speed

Make it best practice to avoid entries as a tool for correction. Instead, make it standard operating procedure to dig into what’s breaking your system.

Use our COGS Scorecard to find out how healthy your margin reporting really is:

A COGS Checklist & Scorecard

Use our COGS checklist and scorecard to find out how healthy your COGS really is.

How to use this:

  • Yellow = Inconsistent, person-dependent, or “mostly works”
  • Red = Reactive, manual, or fixed after the fact

If you’re debating a color, it’s probably Yellow leaning Red.

AreaGreenYellowRed
Item cost setupItems are created with accurate acquisition costsCosts sometimes corrected laterPlaceholder or selling prices used
Cost ownershipOne clear source of truthMultiple systems touch costNo clear owner
Costing methodFully understood across teamsKnown by finance onlyMisunderstood or ignored
SKU creationDocumented, repeatable processInformal processTribal knowledge
Cost overridesRare and controlledOccasional overridesFrequent overrides

Overall Status: ___ Green ___Yellow ___Red


AreaGreenYellowRed
Receiving processStandardized and enforcedMostly followedAd hoc or bulk adjustments
Partial receiptsIntentional and trackedSometimes skippedIgnored
Timing alignmentReceipt, bill, inventory alignMinor timing issuesRegular timing confusion
Error handlingErrors investigatedErrors quietly fixedErrors normalized
Inventory trustQuantities and values trustedFrequent spot checksRegular adjustments needed

Overall Status: ___ Green ___Yellow ___Red


AreaGreenYellowRed
Inventory reliefAlways triggered correctlyOccasional exceptionsInconsistent or missing
COGS flowCost flows with ordersPartial cost visibilityRevenue only
Refund handlingFully reverses COGSManual review neededBreaks inventory
SKU consistencySingle SKU structureOccasional duplicatesFrequent duplicates
3PL reconciliationRegular and documentedInfrequentAssumed accurate
Integration healthActively monitoredSet-and-forget“Mostly works”

Overall Status: ___ Green ___Yellow ___Red


AreaGreenYellowRed
Shipment postingAlways posts COGSOccasional missesManual fixes
Split shipmentsBehave predictablyInconsistent behaviorBreak COGS logic
Timing logicMatches revenue recognitionSome driftNo alignment
COGS accuracyConsistent period to periodVolatileUnreliable
Exception visibilityClearly surfacedHard to findBuried

Overall Status: ___ Green ___Yellow ___Red


AreaGreenYellowRed
Adjustment frequencyRarePeriodicMonthly routine
DocumentationOperational explanationAccounting-onlyNone
Shrinkage trackingTrended over timeReviewed ad hocIgnored
Root cause analysisInvestigated upstreamPartialNever
Cleanup entriesNot relied uponOccasionalExpected

Overall Status: ___ Green ___Yellow ___Red


AreaGreenYellowRed
Access controlRole-based and enforcedLoosely controlledWide open
TrainingFormal and ongoingInformalNone
Process disciplineStructure beats speedDepends on urgencySpeed wins
OverridesRare and reviewedSometimes neededCommon
Financial awarenessStaff understand impactPartial awarenessNo awareness

Overall Status: ___ Green ___Yellow ___Red


AreaGreenYellowRed
Margin movementClearly explainableBroad explanationsShrugs
Finance vs opsAlignedTenseDistrustful
Margin discussionsDecision-focusedDefensiveCombative
Income statementMirrors operationsPartiallyFictional
Leadership trustHighConditionalLow

Overall Status: ___ Green ___Yellow ___Red

Interpreting the Results

  • Mostly Green: Healthy COGS (is expansion next?)
  • Lots of Yellow: Running the risk of false margins and skewed reporting
  • Any Red in multiple sections: COGS leakage is structural

Realized you’re in the red when it comes to COGS? Get in touch to learn more about our outsourced controller and NetSuite accounting services

Subscribe
to our blog.

Get business, NetSuite, manufacturing and accounting tips delivered regularly to your inbox.