Are you undercharging for shipping on Shopify? How to find shipping leakage

Most stores lose money on shipping in small amounts on many orders: a free-shipping threshold that covers Alaska, a product with no weight, a bundle that ships in three boxes. Here's how to measure the gap, find what's causing it, and fix each cause.

Short answer

You're undercharging for shipping when customers pay less at checkout than the labels, carrier adjustments and fees for their orders cost you. To find it, compare each order's shipping charge with its label cost in Shopify's Shipping labels by order report, then add the adjustments from your Shopify bills and charges from any carrier or 3PL invoices. Group the gaps by destination, shipping method and cause, and fix the rate or product behind each group.

Key takeaways

  • Shopify's Shipping labels by order report puts the shipping price customers paid next to the label cost, but it leaves out adjustments and labels bought outside Shopify.
  • A product with no weight is treated as weightless, so checkout quotes too little for any cart it's in.
  • Multi-item orders use your store's default package unless packed product sizes are set and a saved box fits. If the real box is bigger, the label costs more than checkout quoted.
  • Free-shipping thresholds apply to every zone they're set on, including expensive ones like Alaska, Hawaii and remote areas.
  • Shopify says UPS demand and handling surcharges aren't included in checkout rates. Carrier adjustments arrive after the sale.
  • Market-driven shipping, rolling out since October 1, 2026, charges the highest matching rate within a shipping option instead of the sum. Check mixed carts.

What is shipping leakage?

Shipping leakage is the total gap between what your checkout charged for shipping and what shipping really cost, added up across orders. For a single order:

gap = shipping charged at checkout
    − (label cost + adjustments + carrier or 3PL fees + duties you paid)

A positive gap means shipping made money on that order. A negative gap means you paid the difference. Free-shipping orders have a charge of $0, so their whole cost is the gap. That can be deliberate, but you should know what it costs.

Leakage hides because no single order looks bad. A $2 gap on a third of your orders is easy to miss on any one invoice and adds up to thousands a year.

Illustration from Shopvibe: each order's shipping charge next to its labels and later adjustments. Free shipping to Alaska, a three-box order and a re-measured package account for most of the gap.

What causes Shopify stores to undercharge for shipping?

Common causes of shipping undercharges in Shopify
CauseWhy checkout charges too little
Free-shipping thresholds“Offer free shipping” over a minimum applies to every zone the rate is on, including destinations where labels cost twice the average.
Products with no weightShopify treats them as weightless, so calculated and weight-based rates come out too light.
Default package on multi-item ordersA variant's own package only applies to single-item orders. Other orders use the default package unless a saved box fits their packed sizes.
Multi-box ordersCheckout quotes one package. Bundles and bulky carts that ship as two or three labels cost two or three times as much.
Flat rates on heavy itemsEvery product starts in the general shipping profile. A 48 lb item can share a flat rate meant for a 1 lb one.
Surcharges and adjustmentsUPS demand and handling surcharges aren't in checkout rates, and carriers bill weight, dimension and address corrections weeks after the sale.
Rates that don't match labelsShopify lists manual checkout rates, rates from a third-party app, a different package on the label, and currency differences as reasons a label costs more than checkout.
Duties you pay but don't collectInternational orders shipped duties-paid without collecting duties at checkout, plus carrier disbursement fees Shopify's duty calculation doesn't include.

How much is shipping leakage costing you?

Use your last full month. Shipping charged per order is in Shopify Analytics as Average customer shipping charges; label cost per order is Average store shipping costs or the Shipping labels by order report. Adjustments and fees come from your bills.

Gap per order
−$1.24after adjustments
Per month
−$990800 orders
Per year
−$11,880at this month's volume

A negative number is money shipping cost you. Leave out duties and 3PL fees if they're billed elsewhere, or add them to adjustments.

How to find undercharged orders in Shopify, step by step

  1. Run the Shipping labels by order report. In Analytics › Reports, open it for the last 60 to 90 days. For each order it shows the shipping price charged to the customer, the cost of the label, the carrier, service, package and weight. Labels can take up to 24 hours to appear.
  2. Calculate the gap. Export the report and add a column: shipping price minus label cost. Sort by it. The negative rows are your undercharges.
  3. Add label adjustments. The report excludes adjustments. Export your Shopify bills from Settings › Billing and add each order's adjustments. Our guide to Shopify Shipping label adjustments shows where they are.
  4. Add labels bought elsewhere. The report also excludes return labels and labels not bought in Shopify. Add charges from your UPS, FedEx, USPS, DHL or 3PL invoices by tracking number.
  5. Group the gaps. Pivot by shipping method, destination state or country, free-shipping orders, and orders with more than one label. One or two groups usually hold most of the leakage.
  6. Check weights and packages. Export your products and filter the Variant Grams column for 0. Then compare your default package and saved boxes with the boxes you actually use.

The order export CSV has Shipping and Shipping Method columns but no label cost, tracking or weight, so it can't replace the labels report. In the Sales report, “Shipping” means shipping charges minus shipping discounts and refunded shipping.

How to fix each cause

Fixes in Shopify for each shipping undercharge cause
If the leak is…Fix it in Shopify
Free shipping to expensive zonesPut Alaska, Hawaii and other costly destinations in their own zone with paid rates, or a higher free-shipping minimum.
Calculated rates a little low everywhereAdd a handling fee to carrier-calculated rates: a percentage, a flat amount, or both.
Products with no weightWeigh them packed and enter the weight on every variant.
Default package too smallSet the default package to the box you use most, rounded up to the next inch. Save your other boxes and set packed product sizes so Shopify can pick the smallest box that fits.
Heavy items on flat ratesMove heavy and oversized products into their own shipping profile with weight-based or calculated rates.
Multi-box bundlesGive bundles a realistic weight and package, or a separate profile with a rate that covers several labels.
Carrier adjustmentsDispute the wrong ones and fix the product data behind the right ones. See UPS and FedEx disputes.
Duties you paidCollect duties and import taxes at checkout for those markets. See duties you paid but didn't collect.

On handling fees, Shopify applies the percentage before the flat amount. A $5.00 calculated rate with 50% and $1.00 added comes to $8.50, not $9.00. A negative value works as a discount.

Change one thing at a time. Raising rates affects conversion. Fix data problems first (weights, packages, profiles), since those make checkout accurate rather than more expensive, then adjust rates where the gap remains.

How market-driven shipping changes the math

Shopify began rolling out market-driven shipping to merchants on October 1, 2026, and plans to move every store to it by July 1, 2027. Rates attach to markets and collections, and within one shipping option Shopify charges the highest matching rate instead of adding rates together.

That's simpler for customers, but it changes what mixed carts pay. If a cart used to pay a heavy item's rate plus a light item's rate, it may now pay only the heavy item's rate while still shipping in two boxes. After your store switches, rerun the steps above and look closely at orders with more than one label.

Doing it with Shopvibe

Disclosure: Shopvibe is our app. You can follow every step above without it.

Shopvibe does the matching for you. It reads your orders and Shopify Shipping label costs, plus the carrier invoices, 3PL bills and Shopify bills you upload as CSV, PDF or a photo, and puts every order's shipping charge next to everything it cost. Gaps are grouped by destination, shipping method and cause, and setup checks flag products with no weight, orders quoted as one box but shipped in several, and shipping profile gaps.

Shopvibe only reads your store. The Free plan audits 60 days of orders with undercharge, multi-box and setup checks. Launch ($29 a month, 14-day free trial) audits 365 days and adds unlimited uploads, dispute packets, CSV export and a weekly leakage email.

Frequently asked questions

How do I know if I'm undercharging for shipping on Shopify?

Compare what customers paid for shipping with what shipping cost you, per order. Shopify's Shipping labels by order report shows both for labels bought in Shopify. Add label adjustments from your Shopify bills and charges from any carrier or 3PL invoices, because the report leaves them out.

What happens if a Shopify product has no weight?

Shopify treats it as weightless, so weight-based and carrier-calculated rates quote less than the package will cost to ship, and a cart can fall into a lower weight tier than you expect.

Which package does Shopify use for calculated rates?

Your store's default package, unless a single-item order's variant has its own package, or you've set packed product sizes and a saved box fits the items. Items from different fulfillment locations are packed into separate boxes.

Can I add a handling fee to calculated shipping rates in Shopify?

Yes. In the carrier settings you can add a percentage, a flat amount, or both. The percentage is applied first: a $5.00 rate with 50% and $1.00 added comes to $8.50.

Do Shopify checkout rates include carrier surcharges?

Not all of them. Shopify says UPS demand and handling surcharges aren't included in checkout rates, and adjustments the carrier applies after shipping are billed later. Both are costs checkout never charged for.

What is shipping leakage?

The total gap between what checkout charged for shipping and what shipping really cost, added up across orders. It usually comes from many small per-order gaps rather than a few big ones.

How does market-driven shipping change what Shopify charges?

With market-driven shipping, which Shopify began rolling out on October 1, 2026, a cart that matches several rates within one shipping option is charged the highest matching rate instead of the sum. Check carts that mix heavy and light products, since they may now be charged less than they cost to ship.

Sources

Checked on October 22, 2026. Shopify's help center pages don't show update dates, so confirm details in your own admin.

  1. Shopify Help Center, Order reports: shipping labels.
  2. Shopify Help Center, Analytics fields.
  3. Shopify Help Center, Sales reports.
  4. Shopify Help Center, Exporting orders.
  5. Shopify Help Center, Shipping label billing and taxes.
  6. Shopify Help Center, Setting up shipping rates (handling fees, free shipping).
  7. Shopify Help Center, Troubleshooting shipping rates.
  8. Shopify Help Center, Setting up packages.
  9. Shopify Help Center, Shipping profiles and combined shipping rates.
  10. Shopify Help Center, Free shipping discounts.
  11. Shopify Developers changelog, Market-driven shipping now available in feature preview, July 1, 2026.
  12. Shopify Help Center, Duties and import taxes considerations.