Skip to content

Answers · E-commerce, Creators and US Sales Tax

How should an e-commerce business account for inventory and cost of goods sold?

Inventory is an asset on your books until the unit actually sells, and only at the point of sale does its cost move to the income statement as cost of goods sold. The cost that moves is the full landed cost of that unit, including the product cost, freight to get it into your warehouse, and any duty or tariffs paid, not just the supplier invoice price. The CRA requires inventory to be valued using an accepted method, generally the lower of cost and fair market value, applied consistently from year to year.

By the AnalytIQ Accounting team · Last reviewed: September 6, 2026

Why buying inventory does not create an expense

A common bookkeeping error is treating an inventory purchase as an expense the moment it is paid for. It is not. When you buy 500 units of a product, that purchase is an asset on the balance sheet, and it stays an asset, tying up cash but not reducing taxable income, until each unit is actually sold to a customer.

Only when a sale happens does the cost of that specific unit move from the balance sheet to cost of goods sold on the income statement, matched against the revenue from that sale. A business that expenses inventory as soon as it is purchased understates profit in months with heavy buying and overstates it in months when it sells through old stock, which distorts both internal decision-making and the taxable income reported to the CRA.

What actually belongs in landed cost

The cost that eventually becomes cost of goods sold is the landed cost of the unit, not just what you paid the supplier. Landed cost includes the product price, inbound freight to bring the goods to your warehouse or fulfillment centre, customs duty, and tariffs paid to bring the product into Canada or the US. Leaving freight and duty out of the unit cost understates cost of goods sold and overstates gross margin, which can make a product look more profitable than it is.

A simple approach is to track landed cost per unit or per shipment in a spreadsheet or your accounting software's inventory module, allocating freight and duty across the units in that shipment proportionally, so each unit carries a realistic share of the total cost to get it into sellable condition.

Periodic versus perpetual inventory tracking

Under a periodic system, you count inventory on hand at set intervals, often month-end or year-end, and calculate cost of goods sold as a single figure: opening inventory plus purchases minus ending inventory. This works for a smaller catalogue where a physical or estimated count is manageable.

Under a perpetual system, inventory and cost of goods sold update with every individual sale, typically through the business's e-commerce platform or inventory software feeding directly into the accounting system. Most growing e-commerce businesses move toward perpetual tracking because it gives real-time visibility into stock levels and margin by product, which periodic counting cannot provide between count dates.

MethodBest fit
Periodic (count-based)Small catalogue, low sales volume, manual counts feasible
Perpetual (system-based)Growing catalogue, multiple SKUs, real-time margin visibility needed

Choosing FIFO or average cost, and writing down slow stock

When identical units were bought at different prices over time, you need a rule for which cost attaches to a sale. FIFO (first-in, first-out) assumes the oldest units sell first, which tends to match physical reality for most e-commerce products and is the more common choice. A weighted average cost method blends all units of a product into one average cost per unit, which is simpler to maintain but less precise when costs are moving quickly, such as during a period of rising freight rates or tariffs.

Whichever method you pick, use it consistently rather than switching between products or years, since inconsistent methods make margin comparisons meaningless and can raise questions on review. Inventory that is damaged, expired, or unlikely to sell at its recorded cost should be written down to its realistic recoverable value, following the CRA's requirement to value inventory at the lower of cost and fair market value.

Inventory sitting in multiple warehouses, including FBA

A seller using Fulfillment by Amazon or a similar multi-warehouse model still owns that inventory in transit and in Amazon's fulfillment centres, and it still counts as an asset on the books even though it is physically out of the seller's hands. Amazon's own reporting shows units on hand, in transit, and returned, and reconciling that report against your accounting records periodically is the practical way to keep inventory balances accurate when stock is spread across a fulfillment network rather than sitting in one location, a process closely related to reconciling the fee and settlement side covered in how to record Amazon settlements and fees in QuickBooks.

Why this affects your taxable income directly

Because cost of goods sold reduces taxable business income, an accurate inventory and landed-cost calculation directly changes the tax you owe. Overstating ending inventory understates cost of goods sold and overstates profit, while understating it does the reverse; either error compounds year over year if the ending balance simply carries forward uncorrected. This is one of the areas the CRA looks at closely on an e-commerce file, since inventory valuation is judgment-based rather than a simple bank reconciliation.

A related trap is treating a supplier's volume discount or a currency gain on a USD purchase as unrelated to inventory cost. Both actually adjust the landed cost of the units they relate to, in the same way described in how to record USD transactions in Canadian books, and leaving them out understates the true cost of the goods on hand just as omitting freight or duty does.

Why the chart of accounts needs to separate these categories

Landed cost, inventory, and cost of goods sold only stay accurate if the chart of accounts gives each one its own line rather than folding freight, duty, and product cost into a single generic supplier expense account. A chart of accounts built for a product-based business generally separates inventory as a balance sheet asset, cost of goods sold as its own income statement category, and shipping paid to customers as distinct from freight paid to bring product in, so margin reporting reflects reality rather than a blended estimate.

How we set this up for e-commerce clients

We build a landed-cost workflow into the bookkeeping from the start, so freight and duty get allocated to units rather than expensed as a lump sum, and we reconcile multi-warehouse inventory, including FBA, against the platform's own reports each period. Our e-commerce accounting page covers the full bookkeeping build we use for product-based online sellers.

Related questions.

Do I have to count physical inventory every year for the CRA?

The CRA expects a reasonable, consistently applied method of valuing inventory at year-end; a physical count or a reliable perpetual system that tracks units sold and on hand can both satisfy this, as long as the method does not change year to year without reason.

Should shipping I charge customers reduce my cost of goods sold?

No. Shipping charged to customers is revenue, and shipping cost you pay to send the product out is generally an operating expense, separate from the landed cost of getting the product into your warehouse in the first place.

What happens if I never separated freight and duty from product cost?

Cost of goods sold and gross margin will be understated in accuracy even if the total expense figure is technically captured somewhere else; the fix is rebuilding landed cost per shipment going forward rather than trying to unwind prior periods.

Related reading

Still have questions?

Not sure your margins are calculated correctly.

A short discovery call gets you a specific answer and a fixed quote — no hourly meter.

Client Reviews

Get a free quote

Request a free quote.

Tell us a little about your business and our team will respond within one business day.

Contact details

How can we help?

Type of enquiry select all that apply

Project information