Secure Software Development Practices
PCI DSS 4.0.1 Requirement 6.2.1 requires you to build bespoke and custom software using secure development standards, align the build to PCI DSS expectations (such as secure authentication and logging), and address security at every SDLC stage (PCI DSS v4.0.1 Requirement 6.2.1). To operationalize it fast, define an SSDLC standard, gate releases with security checks, and retain evidence that security requirements, review, and testing occurred for each change.
Key takeaways:
- Document a secure SDLC standard mapped to PCI DSS needs, then make it the default for all custom code in scope (PCI DSS v4.0.1 Requirement 6.2.1).
- Add enforceable gates: secure requirements, code review, security testing, and release approval tied to change records.
- Keep audit-ready artifacts per release: requirements, review approvals, test results, and proof of secure authentication/logging expectations.
“Secure software development practices requirement” in PCI DSS 4.0.1 is straightforward in wording but easy to fail in execution: assessors look for a repeatable, organization-wide way to build custom code securely, not isolated heroics by one team. Requirement 6.2.1 applies to bespoke and custom software and expects two things at the same time: (1) development based on industry standards and/or best practices, and (2) security considerations built into each SDLC stage, explicitly in accordance with PCI DSS (PCI DSS v4.0.1 Requirement 6.2.1).
For a Compliance Officer, CCO, or GRC lead, the practical job is to turn “securely developed” into auditable system behavior. That means setting the minimum SSDLC standard, defining what “PCI DSS-aligned” means for your code (secure authentication, logging, etc.), and implementing measurable controls in the delivery pipeline. You also need evidence that developers followed the process for real changes, not only that a policy exists.
This page gives requirement-level implementation guidance: who is in scope, what to implement, what artifacts to retain, and where audits commonly get stuck.
Regulatory text
Requirement text (verbatim): “Bespoke and custom software are developed securely, as follows: based on industry standards and/or best practices for secure development, in accordance with PCI DSS (for example, secure authentication and logging), and incorporating consideration of information security issues during each stage of the software development lifecycle.” (PCI DSS v4.0.1 Requirement 6.2.1)
Operator interpretation (what an assessor expects)
You must be able to demonstrate, for in-scope bespoke/custom applications, that:
- Your development method is anchored in recognized secure development standards or best practices. The requirement does not mandate a single named standard, but it does require that you choose and adopt one (PCI DSS v4.0.1 Requirement 6.2.1).
- Your software meets PCI DSS security expectations. The text explicitly calls out secure authentication and logging as examples. Assessors will test whether these needs are defined and implemented consistently (PCI DSS v4.0.1 Requirement 6.2.1).
- Security is integrated into each SDLC stage. You need evidence from requirements through design, build, test, and release that security was considered, not bolted on at the end (PCI DSS v4.0.1 Requirement 6.2.1).
Plain-English requirement (what this means in practice)
If your organization writes custom code that stores, processes, transmits, or can impact the security of payment card data, you must run an SSDLC. That SSDLC must be documented, used by teams, and enforced through workflow (tickets, source control, CI/CD). Every meaningful change should produce evidence that security requirements were defined, code was reviewed, security testing occurred, and release approval happened under change control.
Who this applies to (entity and operational context)
Entity types in scope: merchants, service providers, and payment processors (PCI DSS v4.0.1 Requirement 6.2.1).
Operational scope (typical):
- Custom applications in the cardholder data environment (CDE), and custom apps that connect to or can impact the security of the CDE.
- Custom APIs, microservices, middleware, batch jobs, and admin tools used to support payment flows.
- Infrastructure-as-code and deployment scripts can be treated as “custom software” in practice; many assessors expect similar discipline because these artifacts can change security posture.
Common edge cases to decide explicitly:
- “Low-code” or scripts: If it affects authentication, authorization, logging, encryption, network access, or payment workflows, treat it as in scope.
- Third-party code changes: If you customize a third-party platform, your customizations are bespoke/custom and should follow the SSDLC; the third party’s product SDLC does not cover your changes.
What you actually need to do (step-by-step)
Use the sequence below as an implementation checklist you can assign across Engineering, AppSec, and GRC.
1) Define an SSDLC standard you can defend
- Select an “industry standards and/or best practices” baseline and write a short internal standard that your teams can follow (PCI DSS v4.0.1 Requirement 6.2.1).
- Specify minimum required activities per SDLC stage (requirements, design, build, test, release).
- Include PCI DSS-aligned expectations for custom code, at least:
- Authentication and session management expectations.
- Authorization checks (role-based access or equivalent).
- Logging and security event logging expectations (what to log, what not to log).
- Secure error handling and secrets management.
Practical tip: Keep the standard short enough that engineering leadership will endorse it and teams will adopt it. Long policy documents do not pass audits by themselves; evidence does.
2) Build security into requirements and design (don’t start at code review)
Implement two artifacts that can be produced per feature/change:
- Security requirements section in your product requirement document (or ticket template). Require teams to state:
- Data sensitivity (does it touch payment data or CDE-adjacent data?).
- Authentication/authorization model.
- Logging/events required.
- Design review trigger for higher-risk changes (for example: new auth flows, new admin features, new integrations).
Assessor-friendly evidence: a ticket template with required fields and completed examples for in-scope work.
3) Enforce secure coding and peer review in source control
Minimum implementation that tends to satisfy audits:
- Branch protection rules requiring:
- Peer review approval before merge.
- Passing build checks before merge (lint/unit tests at minimum).
- A code review checklist that includes secure items tied to PCI DSS expectations (authn/authz, logging, error handling).
Hangup to avoid: “We do code review” without proof. You need pull request records showing reviewers, comments, approvals, and the linked change ticket.
4) Add security testing appropriate to the change
The requirement does not prescribe tools, but you must show security was considered throughout SDLC (PCI DSS v4.0.1 Requirement 6.2.1). A practical baseline:
- Automated testing in CI/CD appropriate to your stack (static checks, dependency scanning, and basic security unit tests where relevant).
- Pre-release testing for high-risk changes (targeted manual testing or formal security review).
Control design advice: Tie test execution to the pipeline so you can show that tests ran for each build/release. If you run scans outside CI/CD, ensure results are linked to the release record.
5) Release with change control and “security sign-off” criteria
For in-scope releases:
- Require a change record that links to:
- Requirements ticket(s)
- Pull requests/commits
- Test results
- Deployment approval
- Define what constitutes security readiness:
- No known high-risk findings without approved exception and remediation plan.
- Required logging enabled and validated in the environment.
6) Train developers on your SSDLC standard (and prove it)
The requirement is about secure development practices; you should be able to show developers understand and follow the standard (PCI DSS v4.0.1 Requirement 6.2.1). Keep it practical:
- Secure coding training aligned to the risks your teams actually ship (auth, access control, logging, injection classes relevant to your stack).
- Role-based onboarding for new engineers working on in-scope repositories.
7) Operationalize exceptions (because you will have them)
Define an exception process with:
- Business justification
- Risk acceptance owner
- Compensating controls
- Expiration/review date
- Remediation plan
This is often the difference between “we missed a gate once” and “we have no control.”
Required evidence and artifacts to retain
Create an “audit binder” structure for each in-scope application or repository. Retain:
Program-level (shows the standard exists)
- SSDLC standard and secure coding guidelines mapped to PCI DSS expectations (PCI DSS v4.0.1 Requirement 6.2.1).
- SDLC stage controls (requirements template, review checklists, release checklist).
- Training materials and completion records for relevant personnel.
Per-release / per-change (shows the standard is used)
- Requirements tickets with security requirements completed.
- Design review notes/approvals (where required by your standard).
- Pull request evidence: reviewers, approvals, and checklist completion.
- Security testing outputs (scan reports, test run logs) with traceability to the release.
- Change record and deployment approval.
- Exception approvals and remediation tracking (if applicable).
Retention approach: align retention to your broader PCI and change-management evidence retention practices; what matters is that evidence is available for the assessor’s sample.
Common exam/audit questions and hangups
Expect questions like:
- “Show me your secure development standard and how it maps to PCI DSS expectations like secure authentication and logging” (PCI DSS v4.0.1 Requirement 6.2.1).
- “Pick two releases from the sample. Walk me from requirement through deployment and prove security was considered at each stage.”
- “How do you ensure developers can’t bypass peer review or merge failing builds?”
- “How do you handle vulnerabilities found during development? Who can approve exceptions?”
- “Which repositories are in scope for custom software, and why?”
Hangups that delay audits:
- In-scope systems are not clearly inventoried (teams argue about what is “custom”).
- Security checks exist but are not consistently enforced (optional pipeline steps).
- Evidence is scattered across tools without traceability to a specific release.
Frequent implementation mistakes (and how to avoid them)
- Policy-only SSDLC. Fix: require workflow artifacts (tickets, PR templates, pipeline gates) that generate evidence automatically.
- No SDLC stage coverage. Fix: add lightweight controls in requirements and design, not only code scanning at the end (PCI DSS v4.0.1 Requirement 6.2.1).
- Authentication and logging treated as “engineering details.” Fix: publish explicit application security requirements for auth and logging and bake them into review checklists (PCI DSS v4.0.1 Requirement 6.2.1).
- Exceptions handled in chat. Fix: formalize exceptions with owner approval and expiration, then track closure.
- Third-party code changes ignored. Fix: require SSDLC gates for your customizations and integration code, even if the underlying platform is managed by a third party.
Enforcement context and risk implications
No public enforcement cases were provided in the source catalog for this requirement. Practically, the risk is still concrete: weak secure development practices increase the chance that authentication flaws, missing logs, and insecure change deployment create a path to compromise systems connected to card data. From a PCI standpoint, the operational risk is assessment failure due to inability to prove repeatable controls and traceable evidence for sampled changes (PCI DSS v4.0.1 Requirement 6.2.1).
Practical execution plan (30/60/90-day)
Use this as a fast operational rollout. Adjust sequencing based on how mature your SDLC already is.
First 30 days: establish the minimum standard and scope
- Inventory bespoke/custom software in scope for PCI review; identify system owners.
- Publish an SSDLC standard with stage-by-stage minimums and explicit requirements for secure authentication and logging (PCI DSS v4.0.1 Requirement 6.2.1).
- Implement “evidence-producing” templates: security fields in tickets, PR review checklist, release checklist.
- Choose a small set of pilot repositories and enforce branch protection and required reviews.
By 60 days: make it enforceable and repeatable
- Turn on CI/CD gates that block merges/releases when required checks fail.
- Standardize security testing expectations by risk tier (lightweight for low-risk changes, deeper for auth/integration changes).
- Stand up the exception process and require it for any bypass of security gates.
- Train developers and tech leads on the SSDLC standard; document attendance/completion.
By 90 days: make it audit-ready across teams
- Expand enforcement to all in-scope repositories and services.
- Run an internal “mock sample”: select recent changes and verify you can produce end-to-end evidence quickly.
- Fix traceability gaps (tickets not linked, scan results not attached, missing approvals).
- If you use Daydream for compliance operations, configure a PCI evidence workspace to collect SSDLC artifacts by application and release so your team can answer assessor samples without scrambling.
Frequently Asked Questions
Does Requirement 6.2.1 apply to commercial off-the-shelf software we buy?
It targets bespoke and custom software you develop (PCI DSS v4.0.1 Requirement 6.2.1). If you configure or customize a third-party platform with your own code, treat that custom code as in scope for your SSDLC.
What counts as “industry standards and/or best practices” for secure development?
The requirement lets you choose a recognized baseline, but you must be able to show your SSDLC is based on such standards and is actually followed (PCI DSS v4.0.1 Requirement 6.2.1). Pick one baseline, document your interpretation, and enforce it through workflow and technical gates.
How do we prove “security is considered at each stage of the SDLC”?
Show artifacts from each stage: security requirements in tickets, design review evidence for higher-risk changes, peer review in pull requests, security testing outputs, and release/change approvals (PCI DSS v4.0.1 Requirement 6.2.1). Auditors typically validate this by sampling recent releases.
Our developers log a lot; how do we make logging “PCI DSS-aligned”?
Define what security-relevant events must be logged (authentication events, authorization failures, administrative actions) and what must not be logged (sensitive secrets). Then enforce it via review checklists and verify in test or pre-prod where feasible (PCI DSS v4.0.1 Requirement 6.2.1).
Can we meet 6.2.1 if security testing is manual?
Potentially, if you can show it happens consistently and is tied to releases with retained results (PCI DSS v4.0.1 Requirement 6.2.1). Most organizations reduce audit friction by adding automated checks that produce timestamped, repeatable evidence.
What evidence do assessors usually ask for first?
They usually start with your documented SSDLC standard and then pick a small sample of changes to test traceability from requirements to release (PCI DSS v4.0.1 Requirement 6.2.1). If you can produce that evidence quickly, the rest of the review moves faster.
Frequently Asked Questions
Does Requirement 6.2.1 apply to commercial off-the-shelf software we buy?
It targets bespoke and custom software you develop (PCI DSS v4.0.1 Requirement 6.2.1). If you configure or customize a third-party platform with your own code, treat that custom code as in scope for your SSDLC.
What counts as “industry standards and/or best practices” for secure development?
The requirement lets you choose a recognized baseline, but you must be able to show your SSDLC is based on such standards and is actually followed (PCI DSS v4.0.1 Requirement 6.2.1). Pick one baseline, document your interpretation, and enforce it through workflow and technical gates.
How do we prove “security is considered at each stage of the SDLC”?
Show artifacts from each stage: security requirements in tickets, design review evidence for higher-risk changes, peer review in pull requests, security testing outputs, and release/change approvals (PCI DSS v4.0.1 Requirement 6.2.1). Auditors typically validate this by sampling recent releases.
Our developers log a lot; how do we make logging “PCI DSS-aligned”?
Define what security-relevant events must be logged (authentication events, authorization failures, administrative actions) and what must not be logged (sensitive secrets). Then enforce it via review checklists and verify in test or pre-prod where feasible (PCI DSS v4.0.1 Requirement 6.2.1).
Can we meet 6.2.1 if security testing is manual?
Potentially, if you can show it happens consistently and is tied to releases with retained results (PCI DSS v4.0.1 Requirement 6.2.1). Most organizations reduce audit friction by adding automated checks that produce timestamped, repeatable evidence.
What evidence do assessors usually ask for first?
They usually start with your documented SSDLC standard and then pick a small sample of changes to test traceability from requirements to release (PCI DSS v4.0.1 Requirement 6.2.1). If you can produce that evidence quickly, the rest of the review moves faster.
Authoritative Sources
Operationalize this requirement
Map requirement text to controls, owners, evidence, and review workflows inside Daydream.
See Daydream