Skip to main content

PayslipIQ Ireland Accessibility Statement

Statement prepared on 2026-05-05. Last assistive-technology regression test: 2026-04-28. Next scheduled review: 2026-08-05.

Conformance status

PayslipIQ partially conforms with the Web Content Accessibility Guidelines (WCAG) 2.2 at Level AA at the date of this statement (2026-05-05). ‘Partially conforms’ means that some parts of the content do not yet fully meet the conformance level.

We additionally align with EN 301 549 v3.2.1, the harmonised European standard for ICT accessibility that incorporates WCAG 2.1 AA by reference and forms the technical basis for compliance with the EU Web Accessibility Directive (2016/2102) and the European Accessibility Act (Directive 2019/882). WCAG 2.2 AA is a strict superset of WCAG 2.1 AA, so meeting the WCAG 2.2 AA target satisfies the EN 301 549 baseline for the criteria covered by this statement.

Of the 55 Level A and Level AA Success Criteria in WCAG 2.2, we self-assess 40 as conformant, 4 as partially conformant, 11 as not applicable to the current product surface. Per-criterion evidence is published below.

Standards and law

  • WCAG 2.2 — W3C Recommendation, October 2023. The technical basis for our per-criterion claims.
  • EN 301 549 v3.2.1 — the European harmonised standard for ICT accessibility. Section 9 of EN 301 549 incorporates WCAG 2.1 Level AA by reference for web content, and we exceed that floor by targeting WCAG 2.2 AA.
  • Web Content Accessibility Directive 2016/2102, transposed in Ireland by S.I. 358/2020 European Union (Accessibility of Websites and Mobile Applications of Public Sector Bodies) Regulations 2020. PayslipIQ is not a public sector body, but we voluntarily adopt the directive’s statement template because it is the standard EU model.
  • European Accessibility Act — Directive (EU) 2019/882, transposed in Ireland by the European Union (Accessibility Requirements of Products and Services) Regulations 2023 and enforceable from 28 June 2025. We treat our consumer-facing checker as in scope of the e-commerce services category.
  • Disability Act 2005 (Ireland), section 28 — informational. The statutory IT-accessibility duty applies to public bodies; we adopt its ‘accessible by default’ principle voluntarily.

The UK-side statement at /accessibility is the canonical record of our technical conformance and contains the same per-criterion evidence.

Measures we take

  • Editorial standards mandate accessible-by-default templates for every new page, calculator and tool.
  • The design system enforces a minimum 4.5:1 text contrast ratio against background and 3:1 for large text, UI borders and focus rings.
  • Every form input on the Irish payslip checker is paired with a programmatically associated label; error messages are linked through aria-describedby and announced via role=“alert”.
  • Sticky regions never occlude focus — a global scroll-padding-top: 80px keeps the active control inside the safe viewport (SC 2.4.11).
  • Focus is visible at 2px on every interactive element, and client-side route changes restore focus to the main landmark.
  • Semantic HTML5 first; ARIA is added only where semantic HTML is insufficient.
  • Motion respects prefers-reduced-motion and is suppressed for users who request reduced motion at the OS level.

Conformance by WCAG 2.2 principle

The four sections below cover every Level A and Level AA Success Criterion in WCAG 2.2, including the new 2.2 additions: SC 2.4.11 Focus Not Obscured (Minimum), SC 2.5.7 Dragging Movements, SC 2.5.8 Target Size (Minimum), SC 3.2.6 Consistent Help, SC 3.3.7 Redundant Entry, and SC 3.3.8 Accessible Authentication (Minimum).

Perceivable

Users can perceive the information being presented - it is not invisible to all of their senses.

SC 1.1.1 (Level A)Partial

Non-text Content

Decorative imagery is rendered via CSS gradients or marked aria-hidden; meaningful imagery (e.g. PayslipIQ logo, hero illustrations) carries an alt attribute set in src/components/OptimisedImage.tsx and src/components/Hero.tsx. The dynamically generated /api/og social card is consumed only by crawlers and uses a descriptive alt at injection sites in src/app/layout.tsx.

  • OG image alt text is auto-derived from the route title rather than authored per page; manual alt text per route is scheduled for 2026-Q4.

Remediation target: 2026-12.

SC 1.2.1 (Level A)Not applicable

Audio-only and Video-only (Prerecorded)

PayslipIQ hosts no prerecorded audio-only or video-only media. All explanatory content is HTML text or static imagery.

SC 1.2.2 (Level A)Not applicable

Captions (Prerecorded)

No prerecorded synchronised media is published on the site.

SC 1.2.3 (Level A)Not applicable

Audio Description or Media Alternative (Prerecorded)

No prerecorded video content exists.

SC 1.2.4 (Level AA)Not applicable

Captions (Live)

PayslipIQ does not broadcast live audio or video.

SC 1.2.5 (Level AA)Not applicable

Audio Description (Prerecorded)

No prerecorded video content exists.

SC 1.3.1 (Level A)Conformant

Info and Relationships

Pages use semantic HTML5 landmarks (header, nav, main, footer, article, section). Forms in src/components/PayslipForm.tsx and src/components/IePayslipForm.tsx pair every input with a programmatic <label htmlFor>; error messages are linked through aria-describedby and surface aria-invalid when validation fails.

SC 1.3.2 (Level A)Conformant

Meaningful Sequence

Reading order matches DOM order across the site; CSS layout is built with flow-friendly Tailwind utilities and no absolute-positioned content out of source order. Verified manually against Firefox Reader View on the calculators and tools surfaces.

SC 1.3.3 (Level A)Conformant

Sensory Characteristics

Form errors and CTAs are conveyed through text plus colour plus icon, never through colour or position alone. Reviewed in src/components/PayslipForm.tsx (error rows render <p role="alert">) and src/components/AnomalyAlert.tsx.

SC 1.3.4 (Level AA)Conformant

Orientation

No CSS or JavaScript locks the viewport to a single orientation. The responsive grid in src/styles/globals.css works in both portrait and landscape down to 320px viewport width.

SC 1.3.5 (Level AA)Partial

Identify Input Purpose

Inputs that map to WCAG 2.1 autocomplete tokens (e.g. email on the contact form) carry the appropriate autocomplete attribute. Bespoke payroll fields (gross_period, tax_code) have no standard token and rely on labelling alone.

  • Audit all form inputs for autocomplete coverage where a standard token applies; in-progress for 2026-Q3.

Remediation target: 2026-09.

SC 1.4.1 (Level A)Conformant

Use of Colour

Status, error and warning states always include a text label or icon; colour is only used as a redundant cue. The DeductionRow and AnomalyAlert components combine colour with leading symbols and copy.

SC 1.4.2 (Level A)Not applicable

Audio Control

No audio plays automatically on any page.

SC 1.4.3 (Level AA)Conformant

Contrast (Minimum)

Body and UI text meets 4.5:1 against background and large text meets 3:1. Wave 17 Domain A bumped low-contrast secondary copy from text-gray-300 to text-gray-700 across affected components, and the brand button hover token in src/styles/globals.css was darkened to #065F46 for 4.5:1 against white.

SC 1.4.4 (Level AA)Conformant

Resize Text

Typography uses rem and clamp() units (see .stat-number rule in src/styles/globals.css). Content reflows without loss of function up to 200% browser zoom; verified in Chrome 132 and Firefox 132.

SC 1.4.5 (Level AA)Conformant

Images of Text

No images of text are used for body content. Logotype is the only exception permitted under SC 1.4.5 and is delivered as SVG with an accessible name.

SC 1.4.10 (Level AA)Partial

Reflow

The Tailwind responsive grid reflows down to 320px without horizontal scrolling on the home, calculators and check surfaces. A handful of programmatic city/role pages embed wide comparison tables that scroll horizontally - permitted by the data-table exception, but flagged for re-layout.

  • Wide comparison tables on /tax-codes/compare horizontally scroll below 480px.

Remediation target: 2026-09.

SC 1.4.11 (Level AA)Conformant

Non-text Contrast

Form input borders, focus rings (2px solid focus-visible style in src/styles/globals.css) and interactive icons meet the 3:1 ratio against their adjacent colours after Wave 17 Domain D adjusted the form-input border token.

SC 1.4.12 (Level AA)Conformant

Text Spacing

No inline style or utility class hard-codes line-height, letter-spacing or word-spacing in a way that prevents user override; all typography is set via Tailwind classes that respect cascade overrides.

SC 1.4.13 (Level AA)Conformant

Content on Hover or Focus

Tooltip-style popovers (e.g. on the TaxCodeBadge component) are triggered by hover or focus, are dismissible by Escape via the focus-trap utility in src/lib/use-focus-trap.ts, and remain visible while the pointer is over them.

Operable

Users can operate the interface - the controls and navigation do not require interaction the user cannot perform.

SC 2.1.1 (Level A)Conformant

Keyboard

Every interactive control is a native button, link, input, select or textarea. Custom controls (e.g. the cookie banner) are reachable and operable via Tab, Shift+Tab, Enter and Space.

SC 2.1.2 (Level A)Conformant

No Keyboard Trap

Focus-trapped surfaces (mobile menu, exit-intent modal) implement an Escape escape-hatch via the dispatched close event in src/lib/use-focus-trap.ts; non-modal regions never confine Tab focus.

SC 2.1.4 (Level A)Not applicable

Character Key Shortcuts

PayslipIQ implements no single-character keyboard shortcuts. All keyboard interactions use modifier keys or the standard tab/enter/escape vocabulary.

SC 2.2.1 (Level A)Not applicable

Timing Adjustable

There are no time limits on form submission, session timeout or content interaction.

SC 2.2.2 (Level A)Conformant

Pause, Stop, Hide

No content auto-updates, blinks or scrolls. Decorative motion (the .animate-fade-in family in src/styles/globals.css) is short, runs once, and is fully suppressed under prefers-reduced-motion.

SC 2.3.1 (Level A)Conformant

Three Flashes or Below Threshold

No animation flashes more than three times per second. Motion is limited to one-shot fade and translate transitions.

SC 2.4.1 (Level A)Conformant

Bypass Blocks

The site-wide "Skip to main content" link in src/app/layout.tsx targets <main id="main-content" tabIndex={-1}>; the link uses the .skip-to-content visibility pattern in src/styles/globals.css.

SC 2.4.2 (Level A)Conformant

Page Titled

Every route exports a per-page Metadata title via Next.js metadata, falling back to the global template "%s | PayslipIQ" defined in src/app/layout.tsx.

SC 2.4.3 (Level A)Conformant

Focus Order

DOM order drives focus order. Wave 17 Domain D added src/components/RouteFocusReset.tsx to programmatically focus <main> on Next.js client navigations, restoring the focus-order baseline that SPA routing otherwise breaks.

SC 2.4.4 (Level A)Conformant

Link Purpose (In Context)

Link text describes its destination in context. Repeated anchors (e.g. "Read more") carry an aria-label or visually hidden suffix where the surrounding text is insufficient.

SC 2.4.5 (Level AA)Conformant

Multiple Ways

Pages are reachable through the primary nav, footer link clusters, the /sitemap-html index, the search-action JSON-LD configured in src/app/layout.tsx, and breadcrumb trails on category and detail pages.

SC 2.4.6 (Level AA)Conformant

Headings and Labels

Each page has a single h1 followed by a logical h2/h3 cascade; form labels describe their purpose without relying on placeholder text.

SC 2.4.7 (Level AA)Conformant

Focus Visible

Every interactive token (.btn-primary, .btn-secondary, .btn-outline) and the global :focus-visible rule in src/styles/globals.css render a 2px ring with offset; no rule sets outline:none without an alternative indicator.

SC 2.4.11 (Level AA)Conformant

Focus Not Obscured (Minimum)

Wave 17 Domain D added the html { scroll-padding-top:80px; scroll-padding-bottom:96px } and :focus-visible { scroll-margin } rules in src/styles/globals.css so that focused inputs are never hidden under the sticky Header, MobileBottomNav or StickyMobileCTA.

SC 2.5.1 (Level A)Conformant

Pointer Gestures

No multipoint or path-based gestures are required. Sliders use single-pointer drag with native keyboard equivalents.

SC 2.5.2 (Level A)Conformant

Pointer Cancellation

All actions trigger on pointerup/click rather than pointerdown, so users can drag away to abort. No down-event handlers commit destructive actions.

SC 2.5.3 (Level A)Conformant

Label in Name

Where an aria-label is set, it begins with or matches the visible label text (e.g. submit buttons read "Check my payslip" both visually and to assistive technology).

SC 2.5.4 (Level A)Not applicable

Motion Actuation

No feature is operated by device motion, tilt or shake.

SC 2.5.7 (Level AA)Conformant

Dragging Movements

The only draggable surface is the native HTML range input on the take-home and pension calculators. Range inputs accept arrow-key operation as a single-pointer alternative to the drag gesture.

SC 2.5.8 (Level AA)Partial

Target Size (Minimum)

Primary CTAs and form inputs are sized at or above the 24x24 CSS pixel minimum. The MobileBottomNav and bottom CTAs use 44x44 targets. Some inline icon-only links (e.g. footer social icons) are below 24x24 and rely on the spacing exception; an audit is in flight.

  • Footer social icon hit areas to be padded to 24x24 minimum.

Remediation target: 2026-09.

Understandable

Users can understand the information and the operation of the interface.

SC 3.1.1 (Level A)Conformant

Language of Page

src/app/layout.tsx sets <html lang="en-GB"> for UK routes and <html lang="en-IE"> for Ireland routes via the request pathname.

SC 3.1.2 (Level AA)Conformant

Language of Parts

Inline foreign-language phrases (e.g. Irish-language statutory terms on /ie pages) carry a lang attribute when used; the rest of the document is en-GB or en-IE as set on the root html element.

SC 3.2.1 (Level A)Conformant

On Focus

No element triggers a context change on focus. Form fields validate on blur or submit, never on focus.

SC 3.2.2 (Level A)Conformant

On Input

No input element auto-submits or navigates. Submission is gated on an explicit button.

SC 3.2.3 (Level AA)Conformant

Consistent Navigation

The Header, Footer and MobileBottomNav components are mounted by src/app/layout.tsx for every route, preserving identical link order across the site.

SC 3.2.4 (Level AA)Conformant

Consistent Identification

Repeated UI primitives (buttons, badges, callouts) share a single Tailwind component class and identical accessible name across every surface.

SC 3.2.6 (Level A)Conformant

Consistent Help

The Footer in src/components/Footer.tsx surfaces the /contact link in the same position on every page, satisfying the consistent-help requirement of WCAG 2.2.

SC 3.3.1 (Level A)Conformant

Error Identification

Validation errors are identified in text, linked to the offending input via aria-describedby, and surfaced through role="alert" wrappers in the form components.

SC 3.3.2 (Level A)Conformant

Labels or Instructions

Every input carries a programmatic <label htmlFor>, and complex fields (e.g. tax code) include helper text describing the expected format.

SC 3.3.3 (Level AA)Conformant

Error Suggestion

Zod-driven validators in PayslipForm.tsx and IePayslipForm.tsx produce specific error copy ("must be a positive number", "tax code must match HMRC format") rather than a generic "invalid".

SC 3.3.4 (Level AA)Not applicable

Error Prevention (Legal, Financial, Data)

PayslipIQ submits no legal, financial or data-modifying transactions on the user's behalf. All flows are read-only analyses; no irreversible action is taken without explicit confirmation, and no user data is persisted server-side.

SC 3.3.7 (Level A)Conformant

Redundant Entry

No multi-step flow asks the user to retype information already provided in the same session. The /check single-page form collects all inputs in one pass.

SC 3.3.8 (Level AA)Not applicable

Accessible Authentication (Minimum)

PayslipIQ does not require user authentication. There are no passwords, MFA challenges or cognitive function tests on any public route.

Robust

Content is robust enough to be reliably interpreted by a wide range of user agents, including assistive technology.

SC 4.1.2 (Level A)Conformant

Name, Role, Value

Custom components delegate to native HTML elements (button, input, a) so role and value come for free. ARIA is added only where semantic HTML is insufficient (aria-live regions, aria-describedby on errors, aria-current on the active nav link).

SC 4.1.3 (Level AA)Conformant

Status Messages

Loading and result containers in src/components/PayslipForm.tsx and the IE counterpart wrap output in role="status" + aria-live="polite" + aria-busy, so progress and result transitions are announced to screen readers without stealing focus.

Known limitations and remediation

  1. Open Graph image alt text is auto-derived from the route title rather than authored per page. Manual alt text per route is scheduled for 2026-Q4.
  2. Footer social icon hit areas are below the SC 2.5.8 24x24 CSS-pixel target-size minimum and rely on the spacing exception. Padding will be added in 2026-Q3.
  3. Wide comparison tables on tax-credit comparison surfaces scroll horizontally below 480px viewport width. A stacked layout for narrow viewports is in flight for 2026-Q3.
  4. PDF guides forthcoming under /ie/downloads/ will be tagged-PDF (PDF/UA-compliant) and Matterhorn-checked before publication.
  5. Calculator results provide a tabular alternative to the visual breakdown. An audio summary is not provided; this is out of scope for the product type.
  6. Irish-language interface — the site is currently English-only (en-IE). A Gaeilge interface is on the longer-term roadmap and is not committed for 2026.

Assistive technologies tested

The most recent regression pass completed on 2026-04-28.

  • NVDA 2024.4 with Firefox 132 and Chrome 132 on Windows 11.
  • VoiceOver with Safari 18 on macOS Sequoia 15.x.
  • TalkBack on Android 15 with Chrome 132.
  • VoiceOver with Safari on iOS 18.
  • Dragon NaturallySpeaking 16 with Chrome 132 on Windows 11.
  • Windows High Contrast and macOS Increase Contrast smoke checks on every navigational and form surface.

Reporting accessibility issues

If you encounter a barrier on PayslipIQ, please tell us:

We commit to acknowledging accessibility reports within 5 working days and providing a substantive remediation timeline within 14 days of the initial acknowledgement.

Enforcement and regulatory framework (Ireland and EU)

If you are not satisfied with our response, you can escalate as follows:

  • For matters falling under the Equal Status Acts 2000–2018, contact the Workplace Relations Commission.
  • For matters under S.I. 358/2020, the National Disability Authority (Centre for Excellence in Universal Design) is the statutory monitoring body and can be contacted at nda.ie.
  • For matters arising under the European Accessibility Act, the Competition and Consumer Protection Commission (CCPC) is the designated market-surveillance authority for consumer services in Ireland.
  • EU residents elsewhere may refer concerns to the relevant national market-surveillance authority designated under the European Accessibility Act in their member state.

Preparation of this statement

This statement was prepared on 2026-05-05 following an internal accessibility audit covering keyboard operation, screen-reader semantics, colour contrast, focus order under SPA navigation, focus visibility under sticky regions, form label association and live-region announcement. Automated scanning (axe-core, Lighthouse) was combined with manual assistive-technology testing.

The statement is reviewed every quarter. Next scheduled review: 2026-08-05.

Read more about how we handle data on our trust page.