Margins and True Cost

COGS Timing for E-Commerce Sellers

COGS belongs in the period the inventory sells, not the period it was purchased. Getting the timing wrong distorts every monthly margin figure.

Read time
~ 7 min
Platforms
Multi-platform
Scope
Canadian Sellers

A seller who buys CAD $40,000 of inventory in October and sells about a third of it before year-end has not incurred CAD $40,000 of cost of goods sold for the year. The cost belongs to the units actually sold. The rest sits on the balance sheet as inventory until it sells in a later period. Sellers who record the full purchase as an expense the month it was paid for, rather than the month the related units sold, end up with monthly margin figures that swing with purchasing activity instead of reflecting actual sales performance.

The Matching Principle in Plain Terms

Cost of goods sold is supposed to match the cost of the inventory to the period the corresponding revenue was earned. If a unit sells in November, the cost of that unit is a November expense, regardless of when it was purchased or paid for. A large inventory purchase does not become an expense the moment cash leaves the bank account; it becomes an asset (inventory) until the unit tied to that cost is sold, at which point the cost moves from inventory into COGS.

This is different from most other business expenses, where the cash-basis instinct of “expense it when paid” causes less distortion. Rent, software subscriptions, and advertising spend are consumed close to when they are paid. Inventory is not. A seller can hold three to six months of stock or more, and the gap between purchase timing and sale timing is exactly where COGS timing errors accumulate.

What Cash-Basis COGS Tracking Gets Wrong

A seller recording inventory purchases as an expense when paid, rather than tracking inventory as an asset until sold, will see a distorted margin in any month with unusually large or small purchasing activity. A big restock month looks artificially unprofitable. A month with no purchases, where the seller is simply selling down existing stock, looks artificially profitable. Neither reflects what actually happened to margin on the units sold that month.

Example: A seller pays CAD $18,000 for a container of inventory landing in March, expecting it to last through August. Recording the full $18,000 as a March expense makes March look like a loss month even if unit sales and revenue were normal, and makes April through August look unusually profitable since no purchase cost is recorded against those months’ sales at all. The seller’s actual per-unit margin did not change month to month; only the purchase timing did.

This distortion compounds when a seller is trying to evaluate a specific product’s profitability or decide whether to reorder. A product’s true margin is revenue minus the cost of the units actually sold, not revenue minus whatever inventory happened to be purchased in the same calendar month.

Building COGS on a Per-Unit Basis

The correction is to calculate a landed cost per unit, as covered in Landed Cost for Canadian E-Commerce Sellers, and recognize that per-unit cost as COGS only when the unit sells. Inventory purchased but not yet sold stays on the balance sheet as an asset. The mechanics vary by how the seller’s books are set up:

  • Inventory-tracked accounting. A perpetual inventory system, whether within accounting software or a connected inventory management tool, tracks quantity on hand and per-unit landed cost, and automatically records COGS at the per-unit cost when a sale is recorded. This is the cleanest approach for sellers with meaningful inventory value and multiple SKUs.
  • Periodic inventory adjustment. A simpler approach for lower-volume sellers: inventory purchases are recorded to an inventory asset account through the year, and at each period end (monthly or at minimum quarterly), a physical or estimated count values the ending inventory, with the difference between beginning inventory, purchases, and ending inventory calculated as the period’s COGS. This is less precise per-SKU but corrects the same purchase-versus-sale timing distortion at the period level.

Either method requires knowing, or reasonably estimating, the landed cost per unit and the quantity sold in the period. A seller with clean landed cost figures per SKU and reliable sales-by-unit data from their platform reporting can support either method with reasonable effort.

Period-End Cutoff

Even with inventory tracked properly through the year, the period-end cutoff, especially the fiscal year-end, needs specific attention. Three situations commonly get missed:

Inventory in transit. Goods that have left the supplier but have not yet arrived, whether by sea freight, air freight, or a domestic carrier, are generally still the seller’s inventory if ownership has transferred under the purchase terms, even though the units are not physically on hand or listed as sellable yet. Excluding in-transit inventory from the period-end count understates inventory and overstates COGS for the period.

FBA and 3PL inventory. Units held at an Amazon fulfillment centre, a third-party logistics warehouse, or in transit to one, belong to the seller’s inventory count even though the seller does not have physical custody. A period-end count based only on inventory physically on the seller’s own premises misses this entirely for FBA-heavy sellers, understating inventory and overstating COGS.

Units sold but not yet shipped, or shipped but not yet delivered. Revenue recognition and COGS recognition should move together. If revenue is recognized at the point of sale but the corresponding inventory reduction is not recorded until physical shipment days later, a period-end cutoff can show revenue in one period and the matching COGS in the next, distorting both periods’ margin.

A period-end cutoff review confirms that inventory location, ownership status, and revenue recognition are all pointing to the same period for any unit near the cutoff date, rather than assuming a physical count captures everything that matters.

Reconciling COGS to Actual Purchases Over Time

Over a long enough period, without shrinkage or write-downs, total COGS recognized should reconcile to total inventory purchased, adjusted for the change in inventory on hand between the start and end of the period. This reconciliation is a useful check: if a seller’s income statement is showing a COGS figure that seems disconnected from what was actually purchased and the change in inventory value, either the per-unit costing has an error, the period-end inventory count is inaccurate, or purchases are being recorded inconsistently between the inventory asset account and a direct expense account.

Simplified reconciliation:

Amount (example)
Beginning inventory (at cost)$52,000
+ Purchases during period (landed cost)$38,000
− Ending inventory (at cost)($46,000)
= COGS for the period$44,000

A seller whose books do not produce a figure resembling this reconciliation, even approximately, has a timing or costing problem somewhere in the chain between purchase recording, inventory valuation, and sale recognition.

Common Mistakes

Expensing inventory purchases in full at the time of purchase. This is the core cash-basis error described above, and it is the single most common distortion in e-commerce bookkeeping for sellers who have not set up inventory tracking.

Excluding in-transit or FBA-held inventory from period-end counts. Both remain the seller’s inventory and their omission overstates COGS and understates the balance sheet’s inventory asset for the period.

Using a blended average cost that ignores landing cost changes over time. A seller reordering the same SKU at a different landed cost due to freight rate changes, a supplier price increase, or exchange rate movement needs a costing method, whether FIFO or weighted average as covered in Inventory Costing Methods: FIFO vs Weighted Average, applied consistently rather than defaulting to whatever the most recent purchase cost happened to be.

Recognizing revenue and COGS in different periods for the same sale. This most often shows up around a shipping or fulfillment lag near a period-end cutoff and understates or overstates margin in both affected periods.

Scope of This Guide

This guide covers when cost of goods sold should be recognized relative to inventory purchase and sale timing, and the period-end cutoff issues that most commonly distort e-commerce margin reporting. It does not cover:

  • how to calculate landed cost per unit
  • choosing between FIFO and weighted average costing methods
  • inventory write-downs for obsolete or damaged stock
  • the accounting system configuration needed to automate perpetual inventory tracking

The goal is for a seller to recognize when a monthly or quarterly margin figure is being distorted by purchase timing rather than reflecting actual sales performance, and to know which correction, inventory-tracked accounting or a periodic adjustment, fits their current bookkeeping setup.

Alex Teplov, CPA / Last updated: July 13, 2026

This guide is for general informational purposes only and does not constitute professional accounting, tax, or legal advice. It does not create an accountant-client relationship. Marketplace rules, CRA administrative positions, and cross-border compliance rules change, and the correct treatment depends on the records behind your specific file.

EcomCount
About EcomCount
Marketplace accounting operated by Teplov CPA

EcomCount helps Canadian marketplace sellers with bookkeeping, tax compliance, payout reconciliation, margin reporting, and cross-border accounting questions. The file is handled within Teplov CPA, with the operating model adapted to e-commerce reporting complexity.

About the practice
Browse the library

All resources

Guides on marketplace accounting, GST/HST, reconciliation, inventory, and cross-border seller issues.

View all guides
Get file-specific help

Work with EcomCount

General guidance is useful. The real answer still depends on the reporting setup, source documents, and platform mix in your file.

Talk to EcomCount
Next step

Want the treatment checked against actual marketplace records?

Send the channels you sell on, your accounting software, and the reporting issue you are trying to resolve.

Contact EcomCount