CVV, CVC, CID et CVV2 : ce que signifie vraiment le code de sécurité
Peu de sujets dans le paiement créent plus de confusion que le code à trois chiffres au dos d'une carte. Est-ce CVV, CVC, CVV2 ou CID ? Se trouve-t-il au recto pour Amex ? Pouvez-vous le stocker ? Cet article clarifie la terminologie et les règles qui comptent pour les développeurs.
Plusieurs noms, une seule idée
Le code de sécurité imprimé est un nombre court qui n'est pas encodé dans la piste magnétique ni dans la puce EMV. Comme le skimming en carte présente ne le capture pas, le demander montre que la personne qui paie a (ou a vu) la carte physique, ce qui le rend précieux pour les transactions carte absente (CNP).
| Terme | Signification | Utilisé par | Longueur | Position |
|---|---|---|---|---|
| CVV2 | Card Verification Value 2 | Visa | 3 chiffres | Verso |
| CVC2 | Card Verification Code 2 | Mastercard | 3 chiffres | Verso |
| CID | Card Identification Number | American Express | 4 chiffres | Recto |
| CID | Card Identification | Discover | 3 chiffres | Verso |
| CAV2 | Card Authentication Value 2 | JCB | 3 chiffres | Verso |
| CVV1 / CVC1 | Card Verification Value / Code | Visa / Mastercard | — | Encodé dans la piste magnétique, non imprimé |
CVV1 et CVV2 (ou CVC1 et CVC2) sont des valeurs différentes. CVV1/CVC1 est encodé dans la piste magnétique et vérifié lors des transactions carte présente ; CVV2/CVC2 est calculé séparément et imprimé sur la carte pour les paiements carte absente. La puce porte encore une autre valeur (iCVV). Les formulaires de paiement ne recueillent jamais que le code imprimé, et au quotidien les développeurs utilisent « CVV » comme nom générique de ce champ, quel que soit le réseau de la carte.
Les deux points qui comptent vraiment dans le code :
- Amex utilise 4 chiffres au recto — tout champ de saisie qui impose 3 chiffres fera échouer les tests Amex.
- Le code est une donnée d'authentification sensible (SAD) au sens de PCI DSS, soumise à des règles plus strictes que le numéro de carte lui-même.
Les règles PCI DSS que vous ne pouvez pas ignorer
Le CVV est classé comme donnée d'authentification sensible. Selon PCI DSS :
- Vous pouvez l'utiliser pour traiter une transaction.
- Vous ne pouvez pas le conserver une fois la transaction autorisée — ni dans les logs, ni dans une base de données, ni dans un événement analytics, ni dans une capture d'écran de support — même chiffré (PCI DSS v4.0, exigence 3.3.1).
- Si vous le conservez brièvement avant l'autorisation, il doit être protégé par une cryptographie robuste (exigence 3.3.2).
- Il ne peut jamais être stocké pour les cartes enregistrées ou les paiements récurrents. Seuls les émetteurs de cartes bénéficient d'une exception limitée.
En pratique, cela signifie :
- Ne journalisez jamais de payloads de requête contenant
cvv,cvc,cidousecurity_code. - Marquez le champ comme sensible dans vos outils d'observabilité et supprimez-le en périphérie.
- Quand un fournisseur renvoie un résultat de vérification, stockez le résultat (par exemple le
cvc_checkde Stripe :pass,fail,unavailableouunchecked), jamais la valeur elle-même. - Gardez le champ CVV hors de votre propre API si le navigateur peut l'envoyer directement au point de terminaison de tokenisation de la passerelle.
- Ne réaffichez jamais la valeur à l'utilisateur après l'envoi.
Comment se comportent les contrôles CVV en pratique
Un contrôle CVV est un signal d'autorisation distinct, pas une barrière stricte. Les émetteurs et les passerelles gèrent différemment une non-concordance :
- Certains refusent purement et simplement la transaction.
- Certains l'approuvent et renvoient un code
CVC mismatch, laissant le marchand décider. - Certains sont configurés pour ignorer complètement le contrôle dans certaines régions.
Vous pouvez le tester délibérément : le numéro 4000 0000 0000 0127 de Stripe renvoie un refus incorrect_cvc chaque fois qu'un CVC est envoyé, ce qui est idéal pour exercer votre gestion d'erreur sans toucher à une vraie carte. Voir la liste complète des cartes de test pour en savoir plus.
Générer des CVV de test
Pour le travail en sandbox, Stripe et Braintree acceptent 3 chiffres quelconques (4 pour Amex) ; certaines passerelles exigent des valeurs précises, comme le 737 d'Adyen. Notre générateur de cartes peut attacher un CVV aléatoire ou fixe à chaque numéro généré et produire le résultat dans un format séparé par des barres verticales, facile à parser en fixtures :
4242424242424242|12|2030|123
Si vous devez générer des numéros pour une plage d'émetteur précise, le générateur avancé accepte les motifs avec jokers, et le vérificateur de BIN vous indique à quel réseau appartient un préfixe.
Résumé
- CVV2, CVC2, CID et CAV2 sont les noms propres à chaque réseau d'un même code de sécurité imprimé.
- Amex est l'exception : 4 chiffres, imprimés au recto.
- Ne stockez jamais le code après l'autorisation — PCI DSS le traite comme une donnée d'authentification sensible.
- Traitez une non-concordance de CVV comme une issue configurable et testez à la fois le refus et le soft-fail.