---
title: "Say on the order button that the order · Agent Wranglers"
url: https://agentwranglers.se/playbook/payments/checkout-and-card-data/order-button-label
updated: 2026-10-21
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Say on the order button that the order costs money

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

For AI agents: [llms.txt](https://agentwranglers.se/llms.txt) is a short guide that sends you to the rules your problem needs, and [rules.json](https://agentwranglers.se/playbook/payments/rules.json) holds every rule of this playbook as JSON.

- Level: Required
- Chapter: [Checkout and card data](https://agentwranglers.se/playbook/payments/checkout-and-card-data)
- Rule: Label the button that places a paid order "Order with obligation to pay", or words just as plain, such as "Pay 129.50 SEK now". Show the main terms right beside it.
- Risk: A law broken
- Applies when: The project it takes payments, or it has users in the EU.
- How: Article 8(2) of the Consumer Rights Directive sets this label for EU consumers. If the button fails it, the consumer is not bound by the contract or order. So a vague label such as "Continue", "Submit" or "Next" can cost you the sale. Show the price, the length of the contract and any minimum term close to the button. Article 8(7) also asks for a confirmation of the contract on a durable medium, such as an email, before the service starts. Put the same terms in that email as [Show the terms and record consent before the first charge](https://agentwranglers.se/playbook/payments/subscriptions/recurring-consent) says.
- Check: A browser test reaches the final step of every paid flow, including trials that turn paid. The button's accessible name contains "pay", "buy" or "order with obligation to pay" in the page language. The price and contract length appear within the same form.

## 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.

### JavaScript example

```js
// Playwright: the button that places the order says it costs money
const PAY_WORDS = /pay|buy|order with obligation to pay/i
const button = page.getByRole('button', { name: PAY_WORDS })
await expect(button).toBeVisible()
await expect(page.locator('form#checkout')).toContainText('129.50 SEK a month')
```

### Python example

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

PAY_WORDS = re.compile(r"pay|buy|order with obligation to pay", re.IGNORECASE)
expect(page.get_by_role("button", name=PAY_WORDS)).to_be_visible()
expect(page.locator("form#checkout")).to_contain_text("129.50 SEK a month")
```

## Sources

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

## Related rules

- [Show the terms and record consent before the first charge](https://agentwranglers.se/playbook/payments/subscriptions/recurring-consent) in Payments

**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/payments/checkout-and-card-data/order-button-label">Agent Wranglers payments playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Test every payment outcome with test cards](https://agentwranglers.se/playbook/payments/checkout-and-card-data/payment-test-scenarios)
- Next: [Confirm your PCI DSS compliance every year](https://agentwranglers.se/playbook/payments/checkout-and-card-data/pci-annual-attestation)
- [Checkout and card data](https://agentwranglers.se/playbook/payments/checkout-and-card-data)
