Skip to main content
CRO

Surprise Checkout Costs: Why Shoppers Leave Their Carts

Shipping, duties and fees revealed late are a leading reason shoppers abandon Shopify carts. Where to show total cost, how to test it and measure it in GA4.

November 3, 2026 17 min read Talha Butt.
Share

Surprise Checkout Costs: Why Shoppers Leave Their Carts

Quick answer: Shoppers abandon carts when the total at checkout is higher than the one they had in their head. In Baymard Institute’s latest list, extra costs (shipping, tax, fees) is the largest reason for abandonment once the “just browsing” group is set aside, at 40%. The fix is to show the likely total earlier: shipping rules on the product page, a free-shipping threshold in the cart, duty and tax terms before checkout, and no fee that first appears on the last step. Then test the change and measure it by device in Shopify and GA4.

Most cart abandonment advice starts with a recovery email. That treats the symptom: if a shopper left because the shipping line was more than they expected, the email is a second attempt at the same surprise.

This guide is about the cause: the four ways a cost becomes a surprise on a Shopify store, where to show the total cost, how to test a change and how to measure it in Shopify and Google Analytics 4 (GA4). The Australian angle: the card surcharge ban from 1 October 2026 removed one surprise cost, but shipping, GST and duty surprises remain, and the consumer law on “drip pricing” is changing.

I will not promise a lift. Nobody can say what showing shipping earlier will do to your conversion rate. What I can give you is a way to find out on your own store.

What the research says, and what it does not

The figures quoted most often come from Baymard Institute, which publishes a cart abandonment page built from its own research. As at 30 October 2026, that page gives these numbers:

  • The average cart abandonment rate is 70.22%, calculated from 50 studies. The page was last updated on 22 September 2025.
  • 42% of US online shoppers have abandoned a cart because they were just browsing or not ready to buy. Baymard sets that group aside and shows the distribution of the remaining reasons.
  • Among the remaining reasons, extra costs (shipping, tax, fees) is the largest, at 40%.

Here is the cost-related part of the list, with the reasons that sit next to it:

Reason on Baymard’s listShareWhat to check on your store
Extra costs too high (shipping, tax, fees)40%Shipping, tax and fee lines that first appear at checkout
Delivery was too slow20%Delivery dates next to shipping prices
Could not see or calculate the total order cost up front12%Whether any page before checkout shows a total
Returns policy was not satisfactory13%Returns terms visible before the cart

Three honest limits on those figures:

  1. The page does not publish the survey question or the sample size. It links to a separate paid study.
  2. The percentages add up to well over 100%. Read each as “the share who gave this reason”, and do not add the 40% and the 12%.
  3. It records why people say they left, not what would have made them buy. Someone who blames shipping may have been price-comparing and never intended to order.

Much abandonment is not recoverable either. Baymard itself says a large share is a natural result of how people browse: window shopping, comparing, saving for later.

Baymard also states that better checkout design could recover about $260 billion in orders across the US and EU, derived from a 35.26% conversion increase applied to combined ecommerce sales of $738 billion. That is Baymard’s own model for two whole economies, not a forecast for your store. And where blogs say “the number one reason”, note that on Baymard’s list it is the largest item once “just browsing” is excluded. I use that narrower version here.

The four ways a cost becomes a surprise

A cost is a surprise when the shopper learns it later than they expected. A$9.95 shipping shown on the product page is information. The same A$9.95 first appearing on the last step is a reason to leave.

1. Shipping shown late

On Shopify, shipping rates are worked out at checkout. Shopify’s shipping strategy page lists three approaches: flat rate, free shipping and carrier-calculated rates. It suggests putting a table of flat rates on your shipping page so customers can check before checkout. For carrier-calculated rates it says you cannot surface the cost before checkout, and that this can cause unexpected shipping costs and abandoned purchases. Shopify names the problem itself.

There is a nuance. Shopify’s Cart API reference documents endpoints that return shipping rates for a cart and a destination (it calls the direct one “estimated”), which a developer or app can use to build a cart estimator. Whether that works on your theme, markets and carrier setup is something to test, and it is an estimate, not a quote.

Decision rule: with flat rates there is no excuse for a surprise, so show the rate and threshold on the product page and in the cart. With carrier-calculated rates, show a “from” figure or delivery range and what it depends on, and ask whether a flat or banded rate would be simpler for you and the shopper.

2. Free-shipping thresholds only visible in the cart

A threshold such as “free shipping over A$100” is a good lever because it gives shoppers a reason to add one more item. Discovered only in the cart, it works against you: the shopper meets the charge before learning how to avoid it.

Shopify’s help centre explains how thresholds work. A shipping rate can be made free above a minimum order amount. For the separate free shipping discount, the minimum purchase counts product prices only, never taxes, and products are counted at their discounted price.

That creates a trap to check. An illustrative example, with made-up numbers:

  • Free shipping applies at A$100 and flat shipping is A$9.95.
  • A shopper builds an A$104 cart. A progress bar that reads the pre-discount subtotal says free shipping is unlocked.
  • A 10% welcome discount then applies, so the discounted subtotal is A$93.60. If your threshold is a free shipping discount, the discounted price counts, so the order falls below the threshold. A$9.95 appears at checkout and the total becomes A$103.55.

The shopper expected to pay A$93.60, and the final price is about 10.6% higher. Whether your setup counts the discounted price depends on how the threshold is built (a rate condition, a discount or an app), so test it with a real discount and cart.

Decision rule: the number in the progress bar or banner must come from the same calculation that decides whether shipping is charged. If they can disagree, shoppers will find out at checkout.

3. Duties and import taxes charged on delivery

If you ship internationally, the surprise can arrive after the sale. Shopify’s help centre says customers might be charged duties and import taxes when their shipment arrives, and that you can instead collect an estimate at checkout so customers avoid surprise charges.

What matters for a founder, from Shopify’s pages on charging duties:

  • Amounts collected at checkout are estimates. If product information such as HS codes is wrong, the customer may be charged extra on delivery.
  • If you collect at checkout and use shipping labels, you need a carrier that supports delivered duty paid (DDP) labels. Collect without DDP and a customer may be charged again.
  • Orders with duties calculated at checkout carry a transaction fee. Shopify’s page lists 0.85% or 1.5% depending on your payment setup, and notes a temporarily lowered 0.5% from 2 February 2025. Check the current figure before you work out margin.
  • In Shopify Markets you choose how tax shows at checkout (included in the total or as a separate line), and whether you pay duties yourself by including them in your prices.

One US change to check. The US Customs and Border Protection (CBP) fact sheet says that from 29 August 2025, imported goods from all countries valued at US$800 or less no longer qualify for duty-free “de minimis” treatment and are subject to all applicable duties, taxes and fees. CBP’s e-commerce FAQ, last modified on 2 September 2026, says the suspension covers low-value merchandise arriving by all modes. So an Australian store that once shipped small parcels to US customers duty-free should check, as at 30 October 2026, what the carrier now charges the customer, and whether to collect an estimate at checkout. Rules have changed more than once, so confirm with your carrier or a customs broker. This is not customs or legal advice.

4. Handling, minimum-order and other fees on the last step

The fourth surprise is the fee that is not shipping: handling, small-order, “service” or packaging charges. Shopify lets you add a percentage or fixed amount to carrier-calculated rates for packaging and handling, which is a legitimate way to recover cost. The question is whether the shopper sees it inside the shipping price they were told, or as a new line on the last step.

Google’s Merchant Center checkout requirements say mandatory fees must be clearly shown, that non-government fees charged during checkout must be disclosed in Merchant Center (service, handling and carrier fees belong in the shipping value), and that the price must not increase at checkout. If you run Shopping listings, a surprise cost is also a feed problem.

Decision rule: if a fee is mandatory, fold it into the price or shipping rate and name it plainly. If it is optional, keep it optional and off by default. If you cannot explain it in one sentence, remove it.

Where to show the total cost

Three moments, each answering a different question. The early answers set the expectation checkout confirms.

On the product page

Answers “what will this really cost me?” Add one line near the add-to-cart button, in text a shopper can read without opening anything: “Free shipping over A$100, otherwise A$9.95. Delivery in 3 to 6 business days.” Our product page CRO checklist covers where it sits among the other trust elements. If you ship to Australia and overseas, show the line that matches the shopper’s market; our guide to shipping and returns messaging for Australian stores covers the wording.

In the cart or cart drawer

Answers “how close am I to the total?” A progress bar (“You are A$18 away from free shipping”) turns a rule into a small goal. Rules that make it work:

  • Make the gap reachable. If most carts are A$60 and the threshold is A$250, the bar will be ignored. Your order data shows where the threshold should sit.
  • Make it truthful. It must use the real shipping calculation, including when a discount applies.
  • Keep it in text as well as colour, and do not push the checkout button off a phone screen. Check at 375px wide; our mobile conversion guide covers common layout problems.
  • Show an estimate if you can, labelled as one. “Shipping to 3000: from A$9.95” removes uncertainty. If you cannot be exact before the address is known, show a range or the maximum.

At checkout

Answers “is this what I was told?” The job is consistency: shipping options match what was promised, delivery dates sit next to prices (Baymard has slow delivery at 20%, so a cheap option with no date can put people off), and no new type of fee appears. Walk the checkout on mobile with a real address, a real code and every shipping option, as in our checkout leakage audit.

The Australian angle

Australian founders have three things to check, and one has just changed.

The card surcharge ban removed one surprise

According to the Reserve Bank of Australia (RBA), from 1 October 2026 the three designated card networks, eftpos, Mastercard and Visa, each introduced “no-surcharge” rules. The RBA’s FAQ on the removal of card payment surcharges adds that American Express, UnionPay and PayPal have also decided to remove surcharging, and that the rules will generally apply to all credit, debit and prepaid cards of those networks.

Using the RBA’s own words as the limit:

  • The rules cover card payment surcharges only. They do not apply to weekend surcharges, public holiday surcharges, or booking or service fees, and a surcharge that applies regardless of payment method is not a card payment surcharge.
  • Businesses can still reflect card costs in their overall prices, and can still offer discounts for particular payment methods.
  • The RBA says it does not currently regulate surcharges on non-card payment methods. Its FAQ does not mention buy-now-pay-later or Diners, so do not assume either way.
  • The card networks, not the RBA, are ultimately responsible for compliance. Merchants deal with their acquirer or payment provider.

If your store ever added a card fee at checkout, check with your provider that it is off, and that nothing in your theme or apps still adds one. Our article on the RBA card surcharge ban for Australian Shopify stores goes through it. Regulation removed one last-step surprise, only that one. A store that rebuilds lost margin through higher shipping or a renamed fee recreates the problem.

GST and import charges on cross-border orders

The Australian Taxation Office (ATO) says that when consumers buy low value imported goods, GST may be included in the advertised price or added at checkout, depending on the seller, and is calculated on the delivered price including shipping and insurance. For goods with a customs value above A$1,000, GST is payable at the border and the buyer may also need to pay customs duty. If you sell to Australians from an overseas warehouse, or compete with stores that do, how GST appears is part of the price a shopper compares. State it the same way on every page.

The consumer law is moving towards “show it upfront”

I am not a lawyer and this is not legal advice. It tells you where to look.

The Australian Consumer Law already has a single-price rule in subsection 48(1) (the Parliamentary Library’s digest calls it the “component pricing” rule), and the Australian Competition and Consumer Commission (ACCC) has acted on drip pricing, which it describes as adding extra fees and charges to the initial price throughout the online checkout process. On 15 March 2024 the Federal Court ordered the online florist Bloomex to pay $1 million in penalties for breaches that included not adequately disclosing a website surcharge of $1.95 to $4.95. ACCC Commissioner Liza Carver said businesses must be upfront and clearly disclose the total price, including what types of fees will apply.

The law is changing further. On 2 July 2026 the Government announced that the Competition and Consumer Amendment (Unfair Trading Practices) Bill 2026 had passed Parliament, with unfair trading practices and subscription traps banned from 1 July 2027 after a 12-month lead time. The Parliamentary Library’s digest describes the drip pricing part this way: a business offering goods or services at a base price must disclose any applicable transaction-based charge alongside that price where it can be calculated, or disclose the method where it cannot. Optional charges, and taxes, duties, fees, levies or charges imposed on the supplier, are not transaction-based charges, and the rule is for goods ordinarily bought for personal or household use, not offers to businesses.

Two cautions. The digest describes the Bill as introduced, so check the final Act and ACCC guidance for exact definitions, and ask your adviser whether a particular delivery or handling charge counts. What helps conversion is also the safe direction: show mandatory charges next to the price, early, in plain words. No layout in this guide should be treated as compliant by itself.

How to test it

Showing cost earlier is a hypothesis. It can raise conversion by removing a surprise, or lower it by putting a number in front of shoppers sooner.

Pick one change and write the numbers down first

Good first tests, in the order I would usually try them: a shipping and delivery line on the product page; a free-shipping progress bar in the cart, with a threshold you can afford; a shipping estimate in the cart for stores with calculated rates; then a change to the shipping structure itself. Test one at a time, or you will not know which did anything.

Before you start, record:

  • Primary metric: checkout conversion (completed checkouts out of sessions that reached checkout), or overall conversion rate, by device.
  • Guardrails: average order value, gross margin after shipping, support emails about shipping, refund and return rate.
  • Segments: mobile and desktop at least, and Australia against overseas if you sell to both.
  • Baseline: four to six normal weeks without a sale.

Do the margin arithmetic first

A free-shipping threshold can win conversion and still lose money. Illustrative arithmetic, made-up numbers:

  • Your average order is A$72 and you charge A$9.95 shipping, which roughly covers your carrier cost.
  • You set free shipping at A$90, so a typical shopper must add A$18 of product.
  • At a 55% gross margin, A$18 of product brings about A$9.90 of gross margin, roughly the shipping you now absorb. That order breaks even on shipping, and any order already above A$90 now costs you A$9.95 it did not before.

A threshold pays when enough shoppers add items to cross it, and loses when the benefit goes to orders that would have been large anyway. Check your own order distribution first.

Choose the method your traffic supports

With enough traffic, run a proper A/B test: half of visitors see the new version, half the old, at the same time. As a rule of thumb, you want a few hundred conversions per version before a result means much, run in whole weeks. Our guide to A/B testing on a low-traffic Shopify store covers what to do when you cannot reach that.

Failing that, a before-and-after comparison is still useful: equal periods, no sale weeks, everything else that changed written down. Report the result as “alongside the change”, not “because of it”.

How to measure it in Shopify and GA4

You want to see where in the journey shoppers leave, before and after the change, by device.

In Shopify

Shopify’s behaviour reports include a Conversion rate breakdown (the funnel) and Conversion rate over time. The funnel steps are all sessions, sessions with cart additions, sessions that reached checkout, and sessions that completed checkout. Shopify defines “reached checkout” as a session with user input during checkout, such as a key press or mouse click. The funnel can be open (visitors enter at any step) or closed (only those who complete every step in order). If the surprise sits in the cart or at the start of checkout, watch cart addition to reached checkout, and reached checkout to completed checkout.

A measurement warning for this quarter. Shopify’s session measurement update rolled out from 21 to 23 September 2026. Sessions now end after 30 minutes of inactivity instead of at midnight UTC, some sessions without a pageview are counted, and identified bot sessions are filtered out by default. Shopify says conversion rate is calculated from sessions, so it can change when orders and sales have not, and a higher or lower rate after the update is not automatically good or bad. If your baseline is before late September and your test is after, part of the difference is the measurement change. Take the baseline after the update, and compare orders and revenue per visitor too.

In GA4

GA4’s Checkout journey report is a closed funnel with four steps, populated by the begin_checkout, add_shipping_info, add_payment_info and purchase events. It sits under the Monetization topic in the Life cycle collection. Google’s help page says Shopify collects begin_checkout, add_payment_info and purchase automatically, but you must set up add_shipping_info yourself to get the report’s data. The report segments by device category by default.

Two practical points:

  • Check the events before you trust the funnel. If add_shipping_info is missing, the “Add shipping” step is empty or wrong. The event’s value excludes shipping and tax, which matters when you compare GA4 revenue with Shopify; our guide to GA4 against Shopify Analytics covers why the numbers differ. It is also why the first phase of our CRO audit includes a tracking check.
  • Read the funnel as a clue, not a verdict. A large drop between begin checkout and add shipping tells you people left around the address and shipping step. It does not prove the shipping price caused it.

Measures that do not come from a funnel

  • Session recordings. Watch sessions that reach checkout and leave: do they scroll back to the cart or open the shipping page? A tool such as Microsoft Clarity shows this, and our guide on reading session recordings explains what to look for.
  • A one-question survey (“Was there anything that nearly stopped you from ordering today?”) and support emails about shipping cost, delivery times or duties. Answers are noisy, but a pile of “shipping” is a signal.
  • Order data: average order value, orders above and below the threshold, and shipping revenue against shipping cost.

Where recovery emails and ads fit

Showing cost early reduces the number who leave for that reason. Abandoned-cart emails recover some who leave anyway: our guide to the abandoned cart flow in Klaviyo covers how to build one. We do not run email or ads at Prism3; we work on what happens after the click. If you pay for the visit, a cost surprise at checkout is a leak you are paying to fill.

The self-audit checklist

Work through these on your own store, on a phone, with a real cart.

Product page

  1. Can a shopper see the shipping price (or a “from” price) without leaving the page or scrolling past the buy button?
  2. Is the free-shipping threshold stated, with the amount?
  3. Is a delivery estimate shown, and does it match checkout?

Cart or cart drawer

  1. Does the cart show subtotal, any discount applied, and shipping status or an estimate?
  2. Does the progress bar use the same rule as the real threshold, including with a discount applied?
  3. Is any estimate labelled as an estimate, and does anything change the total without the shopper being told (an auto-added product, a pre-ticked option)?

Checkout

  1. Place a test order with your most common code, an Australian address, an overseas address and each shipping method. Does the checkout total match what the cart implied?
  2. Does any new type of fee (handling, packaging, small order, service) first appear at checkout?
  3. Are delivery dates shown next to every shipping option?

International and fees

  1. Do you collect duties and import taxes at checkout, or can a customer be charged on delivery? If you collect, are HS codes accurate and are you using DDP labels?
  2. For US parcels, have you checked the carrier’s current charges since the de minimis change?
  3. Is every mandatory fee in the price or shipping rate and named plainly, and do feed shipping rates match checkout if you run Shopping listings?
  4. Has any card surcharge been removed from your store, theme and apps?

Measurement

  1. Is add_shipping_info firing in GA4, and does the Checkout journey report show all four steps?
  2. Do you have a baseline from after Shopify’s September 2026 session update, split by device?

If you can only do five, do 1, 4, 5, 7 and 14. My order for fixing what you find, from judgement rather than any study: make the cost visible before it is charged, fix any mismatch between a bar and checkout, remove or rename last-step fees, sort out duties if you ship overseas, and only then test the threshold.

Want a second pair of eyes on your answers? Book a free 30-minute diagnostic.

Key takeaways

  • Cart abandonment averages 70.22% across 50 studies in Baymard’s list (last updated 22 September 2025), but much of it is browsing, not a fixable problem.
  • Among the remaining reasons, extra costs (shipping, tax, fees) is the largest at 40%. The page gives no question wording or sample size, so treat it as a strong pointer, not a precise measure.
  • A cost becomes a surprise through timing: shipping shown late, a threshold seen only in the cart, duties charged on delivery, or a fee on the last step.
  • Show the likely total on the product page, in the cart and at checkout, and make every threshold bar follow the real shipping rule, including with a discount applied.
  • The card surcharge ban removes one last-step fee. Shipping, handling and cross-border charges are untouched, and the Unfair Trading Practices law starts on 1 July 2027.
  • Test one change at a time, record guardrails, measure by device, and allow for Shopify’s September 2026 session update. Report results as alongside the change, never as a guaranteed lift.

FAQs

Why do shoppers abandon carts on Shopify?

For many reasons, and some never intended to buy: Baymard’s list shows 42% of US online shoppers have abandoned a cart because they were just browsing. Among the remaining reasons, extra costs (shipping, tax, fees) is the largest at 40%, ahead of slow delivery at 20%. That is a US survey, not Shopify store data, so check your own funnel.

Is shipping cost really the top reason for cart abandonment?

It is the largest reason on Baymard’s list once “just browsing” is set aside, at 40% as at 30 October 2026. That is narrower than “the number one reason”, and the page gives no question wording or sample size. Check your own store before assuming shipping is your problem.

Should I show shipping costs on the product page?

With flat or banded rates, yes: the price, the threshold and a delivery estimate near add to cart. With carrier-calculated rates, Shopify says you cannot show the exact cost before checkout, so show a “from” price or range, or test a cart estimator and label it as an estimate.

Does the card surcharge ban mean there are no surprise costs in Australia now?

No. According to the RBA, card payment surcharges were removed from 1 October 2026, but the rules do not apply to weekend or public holiday surcharges, or booking or service fees. Shipping, handling, GST and duty surprises are not covered. This is not legal advice.

How do I measure whether showing costs earlier worked?

Record a baseline first, then compare by device in Shopify’s Conversion rate breakdown and GA4’s Checkout journey (set up add_shipping_info yourself). Add guardrails such as average order value and margin, and allow for Shopify’s September 2026 session change.

Want to know where your store loses people between cart and checkout?

If shoppers reach your cart and leave, the cause may be a cost they met too late, tracking you cannot trust or a mobile layout that hides the buy button. Our Shopify CRO service starts with a six-phase audit of where the funnel leaks. To see where yours loses people, book a free 30-minute diagnostic or tell us about your store: we share your Shopify store on screen and name two or three conversion leaks live, and tell you whether they are worth fixing. No pitch.

Free 30-min diagnostic

Seen enough?
Book a free diagnostic.

We'll identify exactly what's breaking your conversion rate and what to fix first. No pitch. No email gate. 30 minutes.

More from Prism3