Inventory Cost Capitalization for Ecommerce: What You Need to Know

Under US GAAP (ASC 330), every expenditure, direct or indirect, that is necessary to bring inventory to its existing condition and location must be capitalized on the balance sheet. Those costs stay there until the units sell, at which point they flow to cost of goods sold (COGS). For ecommerce sellers, that means the purchase price is only the starting point.
The costs that belong in inventory include:
- Vendor invoice price (net of trade discounts)
- Inbound freight (ocean, air, or truck to your receiving node)
- Import duties, tariffs, and HTS-classified fees
- Customs broker and port-handling fees
- Required prep, labeling, and FNSKU application (when the marketplace or 3PL mandates it)
- Packaging that is part of the saleable unit
- Direct production and conversion costs, plus allocable normal overhead
Three categories are ordinarily excluded: outbound shipping to customers, advertising and marketing spend, and abnormal spoilage or waste. For tax purposes, IRC §263A (the Uniform Capitalization rules, or UNICAP) imposes a parallel but distinct capitalization requirement with its own thresholds and small-taxpayer exceptions. Book and tax inventory bases can diverge, and that divergence needs to be tracked.
Key Takeaways
Correctly capitalizing inventory costs under ASC 330 requires capturing vendor price, inbound freight, duties, broker fees, and required prep into each unit’s cost basis before any of those costs reach COGS.
| Point | Details |
|---|---|
| ASC 330 defines the rule | Capitalize every cost needed to bring inventory to its existing condition and location; costs flow to COGS only when units sell. |
| Landed cost goes beyond invoice price | Include inbound freight, import duties, customs broker fees, insurance, and required prep in every unit’s cost basis. |
| Phantom COGS is a real risk | Expensing inbound costs at payment rather than capitalizing them distorts margins in both directions across periods. |
| Tax and book rules differ | IRC §263A (UNICAP) may require additional capitalization for tax; small-taxpayer exceptions apply below the gross receipts threshold. |
| Beanhawk automates the FBA layer | Continuous ledger monitoring, automated settlement posting to QuickBooks or Xero, and PO-level cost tracking keep book and marketplace data aligned. |
Table of Contents
- What costs belong in inventory under ASC 330?
- Costs that do not belong in inventory, and where sellers go wrong
- Which inventory costing method fits your ecommerce business?
- How to calculate and allocate landed cost per unit
- How IRC §263A (UNICAP) differs from US GAAP capitalization
- Journal entries from PO through sale, including an FBA reimbursement
- Systems and controls that keep inventory costs accurate
- How to reconcile inventory, handle shrinkage, and manage FBA claims
- Beanhawk closes the gap between your books and your FBA ledger
- Sources
What costs belong in inventory under ASC 330?
ASC 330 defines inventory cost as the sum of direct and indirect expenditures incurred to bring an item to its existing condition and location. For ecommerce, that definition reaches further than most owners expect.
Here is a numbered checklist of capitalizable cost categories with ecommerce-specific examples:
- Vendor purchase price. The gross invoice amount, net of trade discounts. Do not net out cash discounts until you have a policy for how to treat them.
- Import duties and tariffs. Per KPMG’s Inventory Handbook, tariffs and import fees incurred to procure goods and deliver them to your fulfillment center are capitalizable. HTS-classified duties belong in inventory cost, not in a separate expense line.
- Inbound ocean, air, or truck freight. The cost to move goods from the supplier to your first receiving node, whether that is a 3PL, Amazon FBA, or your own warehouse.
- Customs broker fees and port handling. Brokerage, ISF filing, and port-handling charges are part of the cost to clear goods into the country. They belong in inventory.
- Insurance on inbound shipments. Cargo insurance covering the transit period is a cost of getting goods to location.
- Required prep and labeling. KPMG notes that marketplace-required services, such as FNSKU labeling or poly-bagging required by Amazon FBA, are typically capitalizable because they bring inventory into the condition necessary for sale. A prep center invoice for required services is an inventory cost, not an operating expense.
- Packaging that is part of the saleable unit. Retail packaging, inserts, and bundling materials that ship with the product belong in inventory cost.
- Direct production and conversion costs. For sellers who manufacture or assemble, direct labor and materials are capitalizable. Normal overhead allocated on a systematic basis (machine hours, direct labor hours) is also capitalizable under full absorption costing.
- Inbound 3PL receiving and inspection fees. Fees charged by a 3PL to receive, count, and inspect inbound goods are part of the cost to bring inventory to its existing condition.
Allocation drivers matter. When a single PO covers multiple SKUs, you need a consistent rule to spread shared costs (freight, duties, broker fees) across units. Common drivers are invoice value, unit count, weight, or cubic volume. Pick one and document it.
Pro Tip: When a third-party prep center charges per-unit fees for services Amazon requires, capitalize those fees into inventory cost rather than expensing them as fulfillment costs. The test is whether the service is necessary to make the unit saleable in that channel.
Costs that do not belong in inventory, and where sellers go wrong
Several costs look like inventory costs but are not. Booking them into inventory overstates assets and understates current-period expenses. Expensing costs that should be capitalized does the opposite: it creates what practitioners call “phantom COGS,” where margins look worse than they are because costs hit the income statement before the related units sell.
Costs ordinarily excluded from inventory:
- Outbound shipping to customers (a selling cost, not a cost of acquiring inventory)
- Advertising, marketing, and promotional spend
- Sales commissions and marketplace referral fees (these are period costs under Topic 606)
- General and administrative overhead not directly tied to production or procurement
- Abnormal spoilage, waste, or disaster-driven re-routing costs (expensed immediately under ASC 330)
- Storage costs after goods reach their destination, in most cases
Common ecommerce mistakes:
- Expensing inbound landed costs when paid. A seller pays freight and duties at shipment and books them to expense. The goods arrive two weeks later. COGS is overstated in the payment period and understated when units actually sell. PwC practitioners flag this cash-versus-accrual mismatch as a primary driver of sellers looking profitable on paper but cash-poor in reality.
- Booking net marketplace deposits as revenue. Amazon pays a net settlement after deducting fees. Recording only that net deposit hides gross revenue, referral fees, FBA fees, and reimbursements. Each line needs its own account.
- Ignoring reserved or unfulfillable FBA inventory. Units in “reserved” or “unfulfillable” status still sit on your balance sheet at cost. Failing to track them creates a growing gap between your books and Amazon’s ledger.
- Treating all prep fees as operating expenses. If Amazon requires poly-bagging and you pay a prep center to do it, that fee is capitalizable. Expensing it understates inventory value.
Red flags for accountants to watch:
- Sudden month-to-month gross margin swings not explained by pricing changes
- Large unreconciled differences between marketplace settlements and bank deposits
- Growing variance between physical counts and book inventory balances
- Unexplained “other income” lines in marketplace settlement imports
Pro Tip: Run a one-period reconciliation of your inbound freight and duty payments against your inventory receiving entries. If the totals do not match, you have a capitalization gap that is distorting your margins.
Which inventory costing method fits your ecommerce business?
The cost-flow assumption you choose determines which costs attach to sold units and which remain in ending inventory. The choice affects both reported margins and taxable income.
| Method | How it works | COGS in rising-cost environment | Typical ecommerce use case | Complexity |
|---|---|---|---|---|
| FIFO | Oldest costs flow to COGS first | Lower COGS, higher gross profit | Most ecommerce sellers; perishables; fashion | Low |
| LIFO | Newest costs flow to COGS first | Higher COGS, lower gross profit | Sellers seeking tax deferral in inflationary periods; allowed under US GAAP if applied consistently | Moderate to high |
| Weighted average | Average cost per unit applied to all sales | Smoothed COGS | High-volume, homogeneous SKUs; commodity goods | Low to moderate |
| Specific identification | Actual cost of each unit tracked individually | Exact match | High-value, serialized, or unique items | High |
Choosing a method: FIFO is the default for most ecommerce sellers because it is straightforward, mirrors physical flow for most goods, and is accepted under both US GAAP and IRC. Weighted average works well when you replenish frequently and costs do not swing dramatically between POs. Specific identification makes sense for jewelry, electronics with serial numbers, or any SKU where individual unit cost varies meaningfully.
LIFO is worth a conversation with your tax advisor if you are in an inflationary cost environment and want to defer taxable income. It requires consistent application and additional disclosures under US GAAP.
Pro Tip: Whatever method you choose, document it in your accounting policy and apply it consistently. Switching methods mid-year requires disclosure and, for tax purposes, IRS approval via Form 3115.
How to calculate and allocate landed cost per unit
Landed cost is the total cost to get one unit of inventory to your receiving location, ready for sale. It is the number that should sit in your inventory layer, not just the vendor invoice price.
Landed cost formula:
Landed Cost = Vendor Price + Inbound Freight + Import Duties + Customs Broker Fees + Port Handling + Insurance + Required Prep/Labeling + Inbound 3PL Receiving Fees
Step-by-step allocation for a multi-SKU PO:
- Collect all inbound costs at the PO level. Pull the vendor invoice, freight invoice, customs entry summary, broker fee invoice, and any prep center invoices tied to this shipment.
- Choose an allocation driver. Invoice value is the most common and defensible driver. Weight or cubic volume works when freight cost correlates more closely with size than value.
- Compute each SKU’s share. Divide each SKU’s invoice value by the total PO invoice value to get an allocation percentage.
- Apply the percentage to each shared cost. Multiply each shared cost (freight, duty, broker fee) by each SKU’s allocation percentage.
- Sum all components to get per-unit landed cost. Add the allocated shared costs to the vendor price, then divide by unit count for that SKU.
- Create the inventory receiving layer. Post the per-unit landed cost as the cost basis for that receipt in your inventory system.
Worked example:
SKU A’s vendor price was $6.00 per unit. After allocating shared costs, the correct inventory cost is $7.92. Booking only $6.00 understates inventory by $0.96 per unit, which flows directly to understated COGS and overstated margins when those units sell.
Implementation note: Duty adjustments and peak-season freight surcharges often arrive after the initial receiving entry. When they do, post a landed-cost true-up to the same inventory layer rather than expensing the variance.
How IRC §263A (UNICAP) differs from US GAAP capitalization
For tax purposes, the Uniform Capitalization rules under IRC §263A require taxpayers to capitalize a broader set of direct and indirect costs into inventory than many sellers expect. The scope overlaps significantly with ASC 330 but is not identical.
Key differences:
- UNICAP applies to resellers with average annual gross receipts exceeding $30 million (indexed for inflation) and to all producers regardless of size. Sellers below that threshold may qualify for the small-taxpayer exception under IRC §263A(b)(2).
- UNICAP requires capitalization of certain indirect costs, such as a portion of purchasing, handling, and storage costs, that ASC 330 may permit to be expensed depending on the entity’s accounting policy elections.
- The small-taxpayer exception allows qualifying resellers to use the same capitalization method for both book and tax, which simplifies compliance but may not minimize tax liability.
- Book and tax inventory bases can diverge even when both follow a capitalization approach, because the specific cost pools and allocation methods differ. That divergence creates a book-to-tax adjustment that must be tracked in the tax provision or on Schedule M-1/M-3.
Action checklist for accountants:
- Confirm whether the entity meets the UNICAP threshold or qualifies for the small-taxpayer exception.
- Document the chosen capitalization method for both book and tax purposes separately.
- Track any book-to-tax inventory basis differences in the tax provision each period.
- Review whether conforming book and tax methods simplifies compliance without increasing tax cost.
- Update the policy document when revenue crosses the UNICAP threshold.
Journal entries from PO through sale, including an FBA reimbursement
The sequence below uses the SKU A figures from the landed-cost example above (500 units at $7.92 per unit landed cost, total $3,960). Assume 100 units sell in the first period at $15.00 each.
Step 1: Record the vendor AP on receipt of goods
Step 2: Post inbound costs to a landed-cost clearing account
Step 3: Allocate landed costs into inventory on receipt
Inventory now carries 500 units at $7.92 each ($3,960 total).
Step 4: Record the sale and COGS
100 units × $7.92 = $792 COGS. Do not book the net Amazon deposit as a single revenue line. Parse the settlement into gross sales, referral fees, FBA fees, and any reimbursements, each to its own account. For a practical walkthrough of reconciling Amazon payouts in QuickBooks, the mapping logic applies directly to these entries.
Step 5: FBA reimbursement for a lost unit
Assume Amazon loses 5 units of SKU A and issues a reimbursement of $39.60 (5 × $7.92 cost basis). Two scenarios:
If the reimbursement arrives in the same period as the loss:
If the reimbursement arrives in a later period (after inventory has been written down):
For more on how FBA reimbursements are calculated and posted, the timing of the claim relative to the write-down determines the correct account.
Posting checklist for QuickBooks Online or Xero:
- Create a “Landed Cost Clearing” current liability or contra-asset account to hold inbound costs until allocated.
- Use class or location tracking to tag entries by channel or fulfillment node.
- Set up separate income accounts for gross sales, referral fees, FBA fees, and reimbursements.
- Add a memo on every inventory journal entry referencing the PO number and shipment ID.
- Reconcile the Landed Cost Clearing account to zero at the end of each receiving period.
Pro Tip: Never let the Landed Cost Clearing account carry a balance into the next month without investigation. An aging balance there almost always means a freight or duty invoice was posted but never allocated to inventory.
Systems and controls that keep inventory costs accurate

The right tooling makes the difference between a capitalization policy that works on paper and one that actually runs. Phantom COGS from omitted landed costs, lost units, or unrecorded FBA events is a common ecommerce blind spot, and spreadsheets stop working reliably around 200 SKUs or when you add a second fulfillment channel.
Functional capabilities to require from your systems:
- PO-level landed cost capture with per-SKU allocation by a documented driver
- Versioned SKU cost catalog that updates with each new receiving layer
- Multi-channel settlement parsing (gross revenue, fees, reimbursements, adjustments)
- FBA Inventory Ledger Report reconciliation against book inventory
- Automatic journal posting to QuickBooks Online or Xero with correct account mapping
- Reporting on reserved, unfulfillable, and in-transit inventory separately from sellable stock
Implementation steps:
- Map your current cost flows from PO creation through settlement receipt.
- Centralize PO and inbound cost capture in one system before the goods arrive.
- Document your cost-driver allocation rules and build them into the receiving workflow.
- Automate settlement import so gross revenue and fee lines post to the correct accounts without manual entry.
- Schedule monthly reconciliations: FBA Inventory Ledger vs. book, marketplace reserves vs. bank, and landed-cost true-ups for late-arriving invoices.
Tool architecture that works: A2X handles multi-channel settlement parsing and maps Amazon and other marketplace deposits into structured journal entries. QuickBooks Online or Xero serves as the general ledger. Beanhawk sits on top of the FBA layer, continuously monitoring inbound shipments and ledger events to catch lost, damaged, or under-reimbursed inventory before the claim window closes, and posting settlements automatically to QuickBooks or Xero. For sellers tracking FBA inventory across multiple channels, that combination eliminates most of the manual reconciliation work.
Control checklist:
- Monthly: reconcile FBA Inventory Ledger Report to book inventory; reconcile marketplace reserves to bank; review Landed Cost Clearing account aging.
- Quarterly: run cycle counts and compare to book; review cost catalog for SKUs with recent supplier price changes.
- Annually: confirm cost-flow method is applied consistently; review UNICAP threshold and update tax provision for any book-to-tax differences.
Pro Tip: Set a calendar reminder to pull the FBA Inventory Ledger Report on the first business day of each month. Amazon’s claim windows are time-limited, and a 30-day reconciliation cadence is the minimum needed to catch losses before they expire.
How to reconcile inventory, handle shrinkage, and manage FBA claims
Monthly reconciliation is not optional once you have inventory across multiple nodes. The sequence below works for sellers using Amazon FBA alongside a 3PL or direct warehouse.
- Import marketplace settlements for the period. Parse gross sales, referral fees, FBA fees, reimbursements, and adjustments into separate accounts. Do not book the net deposit.
- Reconcile gross revenue components against your order management system. Verify that unit counts and selling prices match.
- Pull the FBA Inventory Ledger Report and compare ending on-hand quantities to your book inventory by SKU. Investigate any variance above your materiality threshold.
- Pull 3PL on-hand reports and reconcile to book. Flag discrepancies for physical count or investigation.
- Review reserved, unfulfillable, and in-transit buckets. Units in these statuses are still your inventory at cost. Confirm they are on the balance sheet.
- Identify shrinkage and write-off candidates. Units confirmed lost or damaged that Amazon has not reimbursed should be written down. Post the write-down to a shrinkage expense account.
- Record reimbursements when claims succeed. If the unit was already written down, post the reimbursement to Other Income. If the unit is still on the books, reverse the inventory balance.
Shrinkage and returns treatment:
- Write down confirmed losses in the period they are identified, not when the claim is filed.
- Reinstate inventory only when a returned unit is confirmed sellable and back in available status.
- Customer returns that are unfulfillable go to a separate “Returns Reserve” account at net realizable value.
Claims-handling checklist:
- Collect the FBA Inventory Ledger Report, shipment reconciliation report, and inbound shipping plan for each claim.
- Involve both operations (who knows what was shipped) and finance (who tracks the cost basis).
- Open claims within Amazon’s reimbursement window. Beanhawk’s continuous monitoring flags eligible events automatically, so claims do not age out before anyone notices.
- Set an aging threshold: any unresolved claim older than 60 days should escalate to manual review.
The part of inventory capitalization most sellers get wrong
Most of the ecommerce sellers who end up with misstated financials are not making careless errors. They are making a reasonable-sounding decision: expense costs when you pay them, recognize revenue when Amazon deposits the money. That logic is cash accounting, and it produces numbers that feel intuitive but are wrong under accrual rules.

The specific pattern that causes the most damage is expensing inbound freight and duties at payment while the goods are still in transit. The income statement takes a hit in the payment period. When the units arrive and eventually sell, COGS is understated because the freight and duty cost already ran through. Margins look better than they are at sale, and worse than they are at payment. Neither number is useful for decisions.
The fix is not complicated. It is a PO-level landed-cost entry that holds inbound costs in a clearing account until goods are received, then allocates them into inventory. That one change, applied consistently, is what separates sellers who trust their margin reports from those who are always surprised by the numbers.
The graduation point from spreadsheets to automated systems is roughly when you hit 200 SKUs or add a second fulfillment channel. Below that threshold, a disciplined manual process with a well-structured cost catalog works. Above it, the reconciliation burden grows faster than headcount, and errors compound. The ROI on automation at that scale is not about saving time. It is about having numbers you can actually rely on when you are making sourcing, pricing, and cash-flow decisions.
One thing to do in the next 30 days: pull your last three months of inbound freight and duty payments and trace each one to an inventory receiving entry. If you find payments that hit expense directly, you have a capitalization gap. Quantify it, post a correcting entry, and build the PO-level process to prevent it from recurring.
Beanhawk closes the gap between your books and your FBA ledger
Accurate inventory capitalization requires clean data at every step: PO costs, inbound charges, FBA events, and marketplace settlements all flowing into the right accounts at the right time. Beanhawk automates the hardest part of that chain.

Beanhawk continuously monitors your inbound shipments and FBA ledger events, catching lost, damaged, and under-reimbursed inventory before claim windows close. Settlements post automatically to QuickBooks or Xero with gross revenue, fees, and reimbursements mapped to separate accounts, so you never book a net deposit again. PO-level landed-cost tracking keeps your cost catalog current, and reorder alerts flag when inventory levels need attention. There are no hidden fees or commissions on recovered amounts.
To get started, Beanhawk offers a free audit. You will need your most recent marketplace settlement report, a sample 3PL invoice, and a representative PO. From there, Beanhawk identifies what Amazon owes you and maps your settlement flows to your accounting system. Find out what Amazon reimburses for lost or damaged inventory and start your free audit at beanhawk.com.
Sources
The sources below underpin the guidance in this article. Each one is worth bookmarking if you or your accountant need to go deeper on a specific point.
- Handbook: Inventory
- What is landed cost: How to calculate it and lower your expenses
- Handbook: Inventory
This article is general information, not a substitute for advice from a qualified financial advisor. Consult a qualified financial professional about your own circumstances before acting on anything here.