← Back to blog
Shipping strategy9 min readMarch 10, 2026

How to stop losing money on shipping (and how to know if you are)

Most merchants assume their shipping is roughly break-even. The data says otherwise. Here's how to calculate your real shipping margin — and the four levers that recover it.

By PackOS Team

Most e-commerce merchants track their product margins to the penny. They obsess over ad spend, cost of goods, and return rates. But shipping? For the majority of online stores, it's a black box — and the numbers inside that box are quietly draining profit every single day. If you're not calculating your exact shipping margin on every order, there's a high probability you're losing money and don't know it.

What is shipping margin and why does it matter?

Shipping margin is the difference between what your customer pays for shipping at checkout and what you actually pay for the carrier label. It sounds simple, but very few merchants calculate it consistently.

A positive shipping margin means you collected more than you spent — your shipping is contributing to your business. A negative shipping margin means you're subsidizing every shipment out of your product margin. A zero margin isn't realistic because of packing supplies, labor, and overhead — so if you think you're breaking even, you're probably losing money.

Most e-commerce merchants never calculate it — the rate collected at checkout and the label cost land in two different systems, and nobody subtracts one from the other, so the gap leaves the business through a leak no one looks at.

The math most merchants never do

Here's the calculation most store owners have never actually run: pull every order from last month. For each one, find what the customer paid for shipping. Then find what the carrier label actually cost. Subtract. That's your per-order shipping margin.

Now total it up. That's your monthly shipping P&L — your real shipping profitability number.

The reason most merchants don't do this is that the data lives in two separate places: your store platform (what customers paid) and your label provider (what you spent). Joining those datasets manually is tedious. Most merchants make a mental estimate and move on.

The problem is that mental estimates are almost always wrong — and they're always wrong in a predictable direction. Merchants systematically underestimate what shipping actually costs them because they anchor to their cheapest common shipments and forget about the outliers: the heavy orders, the long-distance zones, the oversize boxes.

Why inaccurate shipping quotes hurt your margins

The root cause of negative shipping margin is almost always inaccurate shipping quotes at checkout. When the rate your customer sees doesn't reflect the rate you'll actually pay, someone absorbs the difference — and it's always you.

This happens for several reasons:

Flat rate shipping is the most common culprit. A merchant charges $7.99 flat for all orders. Their average label cost is $6.80, so they think they're profitable. But the average hides enormous variance: a 0.5 lb package going to a nearby zone costs $4.20; a 4 lb package going across the country costs $12.60. The flat rate wins on the first order and loses badly on the second.

Weight-based rates are more accurate than flat rates but still miss a critical variable: dimensional weight. A large, lightweight package gets charged by its size, not its actual weight — and weight-based rate tables don't account for this. A merchant shipping pillows or lampshades in big boxes is almost certainly being charged dimensional weight by UPS and FedEx, while their checkout rate is based only on scale weight.

Live carrier rates without box selection are the third failure mode. Many merchants enable live rates at checkout but don't specify which box the order will ship in. The carrier API makes a guess — often wrong — and the actual label costs more. Customers got an accurate-looking rate; you're paying a different one.

How to get accurate shipping costs at checkout

Accurate shipping quotes at checkout require two inputs: the exact weight of the order, and the exact box it will ship in. Both need to be resolved at the moment of checkout, not at the moment of fulfillment.

This is what PackOS Checkout does. When a customer is checking out, PackOS calculates which box from your library the order will actually fit in — using bin-packing logic — and queries the carrier API with both the real weight and the real box dimensions. The rate the customer sees is the rate you'll pay when you print the label.

The result is accurate shipping quotes on every order, in real time, without manual intervention. No flat rates. No guessing. No subsidies.

For merchants who can't implement live rates immediately, the next best step is to run the manual calculation I described above on last month's orders, identify which order types are costing you the most, and adjust your rate structure to recover that margin.

The levers for recovering shipping margin

Once you've identified your shipping margin loss, there are four levers to pull:

1. Raise checkout rates to reflect actual label costs. This is the most direct fix. If your average order is costing you $9.20 to ship and you're charging $7.99, raising to $9.50–$10.00 is usually justifiable — and most customers don't abandon over a $1.50 change in shipping cost if the rate looks real and justified.

2. Negotiate carrier rates. Volume discounts kick in at as few as 50 shipments per week with most carriers. A 15% discount on your carrier rates goes directly to shipping margin. PackOS Labels includes discounted rates from day one — you don't need 50 shipments per week to access them.

3. Optimize box selection. Dimensional weight charges can be eliminated by using the right box. A product that fits in a 10"×10"×6" box should never be shipped in a 14"×14"×10" box. PackOS's bin-packing engine eliminates this by always recommending the smallest box in your library that fits the order.

4. Add a handling fee. A transparent handling charge of $0.50–$1.50 that covers packaging materials and labor is standard practice and rarely causes cart abandonment. Many merchants build it into the shipping rate; others display it separately.

Merchants who implement all four of these levers turn shipping from a cost center they weren't watching into one they can see and control.

Tools for tracking shipping margin automatically

The manual version of shipping margin analysis — exporting orders and labels and joining them in a spreadsheet — works once. But you need it to run continuously, because your cost structure changes: carrier rates go up every January, your product mix shifts, your average order weight changes.

PackOS automates this entirely. Every time you purchase a label through PackOS Labels, the system records the carrier cost and compares it to what the customer paid at checkout through PackOS Checkout. Your shipping margin appears automatically on every order, with rollup reports by carrier, zone, weight class, and time period.

This lets you catch margin erosion before it becomes a major problem. If your margin on UPS Ground shipments starts trending negative in October, you'll see it in the analytics — not three months later when you're reconciling your annual financials.

Accurate shipping costs, continuous margin visibility, and carrier rate optimization in one platform is the core of what PackOS is built to deliver. The merchants using it most effectively have turned shipping from a cost they hope is roughly right into a metric they actively manage.

Carrier Comparison8 min read

USPS vs UPS vs FedEx for Shopify Merchants in 2025

A practical comparison of the three major carriers for Shopify stores — pricing models, delivery speeds, dimensional weight rules, and which carrier wins for common shipment profiles.

February 12, 2025

Ready to see your shipping margin?

PackOS Checkout quotes the real rate at your Shopify checkout. PackOS Labels buys discounted labels for any store and shows the margin on each one. Start with either.

  • 14-day free trial on every Checkout plan
  • Labels is free, always