WCAG 3.3.4 Error Prevention (Legal, Financial, Data) — Testing Guide for Mobile & Web Apps

WCAG 3.3.4, titled "Error Prevention (Legal, Financial, Data)," is a critical success criterion at Level AA. It mandates that for user actions that have irreversible consequences, such as submitting l

March 31, 2026 · 6 min read · WCAG Guides

Ensuring Error Prevention in Legal, Financial, and Data Transactions: A Guide to WCAG 3.3.4

WCAG 3.3.4, titled "Error Prevention (Legal, Financial, Data)," is a critical success criterion at Level AA. It mandates that for user actions that have irreversible consequences, such as submitting legal forms, executing financial transactions, or confirming data deletion, users must have a mechanism to review, confirm, and correct their input before the action is finalized. This isn't just about avoiding accidental clicks; it's about protecting users from costly mistakes and ensuring the integrity of their data.

What WCAG 3.3.4 Requires

In simpler terms, if a user is about to do something significant and irreversible – like making a payment, signing a contract, or deleting an account – the system must provide a final chance to:

  1. Review: Show the user exactly what they are about to commit to.
  2. Confirm: Explicitly ask the user to confirm their intent.
  3. Correct: Allow the user to go back and change any information before the final commitment.

This applies specifically to actions that, once completed, cannot be undone without significant effort or loss. Think of it as a "are you sure?" prompt, but with the added benefit of being able to edit before saying "yes."

Why It Matters: Beyond Compliance

The impact of violating WCAG 3.3.4 extends far beyond a compliance failure.

Common Violations with Examples

Violations of WCAG 3.3.4 often occur in forms and checkout processes where irreversible actions are triggered.

Mobile App Examples:

  1. One-Tap Purchases Without Confirmation:
  1. Immediate Account Deletion:
  1. Uneditable Financial Transaction Details:

Web App Examples:

  1. Form Submission Without Review:
  1. Checkout Process Skipping Order Summary:
  1. Data Export/Deletion Without Clear Safeguards:

How to Test for Compliance

Testing for WCAG 3.3.4 requires a combination of manual exploration and automated checks, with a keen eye on user workflows.

#### Manual Testing Steps

  1. Identify Irreversible Actions: Review your application's user journeys. Look for any action that leads to a permanent change, such as submitting forms, making payments, deleting data, or confirming legal agreements.
  2. Simulate User Errors: Intentionally make mistakes while filling out forms or performing transactions.
  1. Test Confirmation Mechanisms:
  1. Persona-Based Testing:

#### Automated Tools that Check This Criterion

While full automation of 3.3.4 is complex due to its workflow-dependent nature, automated tools can catch significant parts of it:

#### Mobile-Specific Considerations (Android/iOS)

How to Fix Violations

Addressing WCAG 3.3.4 violations typically involves adding a confirmation or review step to irreversible actions.

Example Fix (Web - JavaScript):

Before (Violation):


<button id="submitOrderBtn">Place Order</button>
<script>
  document.getElementById('submitOrderBtn').addEventListener('click', function() {
    // Logic to process order immediately
    processOrder();
  });
</script>

After (WCAG 3.3.4 Compliant):


<!-- Button to trigger review -->
<button id="finalizeOrderBtn">Place Order</button>

<!-- Modal/Section for review -->
<div id="orderReviewModal" style="display: none;">
  <h2>Review Your Order</h2>
  <p>Items: [List of items]</p>
  <p>Total: [Total amount]</p>
  <button id="confirmOrderBtn">Confirm Order</button>
  <button id="editOrderBtn">Edit Order</button>
</div>

<script>
  document.getElementById('finalizeOrderBtn').addEventListener('click', function() {
    // Display review modal/section
    document.getElementById('orderReviewModal').style.display = 'block';
    // Populate review details
    displayOrderSummary();
  });

  document.getElementById('confirmOrderBtn').addEventListener('click', function() {
    // Logic to process order
    processOrder();
    // Hide review modal
    document.getElementById('orderReviewModal').style.display = 'none';
  });

  document.getElementById('editOrderBtn').addEventListener('click', function() {
    // Hide review modal and allow editing of previous fields
    document.getElementById('orderReviewModal').style.display = 'none';
    // Logic to return to editing state
  });
</script>

Example Fix (Mobile - Conceptual):

How SUSA Checks This Criterion During Autonomous Exploration

SUSA (SUSATest) is designed to discover and validate critical user flows, including those governed by WCAG 3.3.4.

Test Your App Autonomously

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.

Try SUSA Free