Card security and SCA
Let the provider hold card data, guard the scripts on payment pages, handle 3-D Secure and its exemptions, and test every outcome with test cards.
- Required 5
- Recommended 3
Required
Choose a checkout that keeps you on SAQ A
PAY-1Never let card numbers reach your servers or your own scripts. Take card details only through the provider's hosted payment page or its iframe fields, so you qualify for the shortest PCI DSS self-assessment, SAQ A.
Guard every script on a payment page
PAY-76On every page that shows card fields or the provider's payment iframe, allow only scripts on a written inventory. Detect any change to those scripts or the page's security headers within 7 days, and alert.
Handle 3-D Secure in every card flow
PAY-2 EU, UK lawSend every card payment the customer starts through the provider's 3-D Secure step, and handle the result that asks for customer action.
Keep test and live modes apart
PAY-5Use the provider's test mode in every environment except production, and make the app refuse to start with a live key anywhere else.
Confirm your PCI DSS compliance every year
PAY-8File the PCI DSS self-assessment questionnaire that fits your checkout once every 12 months, and keep the provider's own attestation of compliance beside it.
Recommended
Save cards with consent and charge renewals off-session
PAY-3To charge a card later, save it at the first payment with SCA and the customer's consent. Mark each later charge as merchant-initiated.
Test every payment outcome with test cards
PAY-6Keep one automated test for each payment outcome, using the provider's test cards and test clocks, and run them before every release that touches payments.
Verify your domains for Apple Pay and Google Pay
PAY-77Register every domain and subdomain that shows a wallet button with the provider. Serve Apple's domain association file there with status 200 and no redirect.
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/payments/card-security-and-sca">Agent Wranglers payments and billing playbook</a>. In code you write, add a comment next to it with the same link.