PCI Compliance for App Developers: The Short, Painful Version
If card data ever touches code you wrote, you inherit the full weight of PCI DSS. Here is the escalation ladder from SAQ A to SAQ D, why card-present payments need certified hardware, and how to build so none of it lands on you.

PCI compliance (the payment card industry's security rules for anyone who handles card data) is the price of the words "accepts credit cards." The short version: if card data ever touches code you wrote or servers you run, you inherit a security standard with hundreds of controls, an annual attestation (a formal signed declaration that you meet the standard), and consequences routed through your payment processor. The painful version of PCI compliance for app developers: most find this out after the checkout is already built.
One note before the specifics. Version numbers, dates, and questionnaire rules below are accurate as of publication; the standard moves, so treat the details as a snapshot.
What is PCI compliance, actually?
PCI DSS, the Payment Card Industry Data Security Standard, is a contractual obligation, not a law. Card networks impose it on banks and payment processors, and they impose it on merchants and the software those merchants run. The current version is 4.0.1, and the last wave of its new requirements became mandatory on March 31, 2025¹. The standard spans 12 requirement families, from network security and encryption to access control and logging, which expand into hundreds of individual controls².
No regulator shows up at your door. The consequences arrive commercially instead: fines passed down through your acquiring bank (the bank that settles card payments for a merchant), higher processing rates, and in the worst case losing the ability to accept cards at all. After a breach, forensic investigation and card reissuance costs follow the same path.
Why does "just add payments" put your whole app in scope?
Scope is the entire game. PCI DSS applies to every system that stores, processes, or transmits cardholder data, plus everything connected to those systems. Validation works like a ladder, and each rung is dramatically heavier than the last²:
SAQ A (Self-Assessment Questionnaire A): payments are fully outsourced to a compliant provider and card data never touches your systems. The shortest questionnaire.
SAQ A-EP: your site never touches card data but controls how customers reach the payment form. A large share of the full standard now applies to your web servers.
SAQ D: card data passes through anything you built, even briefly, even unstored. Effectively the whole standard, documented and attested every year.

The bottom rung is not "nothing," either. In January 2025 the PCI Security Standards Council removed the payment-page script requirements from SAQ A, but added an eligibility condition: you must confirm your site is not susceptible to script attacks that could affect your e-commerce system¹. Even the fully outsourced tier expects you to defend the page that hosts someone else's payment form.
Past six million card transactions a year, self-assessment ends entirely and an on-site audit by a QSA (a certified external assessor) begins².
Can you code your way around card-present payments?
No. In-person payments are where the ladder becomes a wall. Card-present transactions require certified hardware: physical readers that have passed the Council's PTS lab program, running approved firmware, provisioned through a payment processor. Turning a phone into the reader with software alone falls under a separate standard, Mobile Payments on COTS (MPoC), and it certifies the solution provider, not your build.

This is a boundary AI code generation cannot cross. A model can produce a convincing checkout screen in an afternoon; Can You Build a POS with Lovable or Replit? and Vibe Coding a Point of Sale trace where those builds stall. No generated code produces a certified reader, an acquiring agreement, or an attestation of compliance, no matter how long the model codes unsupervised. Compliance is also a recurring reason vibe-coded payment apps get rejected from the App Store.
How do developers actually shrink PCI scope?
You don't comply harder; you architect so there is less to comply with:
Never let a PAN (the primary account number, meaning the card number itself) touch your code. Use your processor's hosted payment fields so card data travels from the customer's browser straight to the processor.
Store tokens, not cards. Tokenization (swapping the card number for a reference string that is useless if stolen) keeps saved cards and refunds from dragging your database into scope.
For in-person sales, use certified readers from your processor so card data flows from the reader to the processor without transiting your app.
Keep the payment page boring. Every third-party script on it becomes something you have to account for.

Done right, your app orchestrates a sale without ever possessing card data, and the questionnaire stays short. Done wrong, one convenience feature ("just log the full request body") quietly converts you to SAQ D.
So how painful is PCI compliance for app developers?
Painful in proportion to how much card data your code touches, which is why the winning move is to touch none. The standard does not care whether a dev team wrote your app or an AI generated it in an afternoon; scope is scope. Before you ship anything that takes a card, ask one question: can a card number ever pass through code I wrote? If yes, budget for an audit. If no, keep it that way.
That architecture is how Final handles it too. A checkout built on Final, whether prompted in Build or built by your own AI over MCP, runs its payments through Final Pay: a payment processor and certified terminal hardware handle the card data, so the flow itself never owns a card number. Where Final Pay is available covers the practical side, and Connecting Tap to Pay to an AI POS Flow shows what card acceptance looks like when the compliance layer is already underneath.
Frequently asked questions
Is PCI compliance a legal requirement?
No. PCI DSS is a contractual obligation imposed by the card networks through banks and payment processors. The consequences are commercial: fines passed down through your acquiring bank, higher processing rates, or losing the ability to accept cards.
Does fully outsourcing payments remove PCI obligations?
No. Fully outsourced merchants can validate with SAQ A, the shortest questionnaire, but since the January 2025 revision they must also confirm their site is not susceptible to script attacks that could affect the e-commerce system.
What is the difference between SAQ A and SAQ D?
SAQ A applies when a compliant third party handles all card data and covers a small slice of the standard. SAQ D applies when card data touches your own systems and covers effectively the entire standard, attested annually.
Can an AI-generated app be PCI compliant?
The code can follow secure patterns, but compliance attaches to the business and its infrastructure: certified card readers, a processor agreement, and an annual attestation. No generated code supplies those pieces.
What version of PCI DSS is current?
PCI DSS 4.0.1, as of this article's publication. Its final future-dated requirements became mandatory on March 31, 2025. Check the PCI Security Standards Council site for the current state.
