Skip to content
Practice & implementation

Accessible Checkout for Shops

Accessible checkout: usable payment forms, understandable error messages, address fields and progress indicators for online shops built to WCAG 2.2 AA level.

13 min read CheckoutE-CommerceFormulareBarrierefreiheitBFSG

In short and in plain language

This is about the checkout in an online shop. This is where people decide to buy. A single barrier can stop the purchase.

Each field needs a clear label. Errors appear right at the field and are easy to understand.

People must be able to pick a payment method with the keyboard. With several steps, customers see where they are. On phones, buttons need enough space.

The BFSG requires this for many shops. All customers gain from it.

We check your checkout and fix the barriers.

The checkout is the most critical point in any online shop: it determines whether an interested visitor becomes a customer. For the roughly 16% (WHO, 2022) of the world's population with a significant disability, a single barrier in the checkout can mean: they cannot complete their purchase. Accessible checkouts have been legally required for many online shops since the BFSG, and with clear forms and understandable error messages they benefit all users at the same time.

Key takeaways

  • 69 percent (Click-Away Pound Survey, 2019) of surveyed users with disabilities leave a website as soon as they hit a barrier, and 86 percent (Click-Away Pound Survey, 2019) would spend more if websites were more accessible.
  • Every input needs a programmatically linked label instead of a placeholder, plus autocomplete values such as given-name or postal-code; missing form labels appeared on 48.6 percent (WebAIM Million Report, 2024) of home pages tested.
  • Error messages sit next to the field concerned, the field carries aria-invalid=true and is linked to the message via aria-describedby; after server-side validation the focus moves to the first faulty field (WCAG 3.3.1 to 3.3.4).
  • Payment methods belong in a real radio group operable with arrow keys, not in clickable cards; embedded forms from external payment providers cannot be controlled in house and need separate testing.
  • In a multi-step checkout aria-current=step marks the current stage, focus moves to the heading of the new step on each transition, and the order button states the payment obligation explicitly.
  • Touch targets meet at least 24 by 24 CSS pixels (WCAG 2.5.8), better 44 by 44 on mobile; input fields from 16 pixels font size avoid the automatic zoom on iOS, and user-scalable=no violates criterion 1.4.4.

Why the Checkout Is Particularly Critical

The checkout process represents the most complex interaction an online shop offers. Users must enter personal data, fill in addresses, select payment methods and confirm an order. Each of these steps contains potential barriers: unlabeled form fields, incomprehensible error messages, payment options unreachable by keyboard or captchas without alternatives.

The UK Click-Away Pound Survey (2019) shows that 69% of surveyed users with disabilities leave a website when encountering barriers, and 86% would spend more if websites were more accessible (Click-Away Pound Survey, 2019). A non-accessible checkout therefore means not only a legal risk but also lost revenue.

Particularly affected are screen reader users who depend on correct form labels and ARIA attributes, keyboard users who must complete every step without a mouse, people with cognitive disabilities who rely on clear structures and understandable instructions, and people with motor impairments who need sufficiently large click targets.

Accessible Form Fields and Labels

The foundation of an accessible checkout is correctly labeled form fields. Every input field must have an associated <label> element that is programmatically linked to the field. Placeholder text alone is not sufficient, as it disappears when typing and is not consistently recognized as a label by screen readers. The WebAIM Million Report (2024) identifies missing form labels as the third largest accessibility problem with 48.6% (WebAIM Million Report, 2024) of all tested home pages.

Required fields must be marked both visually and programmatically. A red asterisk alone is not enough: the attribute aria-required="true" or the HTML attribute required informs assistive technologies that the field must be filled in. Additionally, a note at the beginning of the form should explain the meaning of the required field marking.

Autocomplete attributes per the HTML standard are another important building block. Fields like autocomplete="given-name", autocomplete="family-name", autocomplete="street-address" and autocomplete="postal-code" enable browsers and assistive technologies to automatically insert stored data. This significantly reduces input burden, especially for users who have difficulty with manual text entry. The accessible shop implements these attributes for all relevant fields.

Error Messages: Clear, Precise and Linked

Error messages in checkout are a common frustration point for all users, but for people with disabilities they can mean the difference between completion and abandonment. WCAG 2.2 criteria 3.3.1 through 3.3.4 require that errors are identified, described and provided with correction suggestions. In practice, this means a combination of visual display and programmatic linking.

Every error message must appear directly at the affected field, not only in a summary at the top of the page. The field itself is marked with aria-invalid="true" and the error message is linked to the field via aria-describedby. Screen readers then automatically read the associated error message when the field receives focus. The error message itself must be specific and action-oriented: rather than just describing the problem, it should suggest a solution.

With server-side validation, after page reload the focus must automatically be set to the error summary or the first erroneous field. A live region (aria-live="polite") can announce changes in real time during client-side validation without disturbing the current focus. The combination of visual and programmatic cues reduces the risk of users missing an error message.

Labels and Autocomplete

Every field with programmatically linked label and correct autocomplete attributes. No placeholders as label substitutes.

Inline Error Messages

Errors linked directly to the field via aria-describedby. Specific correction suggestions instead of generic notices.

Full Keyboard Navigation

Every checkout step reachable via Tab. Radio groups navigable with arrow keys. No focus traps.

Contrast and Readability

All text with at least 4.5:1 contrast. Error states not identified by color alone.

Progress Indicator

Current step marked with aria-current. Overall progress accessible to screen readers.

Order Confirmation

Summary before completion semantically structured. Confirmation page with clear success message.

Implementing Accessible Address Fields

Address forms in checkout present special accessibility challenges. A typical address form contains six to ten fields that must be logically grouped and labeled. The HTML elements <fieldset> and <legend> group related fields together: one fieldset for the billing address, another for the shipping address. Screen readers read the legend when the user navigates into the group, providing context.

A particularly common problem is the ZIP code field: many shops accept only certain formats but do not clearly communicate the format requirement. An accessible ZIP code field provides the expected format in help text below the field, linked to the field via aria-describedby. For international shops supporting different address formats, the form must dynamically respond to country selection and adjust the field structure accordingly.

The option to use the billing address as the shipping address directly fulfills WCAG 2.2 criterion 3.3.7 (Redundant Entry). Implementation uses a checkbox with a clear label that, when activated, automatically populates the shipping address fields and optionally hides them visually. Screen readers must be correctly informed about the checkbox state and its effect on the remaining fields.

Making Payment Methods Accessible to All

Payment method selection is a step that is not accessibly implemented in many shops. Frequently, payment options are displayed as visual cards that can be selected by clicking but are neither implemented as radio buttons nor keyboard-operable. An accessible implementation uses native HTML radio buttons or a correctly implemented ARIA radio group with role="radiogroup" and role="radio".

External payment providers present a special challenge. When the user is redirected to an external page for credit card entry or an iFrame is embedded, accessibility of this element cannot be fully controlled. The recommendation: select payment providers that offer accessible forms, and clearly announce the transition to the external form for screen reader users.

Credit card forms need special attention: fields for card number, expiration date and security code must be correctly labeled and use autocomplete="cc-number", autocomplete="cc-exp" and autocomplete="cc-csc". The expiration date can be implemented as two separate fields (month per year) or as a combined field but must communicate the expected format in either case.

Progress Indicators in Multi-Step Checkout

Multi-step checkouts use progress indicators to show users where they are in the process. For sighted users, this is often a visual bar or a step sequence with numbered circles. For screen reader users, this information must be programmatically available. The attribute aria-current="step" marks the current step, while an overview of all steps can be implemented as an ordered list.

When switching between steps, focus must be correctly managed. When the user completes the address step and switches to the payment step, focus should be set to the heading or first form field block of the new step. A page change without focus management means screen reader users don't know where they are, and keyboard users must navigate from the beginning of the page.

An accessible progress indicator also communicates which steps are already completed, whether the user can return to an earlier step and how many steps remain. Completed steps can be implemented as links enabling return. The total number of steps is announced upon entering the checkout, for example: Step 2 of 4.

Order Summary and Confirmation

Before the final click on the order button, a complete summary must be displayed containing all order-relevant information. This summary must be semantically structured as a data table or definition list, not as a visual layout. Screen reader users must be able to comprehend all items with designation, quantity and price.

The order button itself must clearly communicate that a binding payment obligation is being triggered. This duty does not come from the BFSG but from § 312j(3) of the German Civil Code (BGB): the button must be legibly labelled with the words “zahlungspflichtig bestellen” (order with obligation to pay) or an equally unambiguous wording. The button must be focusable, activatable via Enter and Space and have sufficient color contrast.

After ordering, the confirmation page must clearly communicate success. A live region or heading element at the top of the page with a confirmation message ensures that screen reader users immediately learn the order was successful. The order number, estimated delivery date and a link to order overview complete the accessible confirmation page.

Keyboard Navigation Throughout the Checkout

Every single step in the checkout must be fully keyboard-operable. This means: form fields are reachable via Tab, radio groups navigable via arrow keys, checkboxes activatable via Space and buttons triggerable via Enter and Space. Modal dialogs, as used for address validation or payment confirmation, must implement a focus trap and be closable via Escape.

A common problem is custom dropdowns for country selection that visually look like native select elements but do not offer the same keyboard operability. The recommendation: use native HTML elements wherever possible. When custom widgets are necessary, they must implement the complete keyboard interaction pattern of the native counterpart, including type-ahead search for long lists.

Skip links at the beginning of each checkout step allow keyboard users to jump directly to the relevant form without having to traverse header and navigation again. For shops with extensive headers, this saves considerable time and reduces frustration. Accessible web development implements skip links as standard on every page.

Accessible Coupon and Discount Fields

Coupon input fields in checkout are an often overlooked area. The field needs a clear label, a button to redeem and feedback on whether the coupon is valid or invalid. The feedback must be accessible both visually and to screen readers. An aria-live region next to the field announces changes: Coupon successfully redeemed or Invalid coupon code.

When the coupon changes the order total, the updated sum must also be announced. A summary line showing the discount amount and new total gives the user confirmation that the coupon was correctly applied. The entire process must work without page reload and be comprehensible via screen reader.

Mobile Checkout and Touch Accessibility

Mobile checkout places additional accessibility requirements. Touch targets must be at least 24x24 CSS pixels per WCAG 2.2 (criterion 2.5.8). On mobile devices, where finger operation is less precise than mouse operation, a target size of 44x44 pixels or more is recommended. Buttons, checkboxes and radio buttons in checkout must meet these minimum sizes.

The input keyboard on mobile devices can be controlled via the inputmode attribute: inputmode="numeric" for ZIP code and phone number, inputmode="email" for email addresses, inputmode="tel" for phone numbers. This significantly facilitates input and reduces errors. Combined with the type attribute and autocomplete values, this creates a mobile checkout that minimizes input burden. According to the Baymard Institute, 17 percent (Baymard Institute, 2025) of surveyed US online shoppers have abandoned an order because the checkout was too long or complicated – suitable on-screen keyboards and autocomplete reduce exactly this effort.

Zoom must be fully supported in mobile checkout. The meta viewport directive user-scalable=no blocks zooming and violates WCAG 1.4.4. Form fields with a font size below 16 pixels trigger automatic zoom on iOS, disrupting the user experience. The solution: set all input fields to at least 16 pixel font size and leave the user in control of the zoom level.

This article is based on data from: Baymard Institute, reasons for cart abandonment (as of 2025), WebAIM Million Report (2024), Click-Away Pound Survey (2019), WHO Global Report on Health Equity for Persons with Disabilities (2022), W3C WCAG 2.2 Recommendation (2023), § 312j German Civil Code (BGB).

Related Articles

Practice & implementation

Accessible Withdrawal and Cancellation Buttons for Shops

Since 19 June 2026, § 356a BGB requires a withdrawal function. How it and the cancellation button work with keyboard, screen reader and zoom.

20 min read
Branchen & Anwendungsfälle

Accessible Job Applications: Career Pages Without Barriers

Application flows fall outside the BFSG but inside the AGG and SGB IX. Where uploads, required fields and session timeouts cost you applications.

13 min read
Law & procurement

BFSG Micro-Enterprise Exemption: Who Is Exempt?

Many businesses assume that as a micro-enterprise they are BFSG-exempt. When the exemption applies, why it covers services only and what Section 17 demands.

13 min read