Designing an honest online checkout without dark patterns
Surprise fees, pre-ticked extras and fake countdown timers might win a sale today, but they cost trust and can fall foul of Australian Consumer Law. Here’s how we design checkouts people trust.
The checkout is where an online store either earns trust or loses it. It’s also where a lot of stores reach for tricks: a fee that appears on the last step, an extra that was quietly ticked for you, a timer insisting the deal ends in four minutes. These are often called dark patterns, design choices that nudge people into decisions they wouldn’t otherwise make.
The short version: show the real price early, let people choose freely and make every step easy to understand. It’s better for your customers, better for repeat business and, in Australia, it’s what the law expects.
What the law expects
We’re designers, not lawyers, so treat this as a starting point rather than advice. But a few principles from the Australian Consumer Law shape every checkout we design.
The ACCC’s guidance on price displays says businesses should show a single total price: the minimum a customer will pay, including GST and any fees they can’t avoid. Optional extras that you’ve pre-selected for the customer count towards that total too.
The ACCC also warns against drip pricing, where a headline price is shown first and extra fees are added along the way. If fees will apply, people should be told at the start of the purchase, not on the payment screen.
More broadly, businesses must not mislead customers. A countdown that resets when you reload the page, or a “only two left” message that isn’t true, risks being exactly that.
Clear pricing, from the first click
Prices include GST
Show prices to consumers with GST included. If you also sell to businesses, you can offer an ex-GST view for them, but the price a member of the public sees should be the price they pay.
Be upfront about shipping
Shipping is the cost people most often feel ambushed by. Even where the law doesn’t require delivery to be in the product price, it’s good practice to make it easy to find:
- Put a short, plain shipping summary near the add-to-cart button, with a link to the full details.
- Show an estimate in the cart, before people start entering their details, using a postcode field rather than a full address.
- If you offer free shipping above a certain order value, say so on product pages, not just in the cart.
- If click and collect is free, make it a clear option, not something hidden at the bottom of a list.
No surprise fees
If there’s a handling fee, a booking fee or any other unavoidable charge, include it in the price you show. If it can’t be calculated until later, explain early that it will apply and how it’s worked out.
Choices people actually make
The patterns we leave out of every checkout:
- Pre-ticked boxes for add-ons, insurance, donations or newsletter sign-ups. If someone wants it, they can tick it.
- Fake urgency, like timers or stock warnings that aren’t true.
- Guilt-trip wording on the “no thanks” option, such as “No, I don’t like saving money”.
- Forced account creation. Offer guest checkout, and let people create an account afterwards if they’d like one.
- Subscriptions that are easy to start and hard to stop. If something renews, say so clearly before payment and make cancelling as easy as signing up.
None of these is necessary to run a successful store. Plenty of people abandon a cart when they feel tricked, and they remember the store that did it.
Easy to complete, for everyone
An honest checkout is also an accessible one. A few things we check on every project, many of them drawn from WCAG 2.2:
- Every field has a visible label, not just placeholder text that disappears when you start typing.
- Error messages say what went wrong and how to fix it, next to the field, not just as a red outline.
- People don’t have to enter the same information twice. A “billing address same as shipping” option is a small thing that helps a lot.
- Logging in doesn’t depend on remembering or retyping a password; password managers and pasting should work.
- The whole checkout can be completed with a keyboard and a screen reader.
We also keep checkouts light. Every extra script on the checkout page, whether it’s tracking, a chat widget or a pop-up, is something that can slow it down or break it. The checkout should load only what it needs to take a payment.
Our rule of thumb
Before a checkout goes live, we ask one question of every element on it: would we be comfortable explaining this to the customer face to face? A clear total, a fair shipping estimate and a plain “no thanks” pass easily. A last-minute fee or a pre-ticked box usually doesn’t.
Where to start
If you already run a store, try buying something from it on your phone, as a new customer, and note every moment you felt unsure or surprised. That list is your to-do list. If you’re still deciding on a platform, our earlier note on Shopify or WooCommerce covers the trade-offs, and both can support an honest checkout.
If you’d like a second pair of eyes on your store, have a look at our online store design work, or tell us what you’re working on.
Talk to us about this
If something in this note sounds useful for your organisation, tell us what you're working on. We'll reply with honest advice.