What Shipping Really Costs Per Order
The label price is the visible tip: packaging, adjustments, voids, reships, and your time complete the true per-order shipping cost. A worksheet method.
Your true shipping cost per order is everything shipping consumes in a month — labels, packaging, supplies, carrier adjustments, reships for lost parcels, and the hours you spend packing — divided by the number of orders you shipped. For most small shops that number lands meaningfully above the average label price, and every pricing decision built on the label price alone is quietly wrong by the difference. The fix is a one-page worksheet you update monthly.
Which costs hide outside the label price?
The label is the visible cost. Around it sits a ring of costs that never appear on a rate-comparison screen:
Packaging. Boxes, mailers, tape, bubble, tissue, thank-you cards, branded stickers. Individually trivial, collectively real — and packaging spend scales with orders, so it behaves exactly like a per-order shipping cost even though it lives in a different spreadsheet column.
Consumables and gear amortization. Label stock or ink, thermal rolls, the scale, the printer. Gear is lumpy spend, so amortize: divide what you paid by a reasonable service life in months and let each month carry its share.
Carrier billing adjustments. After a parcel is scanned and measured in the carrier's network, the carrier can re-bill it — a heavier actual weight, larger dimensions, or a surcharge you didn't anticipate produces a post-purchase charge or, occasionally, a credit. If you never look at adjustments, you are under-counting shipping cost by exactly the amount you're being adjusted. The mechanics are covered in carrier billing adjustments; on GoatLabels each adjustment lands as a record you can pull via the API and a shipment.adjustment.created webhook, so the number is auditable instead of mysterious.
Voids and unused labels. A voided label is usually money back, but not instantly and not always — carriers set outside windows for unused-label refunds, and a label you forget to void inside the window is pure cost. (How voiding works: void a shipping label.)
Reships and shipping-related refunds. When a parcel is lost or damaged, whatever you spend making the buyer whole — a second label, replacement product cost, or a refund — belongs in shipping cost, net of any insurance payout you recover.
Your time. The most-ignored line. Packing, label buying, drop-offs, and answering "where is my order?" all consume hours that have a value even when you don't pay yourself a wage.
How do you compute a true per-order shipping cost?
The worksheet method, once a month, thirty minutes:
- Pick last month. A complete, closed month — not a projection.
- Sum label spend. Total spent on labels, minus void refunds received. A wallet-based platform makes this trivial: on GoatLabels your wallet history is the ledger — top-ups in, labels and adjustments out.
- Sum packaging and consumables. Receipts for boxes, mailers, tape, label stock. If you bought in bulk, count what you consumed, not what you bought: (units used × unit cost).
- Add gear amortization. Monthly share of scale, printer, and other shipping-only equipment.
- Add net adjustments. Adjustments charged minus adjustment credits for the month.
- Add reships and shipping refunds. Second labels, replacement shipping, refunded shipping charges — minus insurance recoveries.
- Add time, priced honestly. Hours spent on fulfillment × the hourly rate you'd accept to do that work. Even a modest rate makes slow workflows visible.
- Divide by orders shipped. That's your true cost per order. Track it monthly on the same page.
Two derived numbers make the figure useful. Cost per order vs average label price shows your overhead ratio — how much cost lives outside the label. Shipping share of revenue (total shipping cost ÷ revenue) tells you whether shipping is eating your business.
How do voids, adjustments, and reships change the number?
These three are the volatile lines — the ones that make one month's true cost jump while label prices stayed flat.
Adjustments are the stealthiest. A systematic pattern — say, every parcel of one product type coming back a few ounces heavier than you declared — means your quotes are wrong at the source, and you're paying a correction on every order plus, sometimes, an administrative markup. The fix is upstream: weigh the packed parcel, not the product, and re-check dimensions after packaging changes. One note on payment mechanics: on GoatLabels adjustments draw from your wallet balance, and when an adjustment exceeds what's in the wallet, the card on file covers the difference — so an unwatched adjustment pattern is real money either way.
Voids are a discipline problem, not a cost problem — until they aren't. Track two things: how many labels you void (a high void rate means you're buying before orders are final) and whether any unused label aged past the refund window unclaimed. Both are recoverable money leaking through workflow habits.
Reships convert your loss rate into dollars. Even a small percentage of lost-or-damaged parcels, multiplied by a replacement label plus replacement product, adds a visible amount to every order's amortized cost. This is also where insurance decisions get made properly — with the reship line in front of you, you can compare what losses actually cost against what per-shipment insurance would have cost, which is the entire subject of our self-insurance math guide.
A worked example of how the lines stack up — illustrative arithmetic, not a benchmark: a shop ships 200 orders in a month. Labels net of voids come to $1,300. Packaging consumed: $170. Gear amortization: $25. Net adjustments: $38. One lost parcel reshipped: $31 in label and product. Twenty hours of fulfillment time at $20: $400. Total $1,964 → $9.82 per order, against an average label price of $6.50. Half again above the label price — a completely typical shape.
What is a healthy shipping share of revenue?
There's no universal target, but there are useful ranges. Shops selling small, light, high-margin goods often keep total shipping cost in the mid-to-high single digits as a percentage of revenue. Shops shipping heavy, bulky, or low-priced items can run into the teens and beyond — sustainable only if pricing was built knowing that.
More important than the level is the trend and the coverage:
- If shipping share of revenue is climbing while your product mix hasn't changed, carriers repriced or your workflow degraded — investigate which.
- Coverage asks: does what buyers pay you for shipping (explicit charges plus the amount baked into prices) cover your true cost? Persistent under-coverage is a slow leak that compounds monthly. How to structure who pays — free, threshold, flat, or exact — is the subject of free shipping economics.
The monthly worksheet makes both visible in one glance, which is the whole reason to maintain it.
How do you cut the number without cutting corners?
Attack the components in order of leverage:
| Cost component | How to measure it | Typical share of true cost |
|---|---|---|
| Label spend (net of voids) | Wallet/ledger total for the month | The majority — often half to two-thirds |
| Packaging and consumables | Units consumed × unit cost | Second-largest for most shops |
| Your time | Hours × honest hourly rate | Large and invisible until priced |
| Carrier adjustments (net) | Adjustment records for the month | Small if quoting is accurate; a red flag if not |
| Reships and refunds | Replacement labels + product, minus recoveries | Spiky — small on average, painful in bad months |
| Gear amortization | Purchase price ÷ service life | Smallest steady line |
Labels: rate-shop every order instead of defaulting to one carrier. USPS, UPS, FedEx, and DHL each win different weight-zone-size combinations; on GoatLabels all four quote on one screen with one all-in price each, so taking the cheapest is the default rather than a research project. Right-sizing packaging feeds this line too — smaller and lighter parcels quote lower everywhere.
Packaging: buy consumables in bulk at unit prices, standardize on a few sizes, and stop over-boxing. (Right-sizing also defends against dimension-based adjustments — same fix, two lines improved.)
Time: batch fulfillment into one or two sessions, and cut per-order label time with faster intake — synced store orders, or Billy drafting labels from a pasted order or screenshot. Minutes per order times orders per month is a real number; you priced it in step 7.
Adjustments: weigh and measure packed parcels accurately. This line should trend toward zero.
Reships: better packaging for fragile goods, insurance on the orders where the math says so, and tracking hygiene that catches problems early.
None of these is corner-cutting — every one delivers the same or better buyer experience at lower true cost. And the tooling cost stays out of your way: GoatLabels charges per label with no monthly minimum, so the worksheet's "software" line can be zero in a slow month (see pricing).
FAQ
Why not just use the label price as my shipping cost? Because the ring of costs around it — packaging, adjustments, reships, time — commonly adds half again or more on top. Price products off the label price alone and the gap comes straight out of margin.
How often should I recompute true cost per order? Monthly, from real ledger data. It's thirty minutes once the worksheet exists, and the month-over-month trend is where the insight lives — one-off calculations go stale by the next carrier rate change.
Should I really price my own time in? Yes. Unpriced time hides broken workflows: a fulfillment process that consumes your evenings shows up as "free" in a worksheet without a time line, and as your biggest improvement opportunity with one.
What's the fastest single way to lower the number? For most shops: rate-shop every label across all four carriers instead of defaulting to one. It's zero workflow change on GoatLabels — the comparison is the purchase screen — and it improves the largest cost line on every single order.
Do carrier adjustments mean I did something wrong? Usually they mean declared weight or dimensions differed from what the carrier measured. Occasional small adjustments are normal; a repeating pattern on the same product means your declared specs need fixing at the source.