---
title: "Never add paid extras through a pre-ticked · Agent Wranglers"
url: https://agentwranglers.se/playbook/ecommerce/carts-and-checkout/no-pre-ticked-extras
id: ECM-52
level: Required
applies: eu-users
region: EU
risk: law
updated: 2026-10-27
build: a2a6bdfed830
tokens: 958
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Never add paid extras through a pre-ticked box

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Carts and checkout](https://agentwranglers.se/playbook/ecommerce/carts-and-checkout.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-27.

- ID: ECM-52
- Level: Required
- Chapter: [Carts and checkout](https://agentwranglers.se/playbook/ecommerce/carts-and-checkout.md)
- Rule: Add a paid extra, such as insurance, gift wrap or a donation, to an EU consumer's order only after they ticked or chose it themselves. Every option that costs money starts unticked.
- Check: A browser test opens every checkout step as an EU consumer and reads each checkbox and toggle that adds a cost. None is checked when the page loads. A server test places an order with no extras chosen, and its total equals the main lines plus mandatory fees and shipping.
- Risk: A law broken
- Applies when: The project has users in the EU.
- Region: European Union (EU). The duty comes from the law there. The rule applies only when the project serves people there, and its Applies when also holds.
- How: Article 22 of the Consumer Rights Directive requires the consumer's express consent to any payment on top of the main price. Consent by default options, which the consumer must reject to avoid the payment, does not count. The consumer may then claim the money back. The same goes for an extra kept in the cart from an earlier visit or added by a recommendation widget. Keep the main price and the extras as separate lines, so the total in [Show the total price with every mandatory fee](https://agentwranglers.se/playbook/payments/price-display-and-consumer-law/total-price-upfront.md) stays honest. Store on each extra line who added it and when.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### TypeScript example

```ts
// Playwright: no paid option starts ticked
const paidOptions = page.locator('form#checkout input[type=checkbox][data-adds-cost]');
for (const option of await paidOptions.all()) await expect(option).not.toBeChecked();
```

### Python example

```python
# Playwright for Python: the same check
from playwright.sync_api import expect

for option in page.locator("form#checkout input[type=checkbox][data-adds-cost]").all():
    expect(option).not_to_be_checked()
```

## Sources

- [Consumer Rights Directive 2011/83/EU, Article 22](https://eur-lex.europa.eu/eli/dir/2011/83/oj)

## Related rules

- PAY-58 [Show the total price with every mandatory fee](https://agentwranglers.se/playbook/payments/price-display-and-consumer-law/total-price-upfront.md) in Payments and billing
- UXD-5 [Give yes and no the same weight](https://agentwranglers.se/playbook/ux-design/deceptive-design/equal-choices.md) in UX and deceptive design

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/ecommerce/carts-and-checkout/no-pre-ticked-extras">Agent Wranglers e-commerce and fulfilment playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Show delivery limits and payment methods when checkout starts](https://agentwranglers.se/playbook/ecommerce/carts-and-checkout/delivery-restrictions-upfront.md)
- Next: [Sell to customers from every EU country on the same terms](https://agentwranglers.se/playbook/ecommerce/carts-and-checkout/geo-blocking-access.md)
- [Carts and checkout](https://agentwranglers.se/playbook/ecommerce/carts-and-checkout.md)
