For a global brand selling on Tmall, JD, and Douyin, the revenue side of the China P&L gets most of the attention — but gross margin is where the number quietly breaks. You can reconcile every yuan of settlement and still report a margin that is wrong, because the cost side of the equation never makes it cleanly into your ERP. Landed cost, import duties, bonded-warehouse fees, and platform-specific fulfilment charges live in customs declarations, 3PL invoices, and marketplace back-ends that your Western system was never designed to read.
This article explains how cost of goods sold (COGS) and landed cost actually accumulate on Chinese marketplaces, why standard ERP costing understates them, and the reconciliation framework enterprise finance teams use to report a defensible gross margin across every China channel.
Quick answer: why China marketplace COGS is hard to get right
- Landed cost is more than the factory price. True COGS for a China marketplace unit includes product cost, inbound freight, import duty, import VAT, customs brokerage, and inbound handling — most of which never reaches the Western ERP as a per-SKU cost.
- Bonded and general-trade models cost differently. The same SKU sold via cross-border bonded ecommerce (CBEC) versus general trade carries different duty and VAT treatment, so one product can have two landed-cost profiles.
- Fulfilment cost is channel-specific. Tmall (Cainiao), JD Logistics, and Douyin fulfilment each bill storage, pick-pack, and last-mile differently, and those costs belong in contribution margin — not buried in an operating-expense bucket.
- FX timing distorts unit cost. Inventory is often purchased in USD or EUR but sold in RMB, so the exchange rate used to value COGS materially changes reported margin.
- The fix is a cost-aware data layer that maps every landed-cost component and fulfilment fee back to the SKU and channel, then reconciles it against ERP inventory journals into one auditable gross margin.
What actually sits inside China marketplace COGS
Under standard inventory accounting — for example IAS 2 Inventories — the cost of an inventory unit includes its purchase price plus all costs of bringing it to its present location and condition. For a unit sold on a Chinese marketplace, that “present location and condition” means a bonded or general-trade warehouse inside China, and the journey there adds several cost layers that a factory-gate price ignores.
The landed-cost stack
A defensible per-unit COGS for China typically stacks up as: ex-works product cost + international freight + insurance + import duty + import VAT (where non-recoverable) + customs brokerage + inbound handling and inspection. Import duty and VAT are assessed on the customs-declared value, and rates vary by HS code and trade model — the applicable schedules are published by China Customs (GACC). If your ERP is costing units at the factory price alone, your gross margin is systematically overstated on every China order.
Bonded CBEC vs. general trade
The trade model changes the cost profile. Under bonded cross-border ecommerce, goods enter a bonded zone and duty/VAT are only triggered on sale to the consumer, often at a reduced cross-border tax rate. Under general trade, full import duty and 13% import VAT are paid up front at customs clearance. The same SKU can therefore carry two different landed costs depending on how it was imported — and if your costing logic does not distinguish them, blended margin hides which channel is actually profitable. This is closely tied to the VAT and fapiao treatment on the revenue side.
Channel-specific fulfilment costs
Fulfilment is a variable cost that belongs in contribution margin, not a fixed overhead. Tmall orders fulfilled through Cainiao, JD orders through JD Logistics, and Douyin orders through its own fulfilment network each bill storage, pick-and-pack, and delivery on different fee schedules. Allocating these back to the SKU and channel is what separates a true channel-level profitability view from a misleading top-down average.
Why standard ERP costing understates China margin
The data lives outside the ERP
NetSuite or SAP holds a standard or average cost for each item, but the components that make China COGS accurate — customs declarations, freight-forwarder invoices, 3PL billing files, and marketplace fulfilment statements — arrive as PDFs, spreadsheets, and platform exports in RMB. Without an integration layer to capture and normalise them, finance either ignores these costs or dumps them into a monthly operating-expense line, which destroys per-SKU margin visibility. This is the cost-side twin of the problem that makes the China P&L run two weeks late.
FX converts cost at the wrong rate
When inventory is bought in USD or EUR and sold in RMB, the exchange rate used to value COGS is a real margin lever. Costing at the spot rate on the sale date, the purchase-order rate, or a monthly average can swing reported gross margin by several points. A disciplined approach ties each unit’s cost to a documented FX policy and reconciles it the same way you would reconcile FX on the settlement side.
Timing mismatches break the match
Revenue is recognised when the order settles, but landed-cost invoices from customs and freight forwarders often arrive weeks later. If COGS is booked in a different period than the matching revenue, gross margin is distorted in both periods. Accurate matching requires accruing landed cost at the point of sale and truing it up when the actual invoices land — a discipline that only works with a data layer feeding the month-end close.
A reconciliation framework for accurate China COGS
Enterprise finance teams that report a trustworthy China gross margin tend to follow the same four steps, regardless of ERP:
- 1. Build a per-SKU landed-cost record. Capture every cost component — product, freight, duty, import VAT, brokerage, inbound handling — and attach it to the SKU and trade model (bonded vs. general trade) at the point of import.
- 2. Allocate channel fulfilment to the order. Ingest Cainiao, JD Logistics, and Douyin fulfilment statements and map each fee back to the specific order and channel so it lands in contribution margin.
- 3. Normalise currency with a documented FX policy. Convert cost components at a consistent, auditable rate and reconcile against ERP inventory valuation.
- 4. Match COGS to revenue in the right period. Accrue landed cost at sale, true it up against actual customs and freight invoices, and reconcile the total against ERP inventory journals so the gross margin ties out.
The common thread is data integration. Digate connects Chinese marketplace and logistics data — Tmall, JD, Douyin, Cainiao, and customs records — to Western ERPs such as NetSuite and SAP, so landed cost and fulfilment fees reconcile to the SKU automatically. That turns gross margin from a quarterly estimate into a channel-level number finance can defend, and complements the real-time inventory visibility that keeps units and costs in sync.
Key takeaways
- China marketplace COGS is a landed-cost stack — product, freight, duty, import VAT, brokerage, and handling — not a factory-gate price.
- Bonded CBEC and general trade give the same SKU two different cost profiles; blended costing hides which channel is profitable.
- Channel fulfilment (Cainiao, JD Logistics, Douyin) belongs in contribution margin and must be allocated to the order.
- FX timing and period-matching errors can move reported gross margin by several points.
- A cost-aware data layer that reconciles landed cost and fulfilment to the SKU is what makes unified China P&L reporting accurate.
Want an accurate, channel-level gross margin across your China marketplaces? See how Digate reconciles landed cost, fulfilment fees, and ERP inventory into one auditable P&L.
