For AI agents: llms.txt is a short guide that sends you to the rules your problem needs, and rules.json holds every rule of this playbook as JSON.
Required
Say on the order button that the order costs money
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 if broken
A law broken
Applies when
The project it takes payments, or it has users in the EU.
How to do it
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 says.
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
// 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
# 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")
How to 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.
Sources
Related rules
For agents: this playbook is free to use under CC 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.