Get a Quote
Compliance › PCI DSS

PCI DSS Compliance for AI-Built Apps

PCI DSS v4.0.1 applies to any app that stores, processes, or transmits cardholder data — including checkout flows built by Lovable, Bolt, Replit, v0, or any other AI app builder. As of March 31, 2025, all 51 previously future-dated requirements are fully enforceable. AI-generated checkout code has a repeated pattern of exposed secrets, missing database access controls, and homegrown payment forms that quietly disqualify a startup from the simple SAQ A questionnaire.

Get a Free Compliance Scan See Audit Pricing
Who It Applies To

Triggers, merchant levels & penalties

PCI DSS applies to any entity that stores, processes, or transmits cardholder data — primarily the primary account number (PAN) — or that could impact the security of the cardholder data environment, including through third parties like Stripe or PayPal. It doesn't matter whether the checkout was hand-coded or generated by an AI app builder in an afternoon; the obligation is the same. Merchant level is set per card brand based on trailing-12-month transaction volume, and most early-stage AI-built apps land in Level 4.

Merchant levelAnnual volume (per brand)Typical requirement
Level 16,000,000+ transactions/yrAnnual QSA-led Report on Compliance
Level 21,000,000–6,000,000/yrAnnual SAQ or RoC (varies by brand)
Level 320,000–1,000,000/yr (e-commerce)Annual SAQ
Level 4Under 20,000/yrAnnual SAQ — where most AI-app startups sit

Penalties are imposed by acquiring banks and card brands, not PCI SSC directly, and industry-reported ranges run from –nth in months 1–3 of non-compliance, up to –nth by month 7+. Beyond fines, the average cost of a data breach globally was .44M in 2025 (IBM), and historical card-data breaches at Target (.5M settlement, 41M+ accounts) and TJX (.9M, 94M+ accounts) show the scale of downstream liability when cardholder data leaks.

Sources: PCI Security Standards Council; Thoropass; Sprinto; IBM Cost of a Data Breach 2025.

The Rule

What PCI DSS v4.0.1 actually requires

The requirements below became fully mandatory on March 31, 2025 — and they are the ones AI checkout scaffolds skip most often.

RequirementWhat it means for your checkout
6.4.3Inventory every script on the payment page, document why each is authorized, and verify integrity (e.g. Subresource Integrity) — mandatory since 2025-03-31.
11.6.1A mechanism that detects and alerts on unauthorized changes to HTTP headers and payment-page content as delivered to the browser — the primary defense against Magecart-style e-skimming.
Requirement 8MFA is now required for ALL access into the cardholder data environment, not just admin/remote access.
Requirement 7Least-privilege access to any system component touching cardholder data.
Requirement 10Tamper-protected audit logging of all access to cardholder data, centrally reviewed, retained 12 months (3 immediately available).
11.2.2 / 11.3.1Quarterly ASV + internal vulnerability scans, plus annual internal & external penetration testing (and after any significant change).
Requirements 3 & 4No storage of PAN without strong cryptography/tokenization; strong encryption for cardholder data in transit.

Which SAQ you file depends entirely on how your checkout is architected: SAQ A (~22 controls) is only available for a fully outsourced payment page — a redirect or processor-hosted iframe with zero merchant-origin elements. SAQ A-EP (~139–191 controls) applies the moment your own site hosts or serves any script that affects the payment page — custom JS wrapping Stripe Elements, for example — even if card data itself never touches your server. SAQ D (~300+ controls) applies if your own systems store, process, or transmit PAN, or you use a non-compliant provider. PCI SSC is explicit: "if any element of a payment page originates from the merchant's website, the implementation is not eligible for SAQ A."

Sources: PCI Security Standards Council v4.0.1 documentation; PCI SSC information supplement, Payment Page Security and Preventing E-Skimming; Schellman; Foregenix.

The Core Problem

Why AI-built checkout flows fail PCI DSS

Prompting an AI builder to "add a payment form" tends to produce the same handful of PCI failures, over and over:

  • Card data touches your own server. Instead of a hosted iframe or redirect, the AI wires a custom form or API route that receives raw card data — disqualifying SAQ A and pushing you into A-EP or D.
  • No script inventory or integrity checks. AI-generated frontends pull in third-party analytics, chat widgets, and pixels with no authorization list and no SRI — a direct 6.4.3 violation.
  • Secrets shipped in the client bundle. Escape.tech scanned 5,600 vibe-coded apps on 2025-10-29 and found 400+ exposed secrets; Supabase service keys were described as "trivially retrievable from frontend bundles."
  • Database access controls left open. Supabase Row Level Security disabled or default-open is a Requirement 7/8 failure. CVE-2025-48757 (Lovable, CVSS 8.26–9.3, published 2025-05-29) let anonymous users read, modify, or delete any row across 170+ apps; a larger Lovable exposure in April 2026 affected pre-November-2025 projects' source, database credentials, and customer data.
  • No logging or tamper detection. Scaffolded apps typically skip Requirement 10 audit logging and 11.6.1 change-detection entirely.
  • Homegrown "Direct Post" checkout. The single most common slide from SAQ A into A-EP/D is an AI builder producing its own POST-to-server card form instead of a hosted Checkout, redirect, or Elements iframe.
  • It's a systemic pattern, not an edge case. RedAccess found roughly 380,000 public assets built with tools like Lovable, Base44, Replit, and Netlify, with ~5,000 exposing sensitive corporate data. Separately, CodeRabbit's December 2025 analysis of 470 PRs found AI-generated code carried 2.74× more security vulnerabilities than human-written code.

Sources: Escape.tech methodology report (2025-10-29); NVD/SentinelOne CVE-2025-48757; The Register / Axios (Lovable, 2026-04-20); Bastion.tech; VentureBeat (RedAccess); CodeRabbit (Dec 2025).

Platform By Platform

Does your payment processor or host cover this?

Your processor's own PCI status never automatically covers how your app is wired — scope depends entirely on what your code does with card data.

PlatformPCI posture
StripePCI Service Provider Level 1. Dashboard analyzes your integration and recommends an SAQ, but you still submit your own SAQ/AOC to your acquirer.
SquareCard systems meet Level 1 PCI, plus SOC 1/2 and ISO 27001. Merchants using Square for all card handling generally don't need to separately validate — unless custom code touches raw card data.
PayPal / BraintreeLevel 1 Service Provider (Visa CISP, Mastercard SDP, SOC 1). Merchants still complete their own annual SAQ based on integration method.
VercelHolds an SAQ-D AOC (as service provider) and an SAQ-A AOC under v4.0. Shared responsibility: keep a processor iframe to stay at SAQ A — POSTing card data through a Vercel API route pulls it into scope.
Netlify / Replit / SupabaseNo dedicated PCI AOC found for any of the three (unverified). Supabase itself doesn't store card data and holds SOC 2 — not PCI — and any of your own tables storing PAN are your liability, not theirs.

Rule of thumb: a static frontend that redirects to Stripe Checkout keeps your host largely out of scope (SAQ A). Any serverless function that receives, logs, or proxies raw card data pulls your host into the cardholder data environment.

Sources: docs.stripe.com/security; squareup.com; vistainfosec.com; vercel.com/docs/security/pci-dss (updated 2026-03-17); supabase.com/security.

The Fix

Remediation checklist

  • Map the full payment data flow — client JS, serverless functions, database tables, webhooks.
  • Determine current vs. target SAQ eligibility (genuine redirect/iframe = SAQ A candidate; any merchant-origin code = A-EP/D).
  • Remove card data from your own systems — migrate to hosted Checkout, Payment Element (iframe), or Payment Links.
  • Rotate and relocate every secret to a server-side secret manager; audit git history and client bundles for leaked keys.
  • Lock down database access — enable and configure RLS on every table/route; fix broken object-level authorization server-side.
  • Implement 6.4.3 — script inventory, authorization, and integrity (SRI).
  • Implement 11.6.1 — change/tamper detection on the payment page.
  • Add Requirement 10 logging — centralized, tamper-protected, 12-month retention with 90 days immediately accessible.
  • Enforce MFA (Requirement 8) and least-privilege access (Requirement 7).
  • Run quarterly ASV + internal scans (11.2.2) and an annual penetration test (11.3.1) — and again after any re-platform.
  • Complete and sign the correct SAQ (or QSA Report on Compliance for Level 1–2), and submit the AOC to your acquirer.
  • Treat it as continuous, not point-in-time — re-verify after every deploy that touches payment code, dependencies, or database policies.
What changed recently: PCI DSS v4.0.1 (published 2024-06-11) made zero new/deleted requirements versus v4.0 — it clarified language in Requirements 3, 6, 8, and 12. v3.2.1 and v4.0 both retired on 2024-12-31, so v4.0.1 is the only valid version today. All 51 future-dated requirements, including 6.4.3, 11.6.1, and MFA-for-all-CDE, became mandatory on 2025-03-31.
FAQ

PCI DSS compliance questions, answered

Is Stripe PCI compliant, and does that make my app compliant?

Stripe is certified as a PCI Service Provider Level 1. That covers Stripe's own infrastructure, not how your app integrates it. If your site hosts or serves any script touching the payment page, you're likely SAQ A-EP, not SAQ A, and you must still complete and submit your own SAQ.

What's the difference between SAQ A and SAQ A-EP?

SAQ A (~22 controls) requires a fully outsourced payment page with zero merchant-origin elements — a true redirect or processor-hosted iframe. SAQ A-EP (~139–191 controls) applies the moment your own website hosts or serves any element or script affecting that payment page, even if card data itself goes straight to the processor.

Does using Vercel, Netlify, or Supabase make my checkout PCI compliant?

No. Vercel holds its own SAQ-D and SAQ-A AOCs as a service provider, but a Vercel API route that receives raw card data still pulls you into scope. Netlify, Replit, and Supabase have no dedicated PCI AOC on record; Supabase holds SOC 2, which is not the same as PCI DSS.

Is my Lovable or Bolt app automatically secure enough for PCI?

No. CVE-2025-48757 let anonymous users read, modify, or delete data across 170+ Lovable apps because Supabase Row Level Security was left disabled — a direct PCI Requirement 7/8 failure. AI builders generate working checkout UI, not the access controls, logging, and script integrity PCI DSS requires.

What happens if my app isn't PCI compliant?

Acquiring banks and card brands can levy escalating monthly fines — industry-reported ranges run –nth initially, rising to –nth for sustained non-compliance — on top of breach costs that averaged .44M globally in 2025.

How do I fix an exposed Supabase database for PCI compliance?

Enable and correctly configure Row Level Security on every table, validate object ownership server-side to close BOLA gaps, rotate any service keys found in client bundles or git history, and add Requirement 10 audit logging on top — then re-scan before your next SAQ submission.

Is your checkout flow secretly out of scope for SAQ A?

We audit AI-built checkout flows against PCI DSS v4.0.1 — script inventory, RLS, secrets, logging — and hand you a fix-it list before your acquirer finds the gap.

Get a Free Compliance Scan

Related searches: is Stripe PCI compliant · PCI compliance checklist for startups · SAQ A vs SAQ A-EP which one do I need · PCI compliance for small business website · is my Lovable or Bolt app secure · does Vercel or Netlify support PCI compliance · PCI DSS requirements for e-commerce checkout page · Supabase database exposed fix RLS