Shopify COGS accounting is the process of recording the cost of inventory sold during a period as an expense, matched against the revenue from those sales. Shopify itself does not post COGS to your books. The entry happens in QuickBooks or Xero, usually monthly, based on units shipped times unit cost.
We've run the books for 100+ Shopify brands, and COGS is the line item that breaks more financial statements than any other. Stores either skip it entirely until tax time, leave landed costs sitting in operating expense, or trust Shopify's product cost field without ever reconciling it to actual supplier invoices. This guide walks through how the work actually gets done.
What Is Shopify COGS Accounting?
Shopify COGS accounting is the bookkeeping workflow that moves inventory off the balance sheet and onto the income statement when products ship to customers. It matches the cost of each unit sold to the revenue it generated, producing accurate gross margin. Shopify tracks unit cost in the product record but does not write the journal entry.
The mechanics come from accrual accounting under the AICPA GAAP overview. When a Shopify order ships, two things happen in the books: revenue is recognized, and the cost of that inventory moves from the Inventory asset account to the Cost of Goods Sold expense account. The difference is gross profit.
What goes into COGS for a typical DTC brand:
- Unit cost paid to the manufacturer or supplier
- Inbound freight from supplier to warehouse (ocean, air, trucking)
- Import duties and customs brokerage fees
- Inbound 3PL receiving fees (per pallet or per unit)
- Inspection, QC, and rework costs tied to specific production runs
- Direct production labor for brands that manufacture in-house
What does not belong in COGS, even though stores commonly miscode it: Shopify subscription fees, payment processing fees, ad spend, the salary of the founder packing boxes, software like Klaviyo or Gorgias, and outbound shipping to customers (treated as a fulfillment expense in most DTC chart of accounts).
If a cost would not exist without the unit being produced and delivered to the warehouse, it belongs in COGS. Everything else is operating expense.
Takeaway: a Shopify store that wants reliable margins needs a documented definition of what's in COGS and what's not, applied consistently every month. The biggest source of margin distortion we see is landed cost components getting buried in operating expense accounts.
How Does Shopify Track Cost of Goods Sold?
Shopify tracks unit cost through the Cost per Item field on each product variant. It uses that figure to display profit columns in finance reports and to calculate inventory value snapshots. Shopify does not, however, post COGS journal entries to QuickBooks or Xero. That handoff requires a third-party app or a manual close process.
Per the Shopify Analytics and Reports documentation, the Sales by Product report and the Inventory Valuation report both rely on the Cost per Item field. If that field is blank or stale, every margin number in Shopify is wrong, and any downstream COGS entry built from those reports inherits the error.
The three places Shopify cost data lives:
| Location | What It Stores | How It's Used |
|---|---|---|
| Product variant cost | Per-unit cost (single value) | Profit reports, inventory valuation |
| Inventory adjustments log | Quantity changes by reason | Audit trail for shrinkage, transfers |
| Sales reports | Units sold × cost per item | Source data for monthly COGS entry |
What Shopify's native tracking misses: it stores a single cost per variant, not a layered FIFO history. If a brand bought 1,000 units at $4 in January and 1,000 units at $5 in March, Shopify shows whatever value was last entered, not a weighted average of the actual layers on hand. Brands that need true FIFO or weighted average across purchase lots use Cin7, Inventory Planner, or Finaloop.
Takeaway: the Cost per Item field is the foundation of every COGS calculation a Shopify store will ever do. Brands typically audit it quarterly against actual supplier invoices and update it whenever a new PO arrives at a different price. For deeper coverage, see our Shopify inventory accounting methods guide.
What Are the Main Shopify COGS Accounting Methods?
The three GAAP-accepted inventory costing methods are FIFO (first-in, first-out), LIFO (last-in, first-out), and weighted average cost. Most Shopify brands under $10M use weighted average because QuickBooks Online and Xero default to it. Larger brands and those on NetSuite typically run FIFO. LIFO is rare in DTC.
| Method | How It Works | Common Use Case |
|---|---|---|
| Weighted Average | All units valued at blended average cost | DTC brands on QBO or Xero, $0-10M |
| FIFO | Oldest inventory layer expensed first | Apparel, food, brands with cost inflation |
| LIFO | Newest inventory layer expensed first | Rare in DTC; requires IRS election |
| Specific Identification | Each unit tracked individually | High-ticket SKUs, jewelry, custom goods |
A worked example: a candle brand buys 500 units at $6 and later 500 units at $8. They sell 600 units in the month. Here's how each method calculates COGS:
That $800 swing on a single month's COGS for a small brand is meaningful. It changes gross margin by roughly 6 percentage points on $13K of revenue. The IRS requires consistency — once a method is elected on the first tax return, switching requires Form 3115.
Takeaway: the costing method should be documented in a written accounting policy and applied the same way every month. Brands typically consult their CPA before changing methods because of the tax filing implications.
How Do You Record Shopify COGS Journal Entries?
The standard month-end Shopify COGS entry debits Cost of Goods Sold and credits Inventory for the total cost of units shipped during the period. The amount is calculated as units sold from the Shopify sales report times weighted-average unit cost. Most DTC brands under $5M post this as one summary entry per month.
Here's a realistic example for a Shopify brand that shipped 4,200 units in March 2026 with a weighted-average cost of $11.50 per unit:
When landed cost components arrive on a separate timeline (freight invoice three weeks after the goods clear customs), the brand needs a true-up entry. Say the same brand had $6,000 in inbound freight allocated to that month's units that wasn't yet capitalized into inventory:
For brands using A2X, the COGS entry can be automated. According to the A2X documentation for Shopify accounting, A2X can post unit cost data alongside payout settlements, eliminating the manual monthly calculation. We cover the full A2X setup in our A2X bookkeeping integration playbook.
What we see go wrong with COGS entries:
- Booking COGS based on revenue × an assumed margin instead of actual unit costs (introduces compounding error)
- Forgetting to reverse a prior month's accrual when the actual invoice posts
- Using Shopify's product cost field without updating it after a price change from the supplier
- Mixing landed cost into operating expense, then double-counting it when COGS posts
- No entry at all for samples, gifted units, or influencer seeding — these still reduce inventory
Takeaway: the journal entry itself is mechanical once the data is clean. The real work is the inventory reconciliation that produces the units-sold figure and the unit cost — that's where most stores need a documented monthly close checklist.
Which Apps Handle Shopify COGS Best?
No single Shopify app handles every COGS scenario. A2X and Finaloop dominate the bookkeeping integration layer for DTC brands under $10M. Inventory Planner and Cin7 handle multi-warehouse cost layering. NetSuite covers enterprise. The right stack depends on order volume, warehouse count, and whether the brand needs perpetual inventory.
| App | Primary Function | Best Fit |
|---|---|---|
| A2X | Posts Shopify payouts and COGS to QBO/Xero | DTC brands $500K-$10M |
| Finaloop | Real-time bookkeeping with inventory tracking | DTC brands $1M-$15M |
| Synder | Per-transaction sync to QBO/Xero | Brands wanting transaction-level detail |
| Inventory Planner | Demand forecasting + landed cost | Multi-SKU brands with complex POs |
| Cin7 | Multi-warehouse perpetual inventory | Brands $5M+ with multiple sales channels |
| NetSuite | Full ERP with inventory subledger | Brands $20M+ or PE-backed |
A2X's COGS feature pulls cost-per-item from Shopify and posts a COGS entry with each payout settlement, splitting the entry between cost of goods sold and inventory automatically. The tradeoff: A2X relies on Shopify's single-cost field, so brands with layered FIFO needs hit a wall.
Synder takes a per-transaction approach. Per the Synder Shopify integration guide, every order syncs to QuickBooks individually with line-item COGS. That works for brands that want transaction-level granularity but creates massive ledger volume — a brand doing 5,000 orders a month gets 5,000 journal entries. We compare both in our A2X vs Synder breakdown.
For brands running subscriptions through Recharge, COGS handling is layered. Per the Recharge subscription platform documentation, subscription orders process through Shopify and inherit the same product cost data, but revenue recognition for prepaid plans requires deferred revenue treatment that COGS apps don't automate.
Takeaway: pick the app stack based on inventory complexity, not order volume. A brand doing $8M with 12 SKUs and one warehouse needs a different stack than one doing $3M with 200 SKUs across three 3PLs.
How Do You Calculate Landed Cost for Shopify COGS?
Landed cost is the total cost to get a unit ready for sale at the warehouse: supplier invoice plus inbound freight, duties, brokerage, and inbound 3PL fees. It's allocated across units in a purchase order. Brands that leave freight and duties in operating expense overstate gross margin by 5 to 15 percentage points, depending on import volume.
A worked example for a 5,000-unit container of branded water bottles:
The supplier invoice was $4.20 per unit. The true landed cost is $5.95 per unit — a 42% increase. A brand using $4.20 as its Shopify cost-per-item field would overstate gross margin by roughly 19 percentage points on every unit sold. On $1M of revenue at a 60% reported margin, that means $190K of phantom profit.
Allocation methods for landed cost components:
- By unit count — simplest, works when SKUs in the PO are similar size and weight
- By weight — for shipments mixing heavy and light SKUs
- By volume (CBM) — common for ocean freight allocation
- By value — for duty allocation when duty rates vary by HS code
Takeaway: every PO should produce a landed cost worksheet before goods hit inventory. Brands that update Shopify's cost-per-item field with true landed cost (not just supplier price) get accurate margins on day one. Brands that batch-update at month-end carry distortion until the next true-up.
What Are the Most Common Shopify COGS Mistakes?
The most common Shopify COGS mistakes are: leaving landed cost in operating expense, never updating the Cost per Item field after price changes, ignoring shrinkage and samples, and recording COGS only at year-end. Each of these distorts monthly gross margin and breaks any forecasting or pricing decision built on those numbers.
What we see across 100+ Shopify brands during onboarding cleanups:
- Inbound freight booked to a 'Shipping Expense' account, mixed with outbound shipping to customers — creates a meaningless line item
- Cost per Item set when the product was first created, never touched again, even after three supplier price increases
- Influencer seeding programs sending 200 units a month with no inventory adjustment, no COGS entry, no expense recognition
- COGS posted as a year-end plug to make the tax return work, with monthly P&Ls showing 95% gross margin
- Returns flowing back into Shopify with no COGS reversal — the inventory is back in stock but the expense already hit
- Multi-pack bundles (3-pack of a single SKU) costed as one unit instead of three, understating COGS on every bundle sold
- Damaged or expired inventory written off in spreadsheets but never journaled, leaving inventory overstated on the balance sheet
A Shopify P&L showing 80% gross margin in March and 45% in December is almost never a real margin shift. It's a year-end true-up exposing nine months of missing COGS entries.
Per the annual Shopify Commerce Trends report, inventory and supply chain costs continue to be the top margin pressure for DTC brands. Stores that don't track landed cost monthly cannot react to those pressures because they don't see them in the P&L until tax time.
Takeaway: a monthly close checklist for Shopify COGS catches all seven of these. The checklist should include: update Cost per Item from latest POs, allocate inbound freight, journal samples and seeding, reconcile Shopify inventory to 3PL on-hand counts, and post returns reversals.
How Does COGS Affect Shopify Tax Filings?
COGS directly reduces taxable income on a Shopify store's tax return. The IRS requires inventory-holding businesses to use accrual accounting and report COGS on Schedule C, Form 1120, or 1120-S. Understated COGS means overstated taxable income — overpaying tax. Overstated COGS triggers audit risk and adjustment penalties.
The COGS line on a tax return is built from a beginning inventory + purchases − ending inventory formula:
The ending inventory figure has to be supported by a physical count or a perpetual inventory system reconciled to physical counts. Brands that pull ending inventory from Shopify alone often miss inventory sitting at 3PLs, in transit, or at influencer/PR locations.
1099-K reporting adds another layer. Per IRS Form 1099-K instructions for third-party payment networks, Shopify Payments issues a 1099-K showing gross processed volume — not net of refunds, fees, or chargebacks. Reconciling 1099-K gross revenue to the tax return revenue line, then to COGS-supported gross profit, is a standard year-end procedure.
Tax topics like Section 263A (UNICAP) capitalization rules apply to brands with average gross receipts over $29M (2025 threshold). <!-- SOURCE_NEEDED: IRS link for current Section 263A small business exception threshold --> Most DTC Shopify brands fall under the small business exception, but the rule comes into play during a sale or fundraise where the books need GAAP audit treatment.
Takeaway: COGS is one of the most scrutinized lines in an e-commerce tax return. Brands typically have their CPA review the year-end inventory roll-forward, landed cost allocation, and any inventory write-offs before the return is filed. For brands also navigating sales tax, see our Shopify sales tax automation guide.
What Does a Monthly COGS Close Process Look Like?
A monthly Shopify COGS close runs in five steps: pull units sold from Shopify reports, reconcile to 3PL shipped quantities, update unit costs from recent POs, calculate and journal the COGS entry, then reconcile ending inventory in QuickBooks or Xero to physical or 3PL on-hand counts. The full process takes 2-4 hours for a typical sub-$5M brand.
The five-step monthly checklist:
- Pull Shopify Sales by Product report for the month — units sold by SKU
- Reconcile to 3PL shipped report (ShipBob, ShipHero, etc.) — investigate variances over 1%
- Update weighted-average unit cost using most recent landed cost worksheets
- Calculate total COGS (units × unit cost) and post the journal entry
- Reconcile ending inventory in the GL to 3PL on-hand × unit cost — book any shrinkage adjustment
For Xero users, the reconciliation workflow is documented in the Xero Central help center under tracked inventory. For QuickBooks users, the QuickBooks Online help center covers the inventory adjustment workflow. We've documented our internal Xero playbook in our Shopify reconciliation Xero playbook.
What gets included in the close that bookkeepers commonly miss:
- Sample and PR seeding units shipped that month (separate journal to Marketing Expense, credit Inventory)
- Damaged or expired write-offs reported by the 3PL
- Inventory in transit between warehouses (still on the balance sheet, just at a different location)
- Returns received during the month (reverse the original COGS at the same unit cost)
- Bundle SKUs — make sure component units are decremented, not the bundle SKU
Takeaway: a monthly close that includes COGS is the difference between a Shopify store that knows its true gross margin and one that's guessing. Brands serious about scaling typically build this checklist into their close calendar by month three of operations.
References
- the AICPA GAAP overview
- the Shopify Analytics and Reports documentation
- the A2X documentation for Shopify accounting
- the Synder Shopify integration guide
- the Recharge subscription platform documentation
- the annual Shopify Commerce Trends report
- IRS Form 1099-K instructions for third-party payment networks
- the Xero Central help center
- the QuickBooks Online help center