Blog · · 8 min
Order bump that is legal in Europe
One named item, one price, one reason, one box that starts unchecked, above the totals and below the cart contents. Article 22 of Directive 2011/83/EU requires express consent to any payment beyond the main obligation, so a pre-ticked yes is refundable. Never a carousel.
By uxgen
An order bump is one line in the cart: a named item, its price, one sentence saying why it goes with what is already in the basket, and a checkbox that starts unchecked. It sits above the totals and below the cart contents. It is not a carousel, not a modal, and not a step the buyer has to clear before checkout continues.
In Europe the unchecked box is not a stylistic preference. Article 22 of Directive 2011/83/EU requires the trader to obtain the consumer's express consent to any payment in addition to the remuneration agreed for the trader's main contractual obligation, and states that where the trader has not obtained express consent but has inferred it by using default options which the consumer is required to reject in order to avoid the additional payment, the consumer is entitled to reimbursement of that payment.
A pre-ticked bump in the EU is therefore not an aggressive growth tactic. It is a charge the customer can claim back, on every order it touched.
Why this keeps happening by accident
Several commercial upsell widgets ship pre-ticked as their factory default, and the setting is one screen deep. An agent installing one on a European merchant's store and moving on has created a refund liability while trying to raise the basket. Nobody made a decision; the default made it.
The fix in a component you own is structural rather than procedural. In the commerce kit implementation there is deliberately no defaultChecked prop and no way to pass one:
/* Initialised to false, always, and no prop can change it.
This is the one line of the component that carries legal weight. */
const [ajoute, setAjoute] = useState(false)
A rule written in a README is advice. A rule with no corresponding prop cannot be violated by a hurried configuration.
The anatomy, element by element
| Element | The rule | What it prevents |
|---|---|---|
| Checkbox | starts unchecked, no prop can override | a payment the buyer never expressly consented to |
| Item | exactly one, named | a browsing decision at the confirmation moment |
| Price | shown as a total, in currency | arithmetic the buyer has to run |
| Reason | one concrete line about the object | a price with no information attached to it |
| Position | above the totals, below the contents | interrupting the path to checkout |
| Price ceiling | well under half the cart | reopening the purchase decision |
| Decline | no action required at all | a refusal harder than an acceptance |
The reason line is the one people cut first and it is the one that does the work. Measures one serving exactly. is a fact about the object. You may also like is a shelf. The kit throws in development when reason is empty, on the grounds that an add-on with a price and no reason is a question posed with no information to answer it.
The price ceiling has the same enforcement. Pass the cart total and a complement above half of it throws:
OrderBump: the complement costs more than half the cart. At that price it reads
as a second purchase and reopens the decision. Use a cheaper complement, or
offer this as a post-purchase item instead.
Where exactly in the cart
Above the totals, below the cart contents. The reason is about context rather than about visibility: the buyer is already reading a list of line items, so one more line is not a new mental frame. Placed under the totals it reads as a fee. Placed above the contents it displaces what the buyer came to verify.
The position it must never take is a full screen between the cart and payment. That form is the most expensive version of the pattern, and the argument needs no study behind it: the customer had already decided to buy, and you replaced the button they were reaching for with a question. Cart interstitials are long-standing subject matter in ecommerce usability research, Baymard's included, and that is a better source than a summary of it.
The three available positions and what each one is for are laid out in where to place an upsell on a product page. The short version: the product page for a true accessory, the cart for the unchecked bump, and the confirmation page for the offer that would have disturbed the main decision.
What else the European rules reach
Article 22 is the specific one. Three more constraints sit around it and they apply to the same block.
The decline must be as easy as the accept. A visible refusal, plainly worded, the same size as the acceptance. An opt-out hidden as grey text under a large accept button is a dark pattern and the unfair commercial practices rules reach it. In a checkbox bump this is free, because declining means doing nothing.
No invented anchor on the bump price. A struck-through figure you never charged is prohibited under the EU price-indication rules on prior-price announcements. If the complement is $6.00 and always has been, show $6.00.
No countdown unless the deadline is real and enforced. A timer that resets on reload is a fabricated urgency claim, the same category of problem as an invented review.
Outside the EU we are not giving legal advice, and the local rules differ. The commercial argument stands on its own anyway: a charge the buyer did not intend to accept turns into a support ticket, a chargeback, or a refund request, and the basket you raised on paper does not survive the month.
Choosing the item
The bump is a complement, not a second product. What makes it a complement is the relationship between the two objects, and that relationship has to be true regardless of how you found it. Picking it out of a recommendation engine and labelling it as something buyers usually pair is a factual claim about your own order data, and frequently bought together, done right covers when you are entitled to make it.
Practically: something cheap, something small, something that makes the item already in the cart work better. A scoop with a tin. A refill with a device. A case with a bottle. If you cannot write the reason line in seven words, it is not the right item.
Where it sits among the other three
The bump is third of four basket mechanics, and it is third because it acts on the smallest share of orders. Quantity breaks act on every order before a cart exists. The free-shipping threshold bar acts on every cart already close to the goal, and it pairs naturally with the bump: a buyer $6.00 short of free shipping and a $6.00 complement one line above the totals is the cleanest version of this whole pattern. The sticky add-to-cart acts on every mobile session.
Build them in that order, and treat none of them as a test. Below roughly forty thousand sessions per variant a split test cannot separate a real effect from noise, which is most stores. That constraint, and what to do instead, is in ecommerce conversion rate optimization without traffic.
FAQ
What is an order bump?
A single named complement offered as one line in the cart, with a price, a one-line reason, and an unchecked box. It sits above the totals and below the cart contents, so accepting it costs one tap and declining it costs nothing at all.
Is a pre-checked order bump legal in the EU?
No. Article 22 of Directive 2011/83/EU requires express consent to any payment beyond the main obligation, and where consent was inferred from a default option the consumer had to reject, the consumer is entitled to reimbursement of that payment. Several upsell widgets still ship pre-ticked as their factory default.
Where should the order bump go in the cart?
Above the totals, below the line items. The buyer is already reading a list there, so an extra line is not a new context. Under the totals it reads as a fee, and as a full screen before payment it is an interruption of a decision that had already been made.
How expensive can the bump item be?
Well under half the cart total. A complement priced near the main item reads as a second purchase and reopens the decision you were trying to confirm. If the item you want to offer is that expensive, it belongs on the confirmation page after payment instead.