featured article

How to Track Inventory and COGS in Xero as a Multichannel Seller

Colleen Quattlebaum

August 3, 2026

The two paths, stated up front

A multichannel seller has exactly two workable ways to get inventory and cost of goods sold into Xero. Either you run a periodic method, where you value stock at period end and let the movement in the inventory account become your cost of goods sold, or you run a perpetual method, where an inventory system computes cost per unit sold and posts the entries into Xero as they happen. Xero's own tracked items sit somewhere in between and stop being adequate around the point a seller adds a second channel. Below is what each path costs you and how to tell which one you are actually on.

What Xero does natively

Xero splits products into tracked and untracked items.

An untracked item is a saved description with a price. Buying it expenses the purchase immediately. Selling it records revenue. Nothing hits the balance sheet. This is correct for services and for consumables, and wrong for anything you hold.

A tracked item has three accounts attached: an inventory asset account, a cost of goods sold account, and a sales account. When you approve a bill for a tracked item, Xero increases quantity on hand and increases the inventory asset. When you approve an invoice containing that item, Xero posts a debit to cost of goods sold and a credit to inventory asset, using the item's current average cost.

Xero computes that average cost as opening value plus purchases value minus cost of goods sold value, divided by quantity on hand. Every purchase at a new price blends into the running average. Xero's US inventory page puts a practical ceiling on the whole model: you can manage up to 4,000 items.

Where the native model breaks for multichannel sellers

Five specific failures, in the order sellers hit them.

Orders never touch a Xero invoice. Amazon, Shopify, Walmart, eBay, and TikTok Shop orders arrive as settlement or payout data. If no Xero invoice exists with the tracked item on it, Xero posts no cost of goods sold entry. Quantity on hand drifts away from reality immediately.

Average cost blends what you want separated. Two containers of the same SKU landing at 6.10 and 8.45 become one 7.44 number. Your margin report then describes an item that does not exist.

There is no warehouse dimension. Xero holds one quantity per item. A seller with stock at an Amazon fulfillment center, a WFS facility, a 3PL, and their own unit gets a single blended number and no way to answer where the stock is.

Bundles, kits, and multipacks have no representation. A three pack is not a separate item you buy. It is three units of a component, assembled. Xero has no assembly concept, so sellers create the three pack as its own tracked item and then hand adjust component quantities, which nobody does consistently for long.

Landed cost cannot be allocated. Freight, duty, inspection, and drayage arrive on separate bills, often weeks apart, and have to be distributed across the units in a shipment by value, weight, or volume. There is no native mechanism for that, so most Xero files expense freight to an overhead account and quietly understate inventory value.

Path A: the periodic method

You expense nothing to cost of goods sold during the period. Purchases go to the inventory asset account. At period end you value the stock and book one adjustment.

Here is a quarter for a seller doing roughly 1.4 million in quarterly sales.

  • Opening inventory, 1 January: 412,600
  • Purchases posted to inventory during the quarter: 388,400
  • Freight and duty capitalized into inventory: 41,200
  • Closing inventory valued at 31 March: 402,900
  • Implied cost of goods sold: 439,300

The arithmetic is 412,600 plus 388,400 plus 41,200 minus 402,900. It balances, it is defensible, and it is a black box.

Now the same quarter measured perpetually, with each component separated:

  • True cost of goods sold on units actually shipped: 431,800
  • Shrinkage and unreconciled loss: 4,900
  • Damage write offs and disposals: 2,600
  • Total: 439,300

Identical bottom line. Completely different management information. The periodic method told you cost of goods sold was 439,300. The perpetual method told you that 7,500 of that, or 1.7 percent of cost, never became a sale. One of those numbers starts a conversation with your 3PL. The other does not exist.

The periodic method also gives you nothing monthly. You cannot close January with any confidence, because you did not count in January.

Path B: the perpetual method

An inventory system holds units, costs, and locations. It computes cost of goods sold per order using FIFO, allocates landed cost across inbound shipments, tracks transfers as in transit until received, and handles bundles by consuming component quantities. It then posts summarized entries into Xero.

What Xero receives:

  • A debit to cost of goods sold and a credit to inventory asset, at the frequency you choose
  • Separate entries for shrinkage, damage, and adjustments so they never hide inside cost of goods sold
  • An inventory asset balance that ties to a stock valuation report you can hand an auditor

Xero stays what it is good at: the ledger. The costing happens where the unit level data lives. That division is what the inventory layer in ConnectBooks is built around, feeding Xero through the channel integrations rather than asking Xero to hold a model it was not designed for.

The accounts to set up either way

  • 610 Inventory as a current asset, one account, no channel breakdown
  • 620 Inventory in Transit for goods you own and have not received
  • 300 Cost of Goods Sold
  • 305 Inventory Shrinkage and Adjustments, kept out of 300 deliberately
  • 307 Damage and Obsolescence Write Offs

Keeping 305 and 307 separate from 300 is the single highest value decision in this list. Gross margin should reflect what it costs to make and deliver a sale. Loss is a different problem with different owners and different fixes, and burying it inside cost of goods sold guarantees nobody investigates it.

In transit stock

Title usually passes at the shipping terms, which means you often own inventory sitting on a vessel. That stock belongs on your balance sheet in account 620, not in your sellable quantity on hand. When the container is received, the value moves from 620 to 610.

Sellers who skip this understate assets for six weeks at a time and then take a lumpy inventory increase on receipt that makes month over month comparisons useless. Transfers held as in transit until received is a native behavior in the ConnectBooks inventory layer for exactly this reason.

Reconciling the two sides

Do this monthly, not quarterly.

  1. Run the stock valuation report from your inventory system as of the last day of the month.
  2. Compare the total to the Inventory account balance in Xero.
  3. Confirm in transit value in the inventory system ties to account 620.
  4. If the two differ, look for landed cost bills posted after the period close, adjustments made in one system and not the other, and receipts recorded on the wrong date.
  5. Book the difference only after you know what it is. A plug entry to inventory is how a file becomes untrustworthy.

The signal that you are on the wrong path

If your gross margin moves more than a couple of points month to month without a pricing or cost change you can name, your cost of goods sold is not being measured. It is being derived, and the derivation is absorbing every counting error, every unrecorded freight bill, and every unit that walked out of a warehouse.

Fixing that is not a Xero configuration problem. It is a question of where unit level cost gets computed. More on the ledger side sits on the Xero integration page and in the broader ecommerce accounting overview.

Take Control of Your E-Commerce Business with ConnectBooks

Running an e-commerce business comes with plenty of challenges, but ConnectBooks is here to make your life easier. With real-time insights, seamless integrations, and detailed tracking of your profitability and inventory, you can stay ahead of the game. Whether you’re selling on Amazon, Shopify, Walmart, TikTok or eBay, ConnectBooks helps you manage your finances with 100% accuracy and confidence, so you can focus on growing your business.

Ready to level up? Start making smarter, data-driven decisions every step of the way. Try ConnectBooks Free Today or Schedule a Demo