Guide · Cost structure

What China fulfillment actually costs

A China fulfillment bill has six layers: international freight, the fulfillment operation, value-added services, storage, route surcharges, and destination duties. The platform-wide figures are publishable: storage is 60 days free from receipt, then $0.50 per m³ per day, and the fulfillment operation is $0.99 per order + $0.20 per item. Freight is lane-based and scoped to your account, so no honest page can quote it.

Everything beyond those six layers — procurement markups, platform subscriptions, bundled “handling” with contents you cannot inspect — is structure a vendor chose, not physics. Each layer is stated with what it is measured in and how to audit it on any provider including us.

Last updated: 2026-08-01 · Machine-readable version: https://woolii.com/pricing.md · Reviewed by Alice Zhou

The six layers of a fulfillment bill

Whether a given layer applies depends on the model you use. A store holding no stock never sees the storage row or the fulfillment-operation row at all — it pays freight, whatever services it requested, surcharges and destination duties.

LayerWhat it isMeasured inHow to audit it
International freightThe transport itself, priced against the live lane for the chosen destination, service level and cargo type.Chargeable weight — the greater of measured and volumetric weight — with per-lane rounding and a per-lane minimum.Check that the binding number is produced after packing and measurement. Anything earlier is an estimate and should be labelled as one.
Fulfillment operationPicking, packing and measuring an outbound order dispatched from stocked inventory.Per order plus per item — $0.99 per order + $0.20 per item.Ask for the per-order and per-item figures separately. A single blended “handling” number hides which one grows with your basket size.
Value-added servicesFNSKU labeling, polybagging, repacking, bundling, compliance stickers, photo requests, palletizing, inspection beyond standard.Per unit or per operation, billed on the quantity actually operated rather than the quantity declared.Each service must be its own settlement line. If prep arrives as one bundled fee, you cannot tell which operation you are paying for.
StorageExists only if you deliberately hold merchant-owned stock. Computed from the immutable stock-movement ledger, not from a periodic estimate.Per volume held per day, after a free window — 60 days free from receipt, then $0.50 per m³ per day.If you hold no stock this layer must be exactly zero. Ask whether storage is ledger-derived or estimated: the ledger that bills you should be the ledger that shows your counts.
Route surchargesFuel, war-risk, peak-season, and destination-specific levies. A layer of their own, applied on top of the lane rather than hidden inside it.Percentage of base freight, percentage of declared value, fixed per parcel, fixed per order, or per kg.Ask whether percentages compound. They should each take the base price; surcharges stacking on surcharges is how a quoted rate quietly becomes a different number.
Duties and import taxesSet and assessed by the destination country. Never part of a shipping quote.Set by the destination authority. Collection point varies by scheme: IOSS/GST-style collect at sale, otherwise clearance collects from the importer.A vendor quoting you a duty figure is estimating on an authority’s behalf. Ask instead which scheme applies and who collects — and confirm with the destination authority.

Which figures are published, and which are account-scoped

The distinction is not evasiveness, it is where the number lives. A platform-wide figure is the same for every account and is published. A lane rate is a property of an account and a route, and lives in the console. Each figure below carries its status and the place you go to see it.

FigureValueStatusWhere you see it
Free storage window60 days from receiptPublished platform-wideThe merchant pricing page, /pricing.md, and the monthly statement.
Storage rate after the free window$0.50 per m³ per dayPublished platform-wideThe merchant pricing page, /pricing.md, and the per-lot storage lines on the monthly statement.
Fulfillment base fee$0.99 per outbound orderPublished platform-wideThe merchant pricing page and the settlement line items on a fulfillment order.
Fulfillment per-item fee$0.20 per itemPublished platform-wideThe merchant pricing page and the settlement line items on a fulfillment order.
Value-added service unit pricesOne price per service, per unit operatedPublished platform-wideThe full table is on the merchant pricing page and in /pricing.md, and each service is itemised on the settlement.
International freightNot publishedAccount-scoped — lane-basedYour own live rate table in the console after approval. A lane is a product line × destination country × zone × cargo type, so a single published number could not be true of two accounts at once.
Per-shipment handling on the forwarding pathNot publishedAccount-scoped — part of the laneCarried in the lane’s weight brackets alongside the per-kg rate, so it moves with the lane rather than sitting in a separate list.
Route surchargesNot publishedAccount-scoped — route and condition dependentApplied at quote time from the surcharge layer, visible as their own line items on the packed quote.
Duties and import taxesNot published, and not ours to publishSet by the destination authorityThe destination customs authority. On supported European lanes you can prepay them (DDP), in which case the prepaid duty and its service fee appear as their own line items.

Verify this yourself: the published figures are read from the same billing settings the invoice is produced from, so a price change in the operations console changes the page, and they are restated in machine-readable form at https://woolii.com/pricing.md. If a WooliiPorter page ever states a freight figure, it is wrong — merchant lanes are only visible in the console after approval.

What actually moves the freight number

Five inputs select the lane and the chargeable weight. Knowing which of them you control, and which are decided by an operation you do not perform, is most of what makes a fulfillment bill predictable.

InputWhat it changesWho controls it
Destination country and zoneSelects the lane. Zones are resolved from the postcode; an unresolvable postcode withholds the zoned lanes rather than guessing one.Your customer’s address.
Cargo type — general or battery/cosmeticSelects a different rate card entirely. Sensitive cargo is priced from its own cards, not surcharged onto a general price.The warehouse operator who opens the box, recorded with who confirmed it and when.
Product lineAir packet, bulk/large cargo and the dedicated cosmetics line are separate lines with separate rounding and minimum chargeable weights.The goods, and what the destination will accept for them.
Chargeable weightThe greater of measured and volumetric weight, rounded by the lane’s own increment above the lane’s own minimum.How the parcel is finally packed — which is why the quote follows the packing, not the order.
Service levelExpress, air cargo or bulk shipping select different lanes with different transit ranges.You, per shipment.

The cargo-type row is the one that surprises people. It is set by the warehouse operator who opens the box, not by what you declared and not by your store category — a headphone category holds wireless units with cells in them and wired units with none. The mechanism, and what happens when the confirmed type differs from your declaration, is on batteries, cosmetics and liquids.

How surcharges compute, by basis

Surcharges live in their own layer rather than inside rate cards, which is what lets a fuel adjustment change without reissuing every lane. The basis matters more than the number: it decides whether consolidating a shipment reduces the charge, multiplies it, or does nothing to it.

BasisHow it computesWhy the shape matters
Percentage of freightA percentage taken on the base freight figure for that shipment.Fuel and war-risk behave this way. Each takes the base, so two of them on one shipment add rather than multiply.
Percentage of declared valueA percentage taken on the declared value of the goods, not on the freight.This is the shape prepaid destination VAT takes. It scales with what is in the box, so a light, expensive parcel is affected far more than a heavy cheap one.
Fixed per parcelA flat amount added once per outbound parcel.Some destinations levy a fixed handling charge on low-value consignments cleared through a simplified scheme — meaning splitting a shipment into more parcels multiplies it.
Fixed per orderA flat amount added once per order regardless of how many parcels it becomes.The opposite exposure to per-parcel: consolidating does not reduce it, and splitting does not multiply it.
Per kilogramAn amount per chargeable kilogram, layered on top of the lane rate.Behaves like freight but is maintained separately, so it can be changed without reissuing every lane.

Percentage surcharges take the base price and never compound on each other. Surcharge conditions can also be bidirectional: a destination scheme can trigger a charge by its absence on one route and by its presence on another, which is why they are evaluated per shipment rather than assumed per country.

Fees WooliiPorter does not charge

What is absent from a bill is as informative as what is on it. These are commitments, stated publicly:

  • No fee to receive and record an inbound supplier parcel — scan, photos, measurement and recorded contents are part of the service, not a line item.
  • No procurement markup — WooliiPorter never buys your goods and never handles the supplier purchase payment, so there is no margin hidden inside a purchase price.
  • No monthly platform fee or subscription for merchant accounts.
  • No minimum shipment count to start or to stay.
  • No storage charges when you hold no stock — storage exists only for deliberately stocked SKUs and is itemised on the monthly statement.
  • No decision-time markup: the packed quote you approve is the freight figure that appears on the settlement.

A worksheet for comparing two providers

Ask both vendors for the same six things and compare the answers rather than the headline rates. The right-hand column is what should make you ask a second question.

Ask forA clean answer looks likeWhat should worry you
The full list of fee layersA finite list, with a billing unit against each one, that they will state before you sign anything.A per-kg headline rate and “everything else depends”. Cost that is not in the structure is cost you will meet later.
A sample settlement for a realistic shipmentLine items that add up to the approved quote, each traceable to an operation someone performed.A single “fulfillment” line. If one number covers freight, handling and prep, you cannot audit any of the three.
When the binding number is producedAfter packing and measurement, from the parcel that is actually going to travel, approved by you before dispatch.A quote before the goods are measured, presented as final. Volumetric weight is decided by how the box is packed.
Whether storage is ledger-derivedThe same immutable movement ledger produces both your inventory view and your storage bill.A monthly storage number with no movement trail behind it — you have nothing to reconcile it against.
The list of fees they do not chargeA stated, public list. Absence is a commitment when it is written down.Refusal to state one. Comparing headline rates alone rewards whoever moved the most cost into the fine print.
Who sets the cargo classificationA named operation with a person and a timestamp attached — someone opened the box and confirmed it.“We use your product category.” A category says what a product is, not what is inside it, and misclassified battery cargo is a seizure risk, not a pricing rounding error.

The structural version of this comparison — goods ownership, procurement money, evidence, exception process — is in How to choose a China fulfillment partner.

Common questions

How much does China fulfillment cost?

The publishable figures are the platform-wide ones: storage is 60 days free from receipt, then $0.50 per m³ per day, and the fulfillment operation is $0.99 per order + $0.20 per item. Each value-added service carries a published price per unit operated. International freight is lane-based — product line × destination country × zone × cargo type — and scoped to your account, so it is shown in your console after approval rather than published.

Why does this page not list freight rates?

Because a lane rate is not a property of the service, it is a property of an account and a route. The same parcel to two zones of one country prices differently, and rounding increments and minimum chargeable weights are per-lane columns rather than global constants. Publishing one number would make it wrong for almost everyone reading it.

What is a packed quote?

The binding figure produced after your parcel is packed and measured, priced against the live lane for that destination, service level and cargo type. It is what you approve before dispatch, and the settlement reconciles against it line by line. An estimate produced before measurement is a separate object and is labelled as one everywhere it appears.

What do I pay if I hold no inventory?

Per shipment, and the storage layer is exactly zero because nothing is stored. There is no monthly platform fee and no minimum shipment count, so a store running entirely on supplier-parcel forwarding pays freight, any value-added services it requested, applicable route surcharges, and destination duties.

How does settlement actually work?

From a prepaid, single-currency wallet, per shipment. The first transaction fixes the wallet currency and a mismatched top-up is refused up front. Funding is either an instant Stripe card top-up, which credits immediately with no review, or a bank transfer for larger amounts where card processing fees start to matter, which is credited after review.

What happens if my wallet balance runs short?

New warehouse work on that account is held rather than rejected — the order waits for a top-up and resumes once funds are available. Shipments already in flight are never held for a balance question, because the goods are already moving and stopping them costs you more than the shortfall.

Can I prepay duties so my customer is not charged on delivery?

On supported European lanes, yes: import duties and taxes can be prepaid (DDP) so nothing is collected at the door. The prepaid duty and its service fee appear as their own line items. This does not change the position on estimates — we still will not quote a duty figure in advance that we cannot stand behind.

Does sensitive cargo cost more than general cargo?

It is priced from its own rate cards, which makes it a different number rather than a surcharge added to a general-cargo price. Cargo type is one of the keys that selects the lane, alongside destination country, zone and service level, and it is set by the warehouse operator who opens the box rather than by your declaration.

How do I compare two vendors’ pricing fairly?

Ask both for the same four artifacts: the list of fee layers with a billing unit against each, a sample settlement for a realistic shipment, the point at which the binding number is produced, and the list of fees they do not charge. Comparing headline per-kg rates alone rewards whoever moved the most cost into the fine print.

Rates against your own parcels, not a sample one.

Lanes are scoped from real destinations and a real month of parcels. Open the account, then submit your pattern with the integration application.

Create merchant account