Around 70% of online shopping carts are abandoned — the Baymard Institute's figure, aggregated across dozens of studies, lands near that mark and is worth treating as a commonly cited benchmark rather than a law of physics. Your own number depends on your traffic, your prices, and how rough your checkout is. But the headline percentage isn't the useful part. The useful part is that abandonment is not random: the same handful of reasons show up study after study, customer after customer, and almost all of them are fixable from your PrestaShop back office.
This post is the catalogue of those reasons — twelve concrete ones, ranked roughly by how often they're blamed, each paired with the specific PrestaShop setting, step class, or module that addresses it. Some of these reasons are deep enough to deserve a whole article; where that's the case, you'll find a one-line link to the sibling that owns the subject rather than a rushed rehash here. If you'd rather work the fixes as a single ordered strategy instead of a list, start with the pillar: reducing cart abandonment in PrestaShop.
1. Unexpected shipping or tax at the final step
The most frequently blamed trigger in stated-reason surveys, by a wide margin: a customer mentally commits to a €50 product, reaches the payment step, and watches the total jump to €62 because shipping appeared for the first time. The deal they thought they were getting evaporates.
The PrestaShop fix. Make the total honest as early as possible. Set your free-shipping threshold natively under Shipping → Preferences (the Free shipping starts at value) rather than faking it with a cart-rule voucher — PrestaShop then knows the threshold and the cart can surface a real "spend X more for free shipping" prompt. Set your tax rules under International → Taxes, and control whether prices show tax-included or tax-excluded per customer group under Shop Parameters → Customer Settings → Groups (the Price display method setting), so displayed prices match what the customer actually pays; for EU B2C, tax-inclusive display is both the legal default and the only honest one, so the cart total never leaps at checkout. The deeper move — showing a realistic shipping figure before the customer even types an address — is a checkout-design problem covered in why your checkout page is losing you sales.
2. Forced account creation
Consistently among the top abandonment causes, and the easiest of all to fix in PrestaShop. A shopper came to buy a product, not to enter into a relationship with your store; a mandatory password field reads as "more work, and now you have my data forever."
The PrestaShop fix. One toggle: Shop Parameters → Order Settings → Enable guest checkout. With it on, the CheckoutPersonalInformationStep offers an order-as-guest path instead of demanding a password up front, and you can still invite the customer to save their details into an account after the order completes — capturing most of the retention benefit without the friction. Whether guest should be the default or merely an option isn't a coin flip; there's data behind it, laid out in guest checkout vs account creation.
3. A long or stepped checkout
Every additional gate is a fresh chance to think "this is too much effort." PrestaShop's default checkout since 1.7 lives on a single URL but reveals itself one step at a time — personal information, then addresses, then delivery, then payment — and each is its own step class (CheckoutPersonalInformationStep, CheckoutAddressesStep, CheckoutDeliveryStep, CheckoutPaymentStep) driven by the order controller. One page, four gates.
The PrestaShop fix. Collapse the gates into a genuine one-page flow — everything visible at once, the total recalculating live. The native toggle that 1.6 had under Preferences → Orders (the PS_ORDER_PROCESS_TYPE config value) was removed in 1.7, so on a modern store this means a module or, from 9.2, core's own native one-page option. The full treatment is in one-page checkout for PrestaShop.
4. The total isn't visible until the end
Related to but distinct from surprise costs: even when nothing is hidden, a customer who can't see a running total feels like they're signing a blank cheque. Tax and shipping that only resolve on the final step read as bait-and-switch even when they're honest.
The PrestaShop fix. Keep the order summary present and live throughout checkout. PrestaShop's default theme shows a summary, but in the stepped flow the delivery cost only firms up once a carrier is chosen at the CheckoutDeliveryStep. A one-page layout with a persistent, AJAX-updating summary block — recalculating the instant a postcode or carrier changes — removes the blank-cheque feeling. On mobile, that summary tends to scroll out of view entirely; keeping it sticky is part of the mobile checkout playbook.
5. The checkout doesn't look safe
Checkout is the moment of maximum anxiety — the customer is about to type a card number. A missing padlock, a dated design, no recognisable payment marks, or a domain that doesn't match the store name, and they don't finish.
The PrestaShop fix. Force HTTPS everywhere under Shop Parameters → General → Enable SSL and Enable SSL on all pages — not just on the payment step. Surface real payment marks (the logos your gateways already provide) at the CheckoutPaymentStep rather than plain text, and put a short reassurance — secure payment, money-back window, a visible contact route — near the pay button. These are trust signals at the point of card entry, distinct from store-wide trust design.
6. A slow checkout page
A slow homepage costs you browsers; a slow checkout costs you buyers who had already decided. A lag while the carrier list refreshes or a coupon applies feels, to a committed customer, like the site is broken.
The PrestaShop fix. Treat the checkout as the page that must be fastest. Turn on the production stack under Advanced Parameters → Performance — Smarty caching, combine/minify CCC, and a configured cache — and keep heavy third-party scripts (chat widgets, marketing tags, sliders) off the order controller. Make sure the AJAX updates that fire on carrier change and voucher application aren't blocked behind slow external calls. A bloated theme that drags every page also drags this one; checkout speed is rarely a standalone problem.
7. Missing the payment method they wanted
If a shopper's preferred way to pay isn't there, they leave — and preferences are sharply regional. iDEAL dominates the Netherlands, Bancontact Belgium, BLIK Poland, Klarna and instalment options much of the Nordics and DACH.
The PrestaShop fix. Install the payment modules your actual markets expect and manage them under Payment → Payment Methods, then restrict each method by country, currency, and customer group under Payment → Preferences — so a Dutch visitor sees iDEAL first and a B2B group sees bank transfer. At minimum offer cards, PayPal, and your dominant regional method. The order and presentation of those options at the payment step matters as much as their presence; for the returning customer who wants to pay in one tap, see express checkout.
8. Validation that fights the customer
Over-strict field validation rejects perfectly valid input — a phone number with spaces, a postcode with a hyphen, an address line in an unexpected shape — and a customer who gets "invalid input" twice gives up.
The PrestaShop fix. Validate as loosely as the order genuinely allows and clean data server-side, not by bouncing the shopper. PrestaShop applies pattern checks on fields like postcode per country (configured under International → Locations → Countries, including the zip/postal code format and whether a country needs a State field at all) — review those for the countries you actually ship to so you're not enforcing a US ZIP shape on a UK postcode. Replace generic errors with specific, inline ones, and never wipe the form on a failed submit; the customer should fix one field, not retype everything.
9. The coupon field that sends people away
A prominent, empty "Discount code" box is one of the few checkout elements that actively loses sales. It tells the customer "there's a deal you don't have," and off they go to a coupon site — where a meaningful share never return.
The PrestaShop fix. Don't show an open voucher box by default. Tuck it behind a small "Have a code?" link that expands only on click, and for customers who arrived via a promo link, pre-apply the cart rule so they never face an empty field at all. PrestaShop cart rules (under Catalog → Discounts) can be auto-applied via a link with the code, which both removes the temptation to leave and makes the promo feel effortless. And test your live codes regularly — a coupon that's advertised but rejected at checkout is worse than no coupon at all.
10. Delivery that takes too long
When the estimate reads 7–14 days and the customer needs it sooner — a gift, a replacement, anything time-sensitive — they look elsewhere. Often the delivery is fine; it's the silence about timing until late in checkout that does the damage.
The PrestaShop fix. Give the customer a delivery expectation before they commit. Set realistic processing and transit times on your carriers under Shipping → Carriers (each carrier carries its own delivery-time fields), and where it helps, offer an express carrier so the customer who needs speed can buy speed instead of abandoning. Surfacing a concrete delivery date on the product page — not just at checkout — closes the gap before it opens; that's the kind of expectation-setting our delivery-date tooling exists to provide, benefit being simply that fewer customers leave to find out "when will it arrive?" elsewhere.
11. Return-policy anxiety
A customer unsure whether the product will suit them wants to know they can send it back. A return policy that's hidden, vague, or grudging breeds exactly the hesitation that tips a borderline order into abandonment.
The PrestaShop fix. Make the policy visible where the doubt lives — on the product page near add-to-cart and again in the cart, not buried in a footer CMS page nobody opens. PrestaShop's Customer Service → Customer Service and the merchandise-return settings under Customer Service → Merchandise Returns control whether returns are even enabled; enabling them and stating "30-day returns" plainly addresses the objection before it becomes a reason to leave. This is reassurance, not legalese — one clear sentence beats a page of terms.
12. Comparison shopping and cart-as-wishlist
The hardest reason to "fix," because the customer never meant to buy right now. They added to cart to bookmark a price while they shop around, or got interrupted, or are using the cart as a wishlist. No checkout change reaches them — they already left.
The PrestaShop fix. You don't fix this one in the checkout; you recover it afterwards. An automated abandoned-cart email sequence wins back a share of these shoppers for essentially zero marginal cost, which is why it's the one automation we tell every store to set up — see abandoned-cart emails, the one automation every store must have, and the broader tooling and timing in email marketing automation for abandoned-cart recovery. A word of caution, though: emailing someone back into a checkout that surprised them on price or forced them to register just returns them to the same leak. Fix reasons 1–9 first; recover what remains.
Where the effort actually pays off
The twelve aren't equal. Stated-reason studies put surprise costs, forced registration, and a long or stepped checkout near the top, with trust, payment gaps, validation, and the rest further down. That ranking is your priority order: adding trust badges before you've fixed surprise shipping is polishing the doorknob on a house with no roof. The table below is the at-a-glance map of each reason, where it lives in PrestaShop, and which sibling owns the deeper treatment.
| Reason | Where it lives in PrestaShop | Deeper read |
|---|---|---|
| Surprise shipping / tax at the end | Shipping → Preferences; International → Taxes; price display | Checkout page diagnosis |
| Forced account creation | Order Settings → Enable guest checkout | Guest vs account creation |
| Long / stepped checkout | order controller, Checkout*Step classes | One-page checkout |
| No visible running total | Persistent order summary; CheckoutDeliveryStep | Mobile checkout |
| Missing regional payment method | Payment → Payment Methods; Payment → Preferences (country/currency restrictions) | Express checkout |
| Comparison / interrupted carts | Email automation, abandoned-cart tooling | Abandoned-cart emails |
| Anything checkout-structure related | Full optimization reference | Checkout optimization guide |
How modules fit in
Several of these are settings you flip yourself — guest checkout, SSL, free-shipping thresholds, carrier times. A few aren't toggles, and that's where a module earns its place. Collapsing the stepped checkout into a true single page (reasons 3 and 4) without forking your theme or editing core is exactly what our Checkout Revolution module exists for. So what does that buy you? The customer gets every section on one screen, a total that updates the instant an address is entered, guest checkout as the default, and inline validation that flags a bad email as they type instead of after they submit — fixes for several of the reasons above, delivered together. You get all of it configured from the back office instead of a developer invoice, and because it doesn't touch core or fork your theme, it survives PrestaShop upgrades. The rebuild story is in Checkout Revolution 3.0, and how it sits against PrestaShop's own checkout-process module is covered in the checkout process module and alternatives.
Measure before you celebrate
Don't trust a gut feeling, and don't trust three days of data. Before you change anything, record four baseline numbers: cart-to-order conversion rate, checkout abandonment rate, average time to complete checkout, and mobile-versus-desktop conversion. If you're on the stepped checkout, also note which step people drop at — a spike at the delivery step points straight at a shipping-cost problem (reason 1), a spike at the personal-information step usually means the account wall (reason 2). After each fix, compare the same numbers over at least 30 days and a couple of hundred orders, not a noisy long weekend. The week-to-week wobble in checkout data is large enough to fool merchants into reverting a change that was genuinely working.
No single fix eliminates abandonment, and chasing zero is the wrong goal — some shoppers were never going to buy today. The realistic win is to work the list in order of impact, on the PrestaShop settings and structures named above: make the total honest, drop the account wall, shorten the path, then trust, payments, validation, and the rest. Every reason you close compounds on the last, because the customer who reaches your cart is the warmest traffic you'll ever have. You've already paid to get them there. The only job left is to stop getting in their way.
Comments
No comments yet. Be the first!
Be the first to ask a question or share useful feedback.
Leave a comment
Share a question, an installation detail, or feedback that could help another reader.