Carrier-calculated shipping rates are Shopify's mechanism for showing real-time shipping prices at checkout. Instead of flat rates or weight-based tables, the checkout queries carrier APIs and returns live quotes based on the actual shipment details. It's the most accurate approach to checkout shipping — when configured correctly. The problem is that most merchants get the configuration wrong, and the rates end up just as inaccurate as the flat rates they replaced.
What are carrier-calculated shipping rates?
Carrier-calculated shipping rates (sometimes called "real-time carrier rates" or "live rates") are shipping prices generated by querying carrier APIs at the moment of checkout. When a customer enters their shipping address, Shopify sends the shipment details to a carrier service, which returns the available shipping options and prices.
This is fundamentally different from the three common alternatives:
Flat rate shipping: Every customer pays the same amount regardless of destination, weight, or package size. Simple to configure, but structurally inaccurate — you'll overcharge some customers and undercharge others.
Weight-based rate tables: Rates change based on order weight, sometimes by zone. More accurate than flat rates but still miss dimensional weight, which is the single biggest source of shipping rate error for most merchants.
Free shipping thresholds: You absorb the full cost of shipping above a certain order value. This isn't a rate calculation — it's a marketing decision. You still need to know what shipping actually costs to set the threshold profitably.
Carrier-calculated rates solve the first-order accuracy problem by using real carrier data instead of estimates. But they introduce a second-order problem: they're only as accurate as the package information you send to the carrier.
How Shopify carrier-calculated rates work
When a customer reaches checkout on a Shopify store with carrier-calculated rates enabled, the following sequence occurs:
Step 1: Shopify collects the cart contents (item weights, quantities) and the customer's shipping address.
Step 2: Shopify sends this information to the connected carrier service(s). This might be Shopify's built-in carrier integration, a third-party app like PackOS, or a custom API endpoint.
Step 3: The carrier service determines the package details (dimensions, total weight), queries one or more carrier APIs (USPS, UPS, FedEx), and returns the available rates.
Step 4: Shopify displays the returned rates to the customer at checkout.
The critical variable in this entire flow is Step 3: how the carrier service determines the package details. If it uses accurate box dimensions and weight, the returned rate will match what you'll actually pay for the label. If it guesses — and most default configurations do guess — the rate will be wrong.
Shopify's built-in carrier-calculated rates use the item weights from your product catalog but don't perform bin-packing to determine the box. They either use a default package size you've configured or make assumptions about how items fit together. This is where the inaccuracy enters.
The box problem: why carrier-calculated rates are still wrong
The accuracy of any shipping rate depends on two inputs: weight and dimensions. Carrier-calculated rates get the weight approximately right (by summing item weights) but almost always get the dimensions wrong.
Consider a real example: a customer orders three items — a candle (4"×4"×6", 1.2 lbs), a mug (5"×5"×5", 0.8 lbs), and a coaster set (6"×6"×1", 0.5 lbs). Total weight: 2.5 lbs.
Without bin-packing, the carrier service doesn't know which box these items will ship in. Common approaches include: using a default box size (say, 12"×10"×6"), treating each item as a separate package, or estimating based on total item volume.
With bin-packing, the system evaluates your actual box library — the boxes you have in your warehouse — and determines that these three items fit best in a 10"×8"×7" box. The rate is calculated using this exact box.
The difference matters because carriers charge by dimensional weight for larger boxes. A 12"×10"×6" box has a dimensional weight of 5.1 lbs (at UPS's 139 divisor). A 10"×8"×7" box has a dimensional weight of 4.0 lbs. On a zone 5 UPS Ground shipment, that 1.1 lb dimensional weight difference costs about $1.40. Scale that across hundreds of orders per month and the inaccuracy adds up fast.
This is the core problem PackOS Checkout solves. It runs a bin-packing algorithm at checkout that evaluates your real box library and selects the optimal box before querying carrier APIs. The rate the customer sees is based on the actual box — not a guess.
Setting up carrier-calculated rates on Shopify
Shopify offers carrier-calculated rates through two mechanisms:
Built-in carrier rates: Available on Advanced Shopify and Shopify Plus plans. You connect your USPS, UPS, or FedEx account directly through Shopify, configure default package dimensions, and rates appear at checkout. This approach works but doesn't include bin-packing — you set a single default package size and all rates are calculated using that size.
Third-party carrier services: Apps like PackOS register as a carrier service with Shopify. When checkout occurs, Shopify calls the app's rate endpoint. The app can perform any calculation it wants — including bin-packing — before returning rates. This is more flexible and typically more accurate.
To use carrier-calculated rates effectively with either approach, you need to ensure your product catalog has accurate weights for every item. Without accurate weights, no rate calculation — no matter how sophisticated — will produce correct results. Go through your catalog, weigh each product with packaging materials included, and update the weights. This single step eliminates the most common source of rate errors.
If you're using Shopify's built-in carrier rates, set your default package to the most commonly used box size in your operation. This won't be perfect for every order, but it minimizes the average error.
If you want accuracy on every order, use a carrier service app with bin-packing — like PackOS. Define your box library (the actual boxes you stock), enter accurate item weights and dimensions, and the bin-packing algorithm handles box selection on every checkout.
Carrier-calculated rates vs flat rates: when to switch
Not every Shopify store needs carrier-calculated rates. The decision depends on your order mix variance.
If you sell a single product in a single size that always ships in the same box to domestic customers, a flat rate based on your average label cost will be accurate enough. The variance is low, so the average is a good proxy.
If your orders vary in size, weight, destination, or item count, flat rates will create systematic winners and losers. Some customers get undercharged (you lose money), others get overcharged (they abandon their cart). The wider the variance, the more a flat rate costs you.
The breakeven point depends on your order mix; merchants shipping a varied catalogue with several box sizes are the ones who feel the gap most.
You can estimate your current margin loss by pulling a recent batch of orders, calculating the difference between what customers paid for shipping and what the labels actually cost, and extrapolating. If the average gap is negative, or thinner than you assumed, carrier-calculated rates are worth testing against your own numbers.
Making carrier-calculated rates accurate with PackOS
PackOS Checkout integrates with Shopify as a carrier service and adds the missing piece that makes carrier-calculated rates truly accurate: bin-packing box selection.
Here's what happens on every checkout: PackOS receives the cart contents (items with weights and dimensions), runs a bin-packing algorithm against your box library to find the optimal box, queries USPS, UPS, and FedEx APIs with the exact box dimensions and total weight, and returns the live rates to Shopify checkout.
The result is a checkout rate that matches the label cost — because the same box dimensions are used for both calculations. When you buy the label through PackOS Labels, there's no gap between what the customer paid and what you pay.
This is the difference between "carrier-calculated rates" as a concept (query a carrier API) and carrier-calculated rates done right (query a carrier API with accurate box dimensions from bin-packing). The first is available on any Advanced Shopify plan. The second requires a tool like PackOS that brings bin-packing into the checkout flow.
