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-describedbyand announced viarole=“alert”. - Sticky regions never occlude focus — a global
scroll-padding-top: 80pxkeeps 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-motionand 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
- 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.
- 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.
- 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.
- PDF guides forthcoming under
/ie/downloads/will be tagged-PDF (PDF/UA-compliant) and Matterhorn-checked before publication. - 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.
- 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:
- Email accessibility@payslipiq.co.uk.
- Use the contact form with the subject line ‘Accessibility’.
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.