Pick the cheapest carrier that still meets the delivery promise, on every order
Updated · By Ecomsellertool editorial team
To pick the cheapest carrier that still meets the promise, run rules before price. Drop every service that cannot make the promised date or cannot carry the parcel. Compare what remains on landed rate: carrier rate, surcharges and fuel, plus the expected cost of a late delivery. Buy the lowest. Ties go to the better on-time record, and unusual orders go to a person.
- UPS and FedEx both reset fuel surcharges weekly. For the week of November 2, 2026, UPS listed 30.25% and FedEx 29.25% for domestic ground, and UPS lists 30.00% from November 9 (checked November 6, 2026).
- FedEx's U.S. Demand Additional Handling surcharge goes from $8.80 to $11.85 per package from November 23 to December 27, 2026.
- The same 14 by 12 by 10 inch box bills at 13 pounds at the 139 divisor UPS uses for Daily Rates, but USPS Priority Mail applies dimensional weight only above 1,728 cubic inches.
- Amazon's A-to-z protection on Buy Shipping needs a Buy Shipping label, an on-time first carrier scan and a reply to buyer messages within 48 hours, and works with your own carrier account.
- ShipStation's Rate Shopper uses the later date when a carrier gives a range and drops services with no delivery estimate, but it compares services, not package types.
The step map: who runs each step
Trigger: An order is ready to ship and has its box, weight and promised delivery date, whether it came from Shopify, Amazon seller-fulfilled or a 3PL queue.
| Step | What happens | Who runs it |
|---|---|---|
| 1 | The workflow collects what the rules need: promised delivery date, ship date, box size and weight, destination type, the product's hazmat and signature flags, and the sales channel. | Rule |
| 2 | The selection rule table runs. Each matching row removes the services that cannot carry this order or cannot make the promised date. If nothing is left, the order goes to the queue. | Rule |
| 3 | Live rates are requested for the services that remain, from your carrier accounts or label software. Amazon orders use Amazon's rate call, so each offer comes back with its benefits. | Rule |
| 4 | The landed rate is worked out for each service: carrier rate, surcharges, fuel and option fees, plus the service's late risk on this lane multiplied by your cost of a late delivery. | Rule |
| 5 | The lowest landed rate wins, with the tie-break from the table. The label is bought and tracking is written back to the channel. The chosen service and the rates it beat are saved on the order. | Rule |
| 6 | A person decides the queued cases: no eligible service, a hazmat flag in doubt, a winner above your cost limit, or an Amazon offer without claims protection. | Person |
| 7 | A weekly report compares what was charged with what was quoted and each service's late rate per lane, then updates the late-risk numbers the formula uses. | Rule |
6 rule steps · 0 AI model steps · 1 person step. A rule follows fixed logic you approve; an AI model handles messy input and its output is checked by rules; a person makes the calls listed below.
What stays with a person
- Orders where no service passes the rules: ship late with a customer message, upgrade at your cost, or split the order
- Hazmat classification of a new SKU, before the rule is allowed to treat it as cleared
- Any winning rate above your cost limit per order, or a loss on the order's margin
- Amazon orders where the only offers on time have claims protection excluded
- Changes to the rule table, the cost of a late delivery and the carriers on the list
Which tools can run it
- ShipStation's Rate Shopper and Automation Rules, for one set of rules across your connected stores
- EasyPost or a similar shipping API called from n8n or Make, when you want rates and transit data in your own workflow
- Custom code on your accounts, for the landed-rate formula, per-channel rules and Amazon's benefit checks in one place
Systems it connects
- Shopify orders and fulfillment
- Amazon Selling Partner API (Orders and shipping)
- USPS, UPS and FedEx accounts, or label software
- 3PL or warehouse system with box sizes and weights
- Carrier invoices and tracking events
- Slack or a helpdesk view for the queue
Build size: Medium
The rate calls are simple; the work is clean box data, a rule table per channel, and tracking history good enough to set late risk per lane.
Someone on your team opens the label screen, sees four rates and clicks the lowest. It works until the cheap service misses a two-day promise, or a light but bulky box gets billed at twice its weight, or a P.O. box order lands on a carrier that cannot deliver there. This recipe replaces that click with rules a person writes once. It runs after order routing has chosen the warehouse and after address validation has cleared the address, right before the label is bought. It is one page of our automation library.
Which rule decides the carrier for each order situation?
Write this table before you connect any rate API. Price is the last step, so each row first removes services that cannot do the job. All matching rows apply, then the formula in the next section ranks what is left. Carrier facts are linked and were checked November 5, 2026; check every service you use against your own agreement. The tie-breaks and limits are examples for you to change.
| Order situation | What the rule checks | What is excluded | Tie-break | When a person decides |
|---|---|---|---|---|
| Promised date is tight | The latest estimated delivery date against the promised date, counted from the real ship date and cut-off | Any service whose latest date is after the promise, or that gives no estimate | Better on-time record on this lane | Nothing passes: upgrade at your cost, or tell the customer |
| Customer paid for a named speed | The service level paid at checkout | Anything slower than what was paid for | Lower landed rate | Only if the paid speed is unavailable |
| Hazmat flag on a SKU | The product's hazard class against each service's rules. USPS calls Ground Advantage its primary option for hazmat mailable only by ground, and warns hazmat packages may get slower service; Publication 52 holds the mailing rules | Every service not cleared for that class, and any air service unless cleared | The service your team has already used for that class | Every new SKU, and any flag in doubt |
| Signature needed | The order's value limit, or a product that needs an adult. FedEx's signature options include adult (21 or older with ID), direct and indirect | Services that cannot add that level; the signature fee goes into the landed rate | Lower landed rate with the fee included | Orders where the buyer asks to drop the signature |
| Oversize or light but bulky | Billable weight from real box dimensions, and each service's size limit: USPS Ground Advantage stops at 70 pounds and 130 inches length plus girth; UPS small package services at 165 inches | Services over their limits; rates quoted without dimensions | Lower landed rate, after handling and oversize charges | Any parcel that could go by freight, or a different box |
| P.O. box | The address line. FedEx does not deliver to P.O. boxes except via FedEx Ground Economy. Priority Mail Express reaches most P.O. boxes, and UPS Ground Saver lists them too | Services that cannot deliver there, including the fast service the customer paid for | Lower landed rate | A paid express order with no eligible fast service |
| APO, FPO or DPO | City and state code. USPS says these ship at domestic prices and often need a customs form; UPS Ground Saver lists them as destinations | Every service your carrier does not confirm for military mail | USPS service unless a person says otherwise | Items with restrictions at that destination |
| Saturday delivery promised | Whether the service delivers Saturday to this address, and the fee. FedEx lists no added charge for Home Delivery on weekends and an added fee on Overnight and 2Day. UPS Ground Saver lists Monday to Saturday | Services with no Saturday delivery to that area | Lower landed rate with the fee included | Saturday not available where the customer was promised it |
| Marketplace needs tracking | The offer's tracking level and the channel's tracking rules. Amazon lists NoTracking as a delivery experience value, and its seller report tracks a valid tracking rate | Any service without tracking that the channel accepts | Lower landed rate | A carrier the marketplace does not recognize |
| Amazon, seller-fulfilled, Buy Shipping | The offer's benefits. Each offer lists included and excluded benefits, such as CLAIMS_PROTECTED excluded with the reason LATE_DELIVERY_RISK | Offers with claims protection excluded | Lower landed rate among protected offers | Only unprotected offers can make the date |
| Nothing passes, or a rate call fails | The count of services left, and whether the carrier answered | Nothing is bought | None | Always, before the ship-by time |
Hazmat is the row where a wrong answer costs far more than a wrong rate. The rule can only exclude services for a SKU someone has classified, so a blank hazmat field should stop the order rather than pass it. Our customs documents recipe handles the separate data check for parcels leaving the US.
How do you work out the landed rate?
The label price is not the cost of the choice. Once the rules have removed services that cannot do the job, compare the rest with one number:
Landed rate = carrier rate + surcharges + fuel + option fees + (late risk × cost of a late delivery)
Late risk is the share of your parcels on that service and lane that arrived after the promise, from your own tracking history. Cost of a late delivery is the money you actually lose: a shipping credit, support time, and a figure you set for the mark on your marketplace metrics. In the table below that cost is $12, made up of a $5 credit, $4 of support time and $3 for metric risk.
Illustrative numbers only. These are not vendor rates, not client data and not a forecast. For example, one 6-pound parcel to a home, with all four services able to make the promised date by estimate. Fuel is shown at 30% of rate plus surcharges to keep the math simple.
| Service (illustrative) | Carrier rate | Surcharges | Fuel | Label cost | Late risk | Late risk × $12 | Landed rate |
|---|---|---|---|---|---|---|---|
| Economy ground | $7.00 | $1.00 | $2.40 | $10.40 | 25% | $3.00 | $13.40 |
| Standard ground | $8.00 | $1.00 | $2.70 | $11.70 | 5% | $0.60 | $12.30 |
| Regional carrier | $9.50 | $0.00 | $2.85 | $12.35 | 2% | $0.24 | $12.59 |
| Two-day air | $16.00 | $1.00 | $5.10 | $22.10 | 1% | $0.12 | $22.22 |
Economy ground has the lowest label by $1.30, yet standard ground wins by $1.10 once lateness is priced in. The result moves with your inputs, which is the point. If a late delivery costs you less than $6.50, economy ground wins. At $12, economy ground wins only if its late risk falls below about 16%. Run the same math on your own lanes before you set a default.
What do fuel, demand surcharges and dimensional weight do to the rate?
They are why a rate table in a spreadsheet goes stale. UPS adjusts fuel weekly on Mondays and listed 30.25% for domestic ground and 34.25% for domestic air from November 2, 2026, then 30.00% and 33.50% from November 9. FedEx listed 29.25% for ground and 33.25% for other domestic package services for November 2 to 8, with new tables from November 9, and says the customer agreement is the final authority (both checked November 6, 2026). Check which charges your agreement applies fuel to, and whether your rate response already includes it.
Peak season adds charges with dates on them. FedEx's Demand surcharges page, updated November 5, 2026, lists Demand Additional Handling at $8.80 per package, rising to $11.85 from November 23 to December 27, and Demand Oversize at $95.75, rising to $117.25 in the same window (checked November 6, 2026). The criteria sit in the FedEx Service Guide, so load them into the rule per service. Other carriers publish their own notices, so read yours before peak.
Dimensional weight is where wrong box data does the most damage. FedEx charges the greater of actual and dimensional weight, dividing cubic inches by 139. UPS uses 139 for Daily Rates and 166 for Retail Rates, and raises any fraction to the next pound. USPS Priority Mail uses 139 too, but only above 1,728 cubic inches (checked November 5, 2026). A 6-pound parcel in a 14 by 12 by 10 inch box is 1,680 cubic inches, so at UPS Daily Rates it bills at 13 pounds, while Priority Mail prices it at 6. Add one inch of length and the box is 1,800 cubic inches, over the USPS line, and it bills at 13 there as well.
What do Shopify, ShipStation and EasyPost already do?
Use them. Most of this recipe is rules on top of what your tools already return, and the gap is usually the same two things: lateness has no price, and the rules live in people's heads. The details below were checked November 5, 2026.
| Tool | What it gives you | Where it stops |
|---|---|---|
| Shopify CarrierService | Real-time rates at checkout from a callback you host, each with optional earliest and latest delivery dates | It sets what the customer sees, not the label you buy. The rate request has item weights in grams but no box dimensions. Needs Advanced or higher, yearly billing, or a paid add-on |
| Shopify carrier-calculated rates | Rates from your own UPS, FedEx or USPS accounts at checkout, plus backup rates if a rate call fails | Same: checkout only |
| ShipStation Rate Shopper | Picks the lowest rate among services you list, within a delivery time. Uses the later date of a range and drops services with no estimate. A Service Preference can override the cheapest by an amount you set | Compares services, not package types. Counts business days, so a Saturday service is treated like one delivering by Monday. Customizing depends on your plan |
| EasyPost Shipments and SmartRate | Rates per carrier account on a shipment, and transit times by percentile with a delivery date confidence score from 0 to 1 | You still choose the rule. SmartRate's documentation does not give selection criteria |
Note the two moments on Shopify. Checkout decides what the customer pays and expects. The label decides what you pay. Our Shopify-to-3PL recipe carries the promise from one to the other, and on a ShipStation account our ShipStation integration page shows what we add around it. A brand that sells on one channel with one warehouse can often stop at ShipStation's rules with a Service Preference.
How does Amazon Buy Shipping change the rule?
It adds a protection to weigh, so an Amazon order does not get the same math as a Shopify order. Amazon's Buy Shipping page says it filters out methods that do not deliver on time reliably, using transit time, ship date and the promised date. For A-to-z claim protection, it says you must buy the label through Buy Shipping, ship on time (the moment of the carrier's first scan) and answer buyer messages within 48 hours. It also says you can connect your own carrier account and keep that protection (all checked November 5, 2026).
For builders, Amazon's Merchant Fulfillment API page points new integrations to Shipping API v2. In the Shipping API v2 reference, a rate carries a promise with pickup and delivery windows, and Amazon-channel shipments are the ones eligible for Buy Shipping protections, while EXTERNAL shipments are not and must be bought within 10 minutes of the rate. If you are still on Merchant Fulfillment, Amazon's fulfillment guide says to take the ship date from LatestShipDate and to leave out MustArriveByDate, because it limits the offers returned. It also says createShipment starts the payment, so the rules must finish before that call (checked November 5, 2026).
Those pages do not cover everything. Amazon's detailed on-time delivery rules sit behind the Seller Central login, so we state no thresholds here. Read your own targets instead: the seller performance report returns late shipment, valid tracking and on-time delivery rates, each with a target value, through the Selling Partner API (checked November 5, 2026). Set your Amazon cost of a late delivery higher when those rates are near their targets. Prime offers you ship yourself have tighter weekly lines, which our Seller Fulfilled Prime alerts track.
How do you know the rules are working?
Three numbers, reviewed weekly. Quoted rate against invoiced rate per carrier: a steady gap usually means the box data is wrong or a surcharge is missing from the rule. Late rate per service and lane: this feeds the formula, and a service that slips in peak season should lose orders on its own. Share of orders reaching the queue: if a person is seeing more than a few a day, a rule is too strict or a box size is missing.
This recipe stops when the label is bought. After that, our shipping exception alerts handle parcels that stall and carrier claims handle lost or damaged ones; the delays they log are what update your late-risk numbers.
Who builds carrier rate shopping into the order flow?
Ecomsellertool builds workflow automation on your own store, marketplace and carrier accounts. We have built on Amazon's seller APIs since 2017 and shipped 50+ tools for 100+ teams. For rate shopping we write the rule table and your cost of a late delivery with you, then connect the rates, the label and the queue. Send a project brief or see how our workflow automation service works.
The building blocks are work we have shipped:
- Carriers, rate cards and routing rules in one place. For Ecom Global, built for 100M+ products, 20+ marketplaces and 13+ carriers, we built a shipping master holding carrier types, country coverage, rate cards and routing rules, so an order from Amazon Canada can flow to the cheapest eligible last-mile carrier.
- Orders from every channel in one list. For Seller7 we built one order list across Amazon, Walmart, Target Plus, Shopify and Mirakl, with a single Process Order button in place of the back-and-forth between seller centrals.
A custom build can run on Ecomsellertool Growth OS beside your other order flows, so the rule table, the formula and the log live in one place.
Get your carrier rules built
Send us your carriers, your channels and your delivery promise
Describe the workflow you want automated. We reply with a written plan: scope, timeline and a fixed price.
Frequently asked questions
What is the difference between rate shopping and order routing?
Order routing decides which warehouse or 3PL ships the order. Rate shopping runs after that and decides which carrier and service take the parcel from that warehouse. If you rate-shop before you know the origin, the rates are wrong, because distance changes the price and the transit time.
Is the cheapest shipping label always the cheapest choice?
No. The label price leaves out what a late delivery costs you: a shipping credit, support time and any mark on your marketplace metrics. In the illustrative table on this page, the service with the lowest label cost is more expensive on landed rate, because its late risk is five times higher. Use your own numbers before you trust the result.
How do I estimate the late risk for a carrier service?
Start with your own tracking history. For each carrier service and destination zone, divide parcels delivered after the promised date by all parcels delivered, over the last 60 to 90 days. Where you have too few parcels, use a transit estimate such as EasyPost's delivery date confidence score until your own history builds up, and review it weekly during peak season.
Can Shopify's CarrierService API pick the carrier for me?
It handles a different moment. A carrier service gives Shopify real-time rates to show at checkout, from a callback you host. It does not buy the label. So you still need a rule at label time to choose the actual service, and the rate request does not include box dimensions, so your callback has to work out the box from the items.
Do I have to use Amazon Buy Shipping on seller-fulfilled orders?
We could only read Amazon's public Buy Shipping page and developer documentation, not the signed-in Seller Central rules, so check your account's rules for your program. Those pages say A-to-z protection needs a Buy Shipping label, an on-time first carrier scan and a reply to buyer messages within 48 hours, and that you can connect your own carrier account and still get it.
How often should the rates and surcharges be updated?
Ask for live rates at label time, rather than keeping a rate table, wherever you can. UPS and FedEx both adjust fuel surcharges weekly, and FedEx lists Demand surcharges that change on set dates in peak season. If you must keep a table, refresh fuel every week and compare quoted rates with carrier invoices, since the invoice is where a wrong box size shows up.
