3PL Invoice Line-Item Audit: Classifying Every Fee As Variable, Fixed, Or Landed Cost Checklist

Metricuno
October 5, 2026
6 min read
3PL Invoice Line-Item Audit: Classifying Every Fee As Variable, Fixed, Or Landed Cost Checklist — A line-by-line 3PL fee audit template: classify pick, pack, storage, receiving, VAS, and surcharges as variable COGS, landed cost, or fixed overhead.
Quick answer

A reference the Head of E-commerce hands finance: walk every line on a 3PL invoice to its correct home — per-order COGS, landed product cost, or fixed overhead — so contribution margin finally reconciles.

Definition
Operations & Finance

3PL Invoice Line-Item Audit

A structured walkthrough that assigns every line on a 3PL invoice to one of three buckets: per-order COGS, landed product cost, or fixed overhead.

A 3PL invoice bundles ten to twenty fee categories into a single monthly total, and most finance teams dump the whole number into cost of goods sold. That's wrong in both directions — storage and account fees inflate per-order COGS, while receiving and inbound handling vanish into opex instead of attaching to the inventory they belong to.

This audit template fixes that. You walk each line item once, decide whether it varies with orders shipped, with units received, or with time, and route it to the correct destination. The output is a one-page classification your finance team can apply every month, and a contribution margin figure that finally reconciles to reality.

Also known as
fulfillment cost classification
3PL fee audit
warehouse invoice reconciliation

Most 3PL invoices arrive as a PDF with eight to fifteen line items and a total. If your bookkeeper posts the lump sum to COGS, your gross margin per order is wrong on both sides — overstated on slow months, understated on big-volume months — and every pricing, promo, and channel decision downstream inherits that error.

The fix is mechanical, not clever. Each fee behaves like one of three things: it moves with each order shipped (variable COGS), it attaches to inventory you brought in (landed product cost), or it's the price of keeping the warehouse relationship open regardless of volume (fixed overhead). This template walks every category you'll see on a typical pick-and-pack contract.

The single most common error

Monthly storage fees belong in fixed overhead, not per-order COGS. Dividing storage by orders shipped makes slow months look catastrophic and fast months look artificially profitable — the exact opposite of what the data is telling you. If you only fix one line, fix this one.

The line-by-line checklist

Pick fees and pack fees — the per-order charges that scale 1:1 with shipments — are the only lines that unambiguously belong in per-order COGS. Same for the first-unit and additional-unit pick rates: multiply by units in the order, add to that order's cost. These are the easy ones and the only lines most teams get right.

Packaging materials (boxes, mailers, void fill, tape, branded tissue) belong in per-order COGS when billed per shipment, and in landed product cost when billed per unit received or pre-kitted. Branded inserts and marketing flyers are a judgement call: if they ship with every order they're variable COGS; if they're a campaign, book them as marketing.

Receiving, inbound handling, pallet break-down, and QC on arrival all attach to a specific inbound shipment of inventory. Capitalize them into landed product cost — the same bucket as freight-in and customs duty — and expense them when the units sell. Posting receiving to current-month COGS double-counts the cost against orders that have nothing to do with that inbound.

Storage (per pallet, per bin, per cubic foot) is time-based rent on space, not a cost of fulfilling an order. It goes to fixed overhead, reviewed quarterly against SKU-level velocity. Minimum-order fees, monthly account fees, EDI/integration fees, and tech-platform charges follow the same logic — they're the cost of the relationship, not the cost of a shipment. See the companion piece on why monthly 3PL storage fees don't belong in per-order COGS for the full argument.

Value-added services (VAS) — kitting, bundling, labelling, gift-wrap, custom assembly — split by trigger. Kitting done at receipt against a planned bundle SKU is landed cost. Kitting done at order time (customer picked a build-your-own box) is per-order COGS. Carrier surcharges (fuel, residential, DIM, address correction, Saturday) are per-order variable; peak-season surcharges that apply to all orders in a window still belong in per-order COGS, just budgeted separately. Returns processing is variable COGS on the return, netted against the original order's margin in your contribution margin measurement.

Benchmark

Typical share of a 3PL invoice by classification bucket (apparel & beauty, 5-20k orders/month)

Line itemTypical share of invoiceCorrect bucket
Pick & pack (per order + per unit)45-60%Per-order COGS
Packaging materials (per shipment)8-15%Per-order COGS
Carrier surcharges (fuel, DIM, residential)5-12%Per-order COGS
Receiving & inbound handling4-10%Landed product cost
Kitting at receipt / pre-build2-6%Landed product cost
Storage (pallet / bin / cubic foot)8-18%Fixed overhead
Account fee, EDI, tech platform2-5%Fixed overhead
Returns processing2-6%Per-order COGS (netted)
Frequently asked

3PL invoice audit — frequently asked questions

Because the invoice mixes volume-driven costs with time-driven costs. Lumping them together means slow months show inflated per-order COGS (storage and account fees spread over fewer orders) and busy months show deflated per-order COGS. Your contribution margin per order swings 10-20% month to month for reasons that have nothing to do with the orders themselves.

Landed product cost. Freight-in, customs duty, broker fees, and receiving at the 3PL all attach to a specific inbound shipment of inventory and should be capitalized into the per-unit cost of those SKUs. They expense through COGS when the units sell, not when the invoice arrives.

If an insert ships with every order as standard, treat it as per-order COGS alongside the box and void fill. If it's a time-boxed campaign (holiday card, product launch flyer, retention offer), book it as marketing. The test is whether the cost is triggered by the shipment or by a marketing decision.

Split by when the kit is built. Kitting done at receipt against a planned bundle SKU is landed product cost — it becomes part of the bundle's unit cost. Kitting done at order time (customer configured the bundle) is per-order variable COGS on that specific order.

Per-order variable COGS, applied to the returned order rather than the current month's shipments. In contribution margin measurement, you net the return fee plus any refurb/restock cost against the original order's revenue to get true net contribution — which is often negative on returned orders once you include it.

Still per-order variable COGS — they're triggered by the shipment going out during the surcharge window. Budget them separately in your forecast so Q4 contribution margin doesn't look like a cliff, but accounting treatment is the same as any other carrier surcharge.

Fixed overhead. These are the price of maintaining the 3PL relationship — you pay them whether you ship 100 orders or 10,000. Allocating them per order creates the same distortion as storage: slow months look bad, busy months look great, neither reflects unit economics.

Classify once, review annually or when the contract changes. Most invoices use the same line codes month to month, so once you've mapped each code to a bucket you automate the posting. Re-audit if the 3PL introduces new fee categories, you move warehouses, or you add a channel with different fulfillment economics (B2B wholesale, marketplace FBM, subscription).

Yes, for internal profitability and purchasing decisions — not for per-order COGS. Allocate storage by SKU cube × days-on-hand to find dead inventory and over-ordered SKUs. Keep that analysis separate from your per-order unit economics; it informs purchasing, not pricing.

Pull storage out of per-order COGS and reclassify it as fixed overhead. That single change typically moves reported per-order fulfillment cost by 10-20% and stabilizes month-over-month contribution margin immediately. Then work through receiving (into landed cost) and account fees (into overhead) in that order.

See Metricuno on your data

Bring your stack — Google Analytics, Stripe, a CRM, anything — and we'll walk through the metric tree that turns your funnel into one number.