PCI DSS 4 Headless eCommerce: SAQ Scoping Guide (2026)
No7 Engineering Team
Growth Architecture Unit

Clearing a PCI DSS 4 headless eCommerce audit in 2026 requires moving beyond simple iframe integration to active parent-page script management. If you build a custom frontend on Hydrogen or Next.js, you own the delivery of the page hosting the payment fields, placing the security boundary directly in your codebase.
The New Reality of PCI DSS 4 Headless eCommerce
For years, engineering teams believed that outsourcing payments via an iframe absolved them of compliance. Under version 4.0 of the PCI Data Security Standard (PCI DSS), which became fully mandatory after 31 March 2025, that assumption is dead. The architecture of headless commerce means that while your servers never touch cardholder data, your custom frontend code determines whether that data is safe from client-side interception.
When you serve a storefront from a Node.js runtime on Oxygen or Vercel, you are responsible for the integrity of every script executing in the user's browser. If an attacker compromises your deployment pipeline or injects a malicious payload via a third-party tag, they can harvest card numbers before they reach the payment processor's iframe.
The Trap of SAQ A Eligibility Under FAQ 1588
To understand your compliance path, we must look at how the PCI Security Standards Council (PCI SSC) updated the Self-Assessment Questionnaire (SAQ) A. In early 2025, the council released an update that removed the client-side monitoring requirements—specifically Requirements 6.4.3 and 11.6.1—from the body of SAQ A.
This was not a relaxation of standards; it was a restructuring. The council replaced those requirements with a strict eligibility criterion. To qualify for SAQ A, the merchant must confirm that their site is not susceptible to attacks from scripts that could affect the merchant's e-commerce system.
To clarify this, the council issued FAQ 1588, which outlines how a merchant validates this claim. You have two choices: implement technical controls equivalent to Requirements 6.4.3 and 11.6.1 on your parent page, or obtain formal confirmation from your payment processor that their embedded solution actively protects your parent page from script-based attacks.
If you cannot satisfy either option, your headless store is disqualified from SAQ A. You must instead validate under SAQ A-EP or SAQ D, which increases your compliance burden from roughly 30 controls to over 200, including mandatory external penetration testing.
SAQ A vs SAQ A-EP: What Controls Apply to Your Headless Stack?
If you are planning a migration as outlined in our headless commerce practical guide, you must design your payment architecture around these compliance boundaries from day one. Navigating the choice between SAQ A and SAQ A-EP comes down to where the payment form is rendered and who controls the script execution environment.
Under SAQ A, the payment page must be hosted by a PCI-compliant processor, or rendered within an iframe where all elements originate directly from the processor. In a headless setup using frameworks like Shopify Hydrogen or BigCommerce Catalyst, you typically render an iframe-based component such as Stripe Elements or Adyen Secured Fields.
The moment you bypass these iframe wrappers and use a direct API integration—where your custom React components capture raw card data and post it to a backend endpoint—you land squarely in SAQ A-EP. This shift requires your team to implement extensive server-side security controls. For stores in the £1M-£15M GMV band, maintaining SAQ A-EP compliance can easily double your ongoing engineering support costs.
Headless PCI DSS 4.0 Compliance Framework
A practical decision matrix for engineering teams managing custom frontends in 2026.
- Payment Integration — Use isolated iframes (Stripe Elements, Adyen Secured Fields) to remain in SAQ A scope.
- Script Inventory (6.4.3) — Maintain a documented registry of every third-party script running on your payment pages.
- Integrity Verification — Implement Subresource Integrity (SRI) hashes and strict Content Security Policies (CSP).
- Change Detection (11.6.1) — Set up real-time monitoring and alerting for unauthorized script modifications.
- ASV Scans (11.3.2) — Ensure quarterly Approved Scanning Vendor scans are run on all storefront hosting domains.
Securing the Iframe-Tokenization Boundary on Hydrogen and Catalyst
When implementing payment components on a headless frontend, the boundary between your application state and the payment processor's secure environment must be absolute. In a Hydrogen or Catalyst project, this means ensuring that cardholder data never touches your React state, your component props, or your server-side rendering (SSR) context.
For example, when using Stripe Elements, the iframe isolates the actual input fields from the surrounding DOM. Your React code only interacts with tokenised representations of the payment instrument. However, the parent page still contains the JavaScript execution environment that bootstraps these iframes.
If your frontend bundle is compromised, an attacker can use DOM injection to overlay invisible input fields directly on top of the secure iframe, intercepting keystrokes before they reach the payment gateway. To mitigate this, your engineering team must treat the payment route as a highly secure zone. This means stripping the route of all non-essential scripts, including marketing tags, tracking pixels, and customer support widgets.
We recently audited a headless checkout where an unmonitored chat widget—which hadn't been replied to since 2023—was actively loading on the payment route. It was pulling unvetted JavaScript from an expired domain in Eastern Europe.
Implementing Requirement 6.4.3: Script Authorization and Inventory
For headless teams that must satisfy the 'not susceptible to script attacks' SAQ A eligibility criterion, implementing the spirit of Requirement 6.4.3 is the most robust path forward. This requirement mandates that you maintain an inventory of all scripts executing on your payment pages, accompanied by a written business justification for each.
In a custom React environment, managing this inventory requires a combination of build-time checks and runtime policies. You should start by auditing your dependency graph. A typical Next.js or Remix build can pull in hundreds of nested npm packages, any of which could be compromised via a supply-chain attack.
Implementing a robust Content Security Policy (CSP) is the cornerstone of this defence, as we discuss in our ecommerce security headers guide. Your CSP should use strict nonces or cryptographic hashes to ensure that only pre-authorised scripts can execute on your checkout routes. We recently audited a headless build where a single third-party tag manager injected 14 unvetted scripts on the payment page, instantly failing the PCI 4.0 check.
Meeting Requirement 11.6.1: Real-Time Script Tampering Detection
Even with a strict CSP in place, you must have a mechanism to detect and alert on unauthorized modifications to your payment pages in real time. This is the core expectation of Requirement 11.6.1.
In a headless architecture, this monitoring must cover both the HTTP response headers served by your frontend server and the actual DOM rendered in the consumer's browser. If an attacker gains access to your server configuration and modifies your security headers, or injects a malicious script directly into the HTML stream, your systems must trigger an immediate alert.
To achieve this, we recommend configuring CSP violation reporting using the report-to or report-uri directives. These directives instruct the user's browser to send a JSON payload to a monitoring endpoint whenever a script violates your security policy. Additionally, under Requirement 11.3.2, you must run quarterly vulnerability scans performed by an Approved Scanning Vendor (ASV). These scans target your public-facing storefront domains, identifying open ports, outdated SSL configurations, and unpatched framework vulnerabilities.
What to Do Next to Clear Your 2026 Audit
Securing a headless eCommerce storefront against client-side threats is not a one-time project; it requires continuous engineering discipline. To ensure your custom Hydrogen or Catalyst build clears its next PCI DSS 4 audit, you must take immediate control of your payment route architecture.
Start by isolating your checkout and payment pages from your main marketing site. If possible, route your checkout through the native SaaS checkout of your underlying platform, such as Shopify's checkout page, which is fully managed and secured by the platform provider. If your brand requirements dictate a fully custom checkout, you must immediately implement a strict script-whitelisting policy and deploy real-time CSP monitoring.
Review your payment processor's integration guides and request their latest Attestation of Compliance (AoC). Ensure your engineering team conducts a thorough review of all third-party dependencies before every production release. If you need assistance auditing your headless security architecture, establishing robust security headers, or preparing your custom frontend for an upcoming PCI DSS 4 audit, we can help. Our team regularly audits complex headless builds to ensure they remain secure, compliant, and performant.
Frequently Asked Questions
The questions buyers and engineers ask us most about this topic.
Does a headless storefront automatically require SAQ A-EP instead of SAQ A?
No, a headless storefront does not automatically force you into SAQ A-EP, but maintaining SAQ A eligibility requires strict architectural discipline. If your custom frontend on Shopify Hydrogen or BigCommerce Catalyst loads payment fields inside isolated iframes—such as Stripe Elements or Adyen Secured Fields—and you do not touch raw cardholder data, you can validate under SAQ A. However, under the 2026 PCI DSS 4 rules and FAQ 1588, you must actively prove that your custom parent page is not susceptible to script-based attacks by implementing robust Content Security Policies (CSP) or getting written compliance assurances from your payment processor.
What are the biggest pitfalls when auditing a headless checkout for PCI DSS 4?
The most common pitfall we see in headless checkouts is script drift on the checkout route. While engineering teams meticulously secure their React components, marketing teams frequently inject unvetted third-party tracking pixels and chat widgets via Google Tag Manager. Under PCI DSS 4 Requirement 6.4.3, every single script running on your payment page must be authorized and justified. A single unauthorized script from an unmonitored marketing tag will instantly fail your audit. Another major pitfall is failing to configure real-time CSP violation reporting, which is essential to clear the monitoring expectations of Requirement 11.6.1.