Group
  • Payments

    Keep card data out of my servers (PCI scope)

    Confirms card numbers only ever touch the provider's fields and that your systems store nothing PCI-regulated.

    • Plan & validate
    • Improve quality
    • Intermediate
    • General

Free Prompt

Audit my payment flow for PCI scope: confirm that raw card data never touches my servers, my logs, or my database. Verify and fix: card entry happens only in the provider's hosted fields (Stripe Elements, Checkout, or the equivalent, where card numbers go browser-to-provider and I receive a token), never in my own form fields that post to my server; my database stores only provider tokens, customer IDs, and card metadata the provider returns (brand, last four, expiry), never full numbers or CVCs; my logs can't capture card data (check request logging and error reporting for anything that logs request bodies on payment endpoints, and add explicit scrubbing); and analytics or session-replay tools are configured to mask the payment fields, since replay tools record everything users type by default. Search the codebase and the database for anything shaped like a card number (16-digit sequences) and report what you find. Don't build my own card form posting to my server 'to keep the design'; that's the decision that pulls my whole infrastructure into PCI-DSS compliance scope. The provider's fields can be styled. Don't store CVCs ever, under any circumstances; card network rules forbid it. Deliver: the card-data flow map (where numbers exist and where only tokens exist), any violations found and fixed, the log scrubbing, and verification: run a test purchase and grep my server logs and database for the test card number, confirming it appears nowhere.

What This Does / How This Helps

Keeps raw card numbers entirely out of your infrastructure, which keeps you out of PCI-DSS compliance scope and means a breach of your systems can't leak card data. The moment a card number touches your server (a form post, a log line, a session replay recording), you inherit a compliance regime with audits and real liability, and your database becomes a target worth attacking. The provider's hosted fields exist precisely so you never hold the data. The final grep is the honest test: run a purchase, then prove the card number exists nowhere in your logs or database.

Want to skip doing this by hand?

Fortivibe audits your app for all of the areas these prompts cover (and more).

See What We Check

Related Prompts