Your gross margin is wrong if these four things aren't being accounted for

Gross Profit is always calculated the same way. Revenue less Cost of Goods Sold equals Gross Profit. Gross Profit divided by Revenue gives you the Gross Margin Percentage.
Simple enough, until you look at what's included in "cost of goods sold." For a lot of companies, that number only includes the purchase price of the product itself. Other significant costs, such as Freight In, Duties, Labor, and Warehouse Overhead, are often coded to an overhead expense and not costed to the product itself.
This creates a problem, because the cost of goods sold is supposed to answer one question: how much does it actually cost to get this product ready to sell? If the answer is missing key costs, you can’t accurately manage a key driver of profitability: pricing.
Common accounting software such as QuickBooks or Xero is not designed to fully manage these landed costs, so you may need a dedicated landed cost management system such as Cin7 Core, Odoo, Acumatica, or Epicor.
Here are four costs that commonly get left out, and why each one matters.
Incoming freight
The cost of shipping a product from your supplier to your warehouse is a cost of getting that product ready to sell. It should be costed as part of the product’s landed cost.
When freight is booked separately, your gross margin on the income statement may still be correct if freight is included in the cost of goods sold section. However, your individual profit-by-product report may not match your income statement.
The gross margin per product can look better than it actually is, especially for products shipped from overseas or from suppliers with high shipping costs relative to the unit price. Two products with the same purchase price can have very different true costs once freight is factored in. If freight isn’t allocated to the SKU, that difference is not clear.
Duty
The same goes for customs duty. Import duties and tariffs are often coded to a general “taxes and fees” account rather than tied to the specific products that triggered them. However, these costs also need to be included in the landed cost along with freight.
Duty is often easier to allocate than freight because it is usually calculated as a percentage tied directly to the product or material being imported. Some systems, such as Epicor Kinetic, have a specific field for this percentage that can automatically apply the duty during the receiving process.
Warehouse expenses
Rent, utilities, and the staff time spent receiving, storing, and picking inventory are real costs of getting a product ready to sell, but they are often coded to an overhead expense rather than allocated to cost of goods sold on a per-unit basis. This means you may not be taking into account the ongoing costs of storing a product, even after the product is built.
A bulky, slow-moving item can tie up warehouse space and staff time in a way a small, fast-moving item never will. If none of those costs are allocated back to the product, the margin by product may not reflect its true profitability.
Labor
Direct labor spent assembling, finishing, or packing a product is part of its cost, not overhead. Simply recording this in Cost of Goods Sold on your income statement is not enough. Labor needs to be recorded against each work order or job and costed into the build. Labor rates should also be regularly revisited as hourly wages, efficiency, and downtime benchmarks change.
There also needs to be an allocation to breaks, PTO, Holidays and equipment maintenance. For example if you have an 8 hour shift, when allowing for production, you often have to allow an hour for breaks per day and 20 minutes of meetings and cleanup. So your actual output is 400 minutes out of 480 or 83.3%
Once all of these labor costs are accounted for, you can compare your standard cost to your last build cost or average cost and more accurately track how your manufacturing costs change over time.
How do you get an accurate gross margin?
Nobody is ignoring any of these costs on purpose. They're usually just booked where it's easiest. The result is a gross margin number that looks good but is incomplete, and a business can be making pricing and sourcing decisions based on numbers that don't reflect what things actually cost.
This is part of why job costing and full landed cost accounting matter more as a business grows. QuickBooks and Xero can track these costs, but allocating them accurately across products and jobs usually takes more structure than either was built to handle on its own. Systems like Cin7 Core, Odoo, Acumatica, and Epicor are built with landed cost and job costing modules specifically so freight, duty, warehouse costs and labor get tied back to the right product automatically.
Getting an accurate gross margin isn't about recalculating once. It's about setting up the ERP so the numbers stay accurate every time.
Frequently asked questions
Does gross margin include freight?
It should. Incoming freight is a cost of getting a product ready to sell, so it belongs in cost of goods sold, not in a separate operating expense line.
What is landed cost accounting?
Landed cost accounting is the practice of tracking the full cost of getting a product into inventory and ready to sell, including the purchase price, freight, duty, and handling, rather than just the purchase price alone.
Why does my gross margin look different from what my accountant calculates?
This usually happens when costs like freight, duty, warehouse expenses, labor, or downtime are booked to general operating expense accounts instead of being allocated to the product. Both numbers can be correct under different definitions, but only one reflects the true cost of the product.
Does downtime really affect gross margin?
Yes. Idle equipment and idle labor time still cost money, and that cost has to be absorbed somewhere. If it isn't allocated to the product, it comes out of the margin without ever being visible as the cause.
Can QuickBooks or Xero handle landed cost and job costing?
No. Both can track these costs, but allocating them accurately across products and jobs at scale usually takes more structure than either platform was built to handle on its own. This is one of the reasons growing businesses look at ERPs with built-in landed cost and job costing modules.