OUTIL GRATUIT · CARTES DE TEST STRIPE
Cartes de test Stripe
La carte à retenir est 4242 4242 4242 4242, avec n'importe quel CVC à trois chiffres (quatre pour American Express), une date d'expiration future comme 12/34 et ce que vous voulez dans les autres champs. Elle ne fonctionne qu'avec vos clés API de test. Le tableau ci-dessous reprend 119 cartes de test vérifiées sur la documentation de Stripe le 26 septembre 2026, dont les 64 cartes que Stripe classe par pays : la carte française passe en tête de ce groupe, les IBAN SEPA français en tête des moyens de paiement locaux, et la carte co-badgée Cartes Bancaires figure parmi les marques. Cherchez, cliquez sur un numéro pour le copier, téléchargez l'ensemble en JSON ou en CSV pour votre suite de tests. Chaque carte d'échec indique aussi le code d'erreur, le decline code et l'événement webhook qu'elle produit — ce que la documentation officielle répartit sur trois pages.
Aussi enEnglish繁體中文日本語한국어EspañolFrançaisDeutschPortuguês (Brasil)
Cliquez sur un numéro pour le copier sans espaces. Rien n'est envoyé nulle part : le tableau et les téléchargements sont construits dans cette page. Le téléchargement suit le filtre, vous pouvez donc n'exporter que les cartes de refus.
| Numéro | Simule | Marque | PaymentMethod | Codes et événement |
|---|---|---|---|---|
| Paiement réussi, par marque de carte · 15 | ||||
| Paiement réussi | Visa | pm_card_visa |
||
| Paiement réussi avec une carte de débit | Visa (debit) | pm_card_visa_debit |
||
| Paiement réussi | Mastercard | pm_card_mastercard |
||
| Paiement réussi avec un BIN de la série 2 | Mastercard (2-series) | |||
| Paiement réussi avec une carte de débit | Mastercard (debit) | pm_card_mastercard_debit |
||
| Paiement réussi avec une carte prépayée | Mastercard (prepaid) | pm_card_mastercard_prepaid |
||
| Paiement réussi (15 chiffres, CVC à 4 chiffres) | American Express | pm_card_amex |
||
| Paiement réussi, second BIN American Express | American Express | |||
| Paiement réussi | Discover | pm_card_discover |
||
| Paiement réussi avec un numéro à 19 chiffres | UnionPay (19-digit) | |||
| Paiement réussi | Diners Club | pm_card_diners |
||
| Paiement réussi avec un numéro à 14 chiffres | Diners Club (14-digit) | |||
| Paiement réussi | JCB | pm_card_jcb |
||
| Paiement réussi | UnionPay | pm_card_unionpay |
||
| Paiement réussi avec une carte française co-badgée Cartes Bancaires/Visa | Cartes Bancaires / Visa | pm_card_visa_cartesBancaires |
||
| Refus · 10 | ||||
| Refus générique | Visa | pm_card_visa_chargeDeclined |
card_declined |
|
| Refus pour fonds insuffisants | Visa | pm_card_visa_chargeDeclinedInsufficientFunds |
card_declined |
|
| Refus pour carte perdue | Visa | pm_card_visa_chargeDeclinedLostCard |
card_declined |
|
| Refus pour carte volée | Visa | pm_card_visa_chargeDeclinedStolenCard |
card_declined |
|
| Refus pour carte expirée | Visa | pm_card_chargeDeclinedExpiredCard |
expired_card |
|
| Refus pour CVC incorrect (envoyez un CVC, sinon la vérification est ignorée) | Visa | pm_card_chargeDeclinedIncorrectCvc |
incorrect_cvc |
|
| Refus pour erreur de traitement | Visa | pm_card_chargeDeclinedProcessingError |
processing_error |
|
| Numéro incorrect — échoue exprès au contrôle de Luhn | Visa | incorrect_number |
||
| Refus pour dépassement de la limite de fréquence | Visa | pm_card_visa_chargeDeclinedVelocityLimitExceeded |
card_declined |
|
| Se rattache à un Customer, puis échoue au moment du débit | Visa | pm_card_chargeCustomerFail |
card_declined |
|
| Radar, fraude et vérifications d'adresse · 9 | ||||
| Risque maximal — Radar la bloque toujours | Visa | pm_card_radarBlock |
card_declined |
|
| Niveau de risque « highest » — Radar peut la bloquer selon vos règles | Visa | pm_card_riskLevelHighest |
card_declined |
|
| Niveau de risque « elevated » — Radar peut la placer en examen manuel | Visa | pm_card_riskLevelElevated |
||
| Score élevé de litige pour fraude | Visa | pm_card_highFraudDisputeScore |
||
| Score élevé d'avertissement précoce de fraude | Visa | pm_card_highEfwScore |
||
| Abus d'essai gratuit — bloquée si ce contrôle est activé | Visa | pm_card_freeTrialAbuseBlock |
card_declined |
|
| Échec de la vérification du CVC (seulement si vous envoyez un CVC) | Visa | pm_card_cvcCheckFail |
card_declined |
|
| Échec de la vérification du code postal (seulement si vous en envoyez un) | Visa | pm_card_avsZipFail |
card_declined |
|
| Échec des vérifications du code postal et de la ligne 1 de l'adresse | Visa | pm_card_avsFail |
card_declined |
|
| Litiges et avertissements de fraude · 8 | ||||
| Paiement réussi, puis contesté pour fraude | Visa | pm_card_createDispute |
||
| Paiement réussi, puis contesté pour fraude sur Discover | Discover | |||
| Paiement réussi, puis contesté pour produit non reçu | Visa | pm_card_createDisputeProductNotReceived |
||
| Paiement réussi, puis demande d'information plutôt qu'une rétrofacturation | Visa | pm_card_createDisputeInquiry |
||
| Paiement réussi, puis avertissement précoce de fraude | Visa | pm_card_createIssuerFraudRecord |
||
| Paiement réussi, puis contesté plusieurs fois | Visa | pm_card_createMultipleDisputes |
||
| Litige éligible à Visa Compelling Evidence 3.0 | Visa | pm_card_createCe3EligibleDispute |
||
| Litige éligible à Smart Disputes | Visa | pm_card_createAutoRepresentmentEligibleDispute |
||
| Remboursements et solde · 4 | ||||
| Remboursement d'abord en attente, qui aboutit plus tard | Visa | pm_card_pendingRefund |
||
| Remboursement apparemment réussi, qui échoue plus tard | Visa | pm_card_refundFail |
||
| Paiement national crédité directement sur le solde disponible | Visa | pm_card_bypassPending |
||
| Paiement international crédité directement sur le solde disponible | Visa | pm_card_bypassPendingInternational |
||
| 3D Secure · 9 | ||||
| 3DS requis, et l'authentification réussit | Visa (IE) | pm_card_threeDSecure2Required |
||
| 3DS requis sur une carte émise aux États-Unis, l'authentification réussit | Visa (US) | |||
| 3DS réussi, puis le paiement est quand même refusé | Visa | pm_card_threeDSecureRequiredChargeDeclined |
card_declined |
|
| La vérification 3DS elle-même échoue, et le paiement est refusé | Visa | pm_card_threeDSecureRequiredProcessingError |
card_declined |
|
| 3DS pris en charge, mais non requis par les règles par défaut | Visa | pm_card_threeDSecureOptional |
||
| 3DS pris en charge, mais la tentative produit une erreur de traitement | Visa | pm_card_threeDSecureOptionalProcessingError |
card_declined |
|
| Paiements hors session soumis à 3DS tant que la carte n'est pas configurée pour de futurs paiements | Visa | pm_card_authenticationRequiredOnSetup |
||
| Authentification requise à chaque transaction, quelle que soit la configuration de la carte | Visa | pm_card_authenticationRequired |
||
| Déjà configurée pour le hors session ; les paiements en session s'authentifient toujours | Visa | pm_card_authenticationRequiredSetupForOffSession |
||
| Paiement réussi, par pays · 64 | ||||
| Votre marchéPaiement réussi — pays d'émission : France | Visa | pm_card_fr |
||
| Paiement réussi — pays d'émission : États-Unis | Visa | pm_card_us |
||
| Paiement réussi — pays d'émission : Argentine | Visa | pm_card_ar |
||
| Paiement réussi — pays d'émission : Brésil | Visa | pm_card_br |
||
| Paiement réussi — pays d'émission : Canada | Visa | pm_card_ca |
||
| Paiement réussi — pays d'émission : Chili | Visa | pm_card_cl |
||
| Paiement réussi — pays d'émission : Colombie | Visa | pm_card_co |
||
| Paiement réussi — pays d'émission : Costa Rica | Visa | pm_card_cr |
||
| Paiement réussi — pays d'émission : Équateur | Visa | pm_card_ec |
||
| Paiement réussi — pays d'émission : Mexique | Visa | pm_card_mx |
||
| Paiement réussi — pays d'émission : Mexique | Carnet | |||
| Paiement réussi — pays d'émission : Panama | Visa | pm_card_pa |
||
| Paiement réussi — pays d'émission : Paraguay | Visa | pm_card_py |
||
| Paiement réussi — pays d'émission : Pérou | Visa | pm_card_pe |
||
| Paiement réussi — pays d'émission : Uruguay | Visa | pm_card_uy |
||
| Paiement réussi — pays d'émission : Émirats arabes unis | Visa | pm_card_ae |
||
| Paiement réussi — pays d'émission : Émirats arabes unis | Mastercard | pm_card_ae_mastercard |
||
| Paiement réussi — pays d'émission : Autriche | Visa | pm_card_at |
||
| Paiement réussi — pays d'émission : Belgique | Visa | pm_card_be |
||
| Paiement réussi — pays d'émission : Bulgarie | Visa | pm_card_bg |
||
| Paiement réussi — pays d'émission : Biélorussie | Visa | pm_card_by |
||
| Paiement réussi — pays d'émission : Croatie | Visa | pm_card_hr |
||
| Paiement réussi — pays d'émission : Chypre | Visa | pm_card_cy |
||
| Paiement réussi — pays d'émission : Tchéquie | Visa | pm_card_cz |
||
| Paiement réussi — pays d'émission : Danemark | Visa | pm_card_dk |
||
| Paiement réussi — pays d'émission : Estonie | Visa | pm_card_ee |
||
| Paiement réussi — pays d'émission : Finlande | Visa | pm_card_fi |
||
| Paiement réussi — pays d'émission : Allemagne | Visa | pm_card_de |
||
| Paiement réussi — pays d'émission : Gibraltar | Visa | pm_card_gi |
||
| Paiement réussi — pays d'émission : Grèce | Visa | pm_card_gr |
||
| Paiement réussi — pays d'émission : Hongrie | Visa | pm_card_hu |
||
| Paiement réussi — pays d'émission : Irlande | Visa | pm_card_ie |
||
| Paiement réussi — pays d'émission : Italie | Visa | pm_card_it |
||
| Paiement réussi — pays d'émission : Lettonie | Visa | pm_card_lv |
||
| Paiement réussi — pays d'émission : Liechtenstein | Visa | pm_card_li |
||
| Paiement réussi — pays d'émission : Lituanie | Visa | pm_card_lt |
||
| Paiement réussi — pays d'émission : Luxembourg | Visa | pm_card_lu |
||
| Paiement réussi — pays d'émission : Malte | Visa | pm_card_mt |
||
| Paiement réussi — pays d'émission : Pays-Bas | Visa | pm_card_nl |
||
| Paiement réussi — pays d'émission : Norvège | Visa | pm_card_no |
||
| Paiement réussi — pays d'émission : Pologne | Visa | pm_card_pl |
||
| Paiement réussi — pays d'émission : Portugal | Visa | pm_card_pt |
||
| Paiement réussi — pays d'émission : Roumanie | Visa | pm_card_ro |
||
| Paiement réussi — pays d'émission : Arabie saoudite | Visa | |||
| Paiement réussi — pays d'émission : Slovénie | Visa | pm_card_si |
||
| Paiement réussi — pays d'émission : Slovaquie | Visa | pm_card_sk |
||
| Paiement réussi — pays d'émission : Espagne | Visa | pm_card_es |
||
| Paiement réussi — pays d'émission : Suède | Visa | pm_card_se |
||
| Paiement réussi — pays d'émission : Suisse | Visa | pm_card_ch |
||
| Paiement réussi — pays d'émission : Royaume-Uni | Visa | pm_card_gb |
||
| Paiement réussi — pays d'émission : Royaume-Uni | Visa (debit) | pm_card_gb_debit |
||
| Paiement réussi — pays d'émission : Royaume-Uni | Mastercard | pm_card_gb_mastercard |
||
| Paiement réussi — pays d'émission : Australie | Visa | pm_card_au |
||
| Paiement réussi — pays d'émission : Chine | Visa | pm_card_cn |
||
| Paiement réussi — pays d'émission : Hong Kong | Visa | pm_card_hk |
||
| Paiement réussi — pays d'émission : Inde | Visa | pm_card_in |
||
| Paiement réussi — pays d'émission : Japon | Visa | pm_card_jp |
||
| Paiement réussi — pays d'émission : Japon | JCB | pm_card_jcb |
||
| Paiement réussi — pays d'émission : Malaisie | Visa | pm_card_my |
||
| Paiement réussi — pays d'émission : Nouvelle-Zélande | Visa | pm_card_nz |
||
| Paiement réussi — pays d'émission : Singapour | Visa | pm_card_sg |
||
| Paiement réussi — pays d'émission : Taïwan | Visa | pm_card_tw |
||
| Paiement réussi — pays d'émission : Thaïlande | Visa (credit) | pm_card_th_credit |
||
| Paiement réussi — pays d'émission : Thaïlande | Visa (debit) | pm_card_th_debit |
||
Moyens de paiement locaux : valeurs de test
Ce que Stripe publie pour le prélèvement SEPA en France, en Allemagne et en Espagne, Konbini au Japon et Boleto au Brésil. Cliquez sur une valeur pour la copier. Ces paiements attendent en processing ou en requires_action avant d'aboutir : la dernière colonne donne donc toute la séquence d'événements webhook.
| Valeur de test | Simule | Paramètre | PaymentMethod | Codes et événement |
|---|---|---|---|---|
| SEPA Direct Debit · France (FR) · 6 | ||||
| Votre marchéL'état du PaymentIntent passe de processing à succeeded | sepa_ |
pm_ |
||
| Votre marchéL'état du PaymentIntent passe de processing à succeeded au bout d'au moins trois minutes | sepa_ |
pm_ |
||
| Votre marchéL'état du PaymentIntent passe de processing à requires_payment_method | sepa_ |
pm_ |
||
| Votre marchéL'état du PaymentIntent passe de processing à requires_payment_method au bout d'au moins trois minutes | sepa_ |
pm_ |
||
| Votre marchéL'état du PaymentIntent passe de processing à succeeded, mais un litige est immédiatement créé | sepa_ |
pm_ |
||
| Votre marchéÉchec du paiement avec un code d'échec insufficient_funds | sepa_ |
pm_ |
insufficient_ |
|
| SEPA Direct Debit · Allemagne (DE) · 6 | ||||
| L'état du PaymentIntent passe de processing à succeeded | sepa_ |
pm_ |
||
| L'état du PaymentIntent passe de processing à succeeded au bout d'au moins trois minutes | sepa_ |
pm_ |
||
| L'état du PaymentIntent passe de processing à requires_payment_method | sepa_ |
pm_ |
||
| L'état du PaymentIntent passe de processing à requires_payment_method au bout d'au moins trois minutes | sepa_ |
pm_ |
||
| L'état du PaymentIntent passe de processing à succeeded, mais un litige est immédiatement créé | sepa_ |
pm_ |
||
| Échec du paiement avec un code d'échec insufficient_funds | sepa_ |
pm_ |
insufficient_ |
|
| SEPA Direct Debit · Espagne (ES) · 6 | ||||
| L'état du PaymentIntent passe de processing à succeeded | sepa_ |
pm_ |
||
| L'état du PaymentIntent passe de processing à succeeded au bout d'au moins trois minutes | sepa_ |
pm_ |
||
| L'état du PaymentIntent passe de processing à requires_payment_method | sepa_ |
pm_ |
||
| L'état du PaymentIntent passe de processing à requires_payment_method au bout d'au moins trois minutes | sepa_ |
pm_ |
||
| L'état du PaymentIntent passe de processing à succeeded, mais un litige est immédiatement créé | sepa_ |
pm_ |
||
| Échec du paiement avec un code d'échec insufficient_funds | sepa_ |
pm_ |
insufficient_ |
|
| Konbini · Japon (JP) · 6 | ||||
| Paiement réussi au bout de 3 minutes | billing_ |
|||
| Paiement réussi immédiatement | billing_ |
|||
| Le paiement expire immédiatement | billing_ |
|||
| Jamais payé ; expire au bout de 3 minutes | billing_ |
|||
| Jamais payé ; expire à la date expires_at que vous avez fixée | billing_ |
|||
| Numéro de confirmation refusé à la confirmation du PaymentIntent | payment_ |
payment_ |
||
| Boleto · Brésil (BR) · 6 | ||||
| Boleto payé au bout de 3 minutes | billing_ |
|||
| Boleto payé immédiatement | billing_ |
|||
| Boleto expiré sans paiement ; payment_failed en quelques secondes | billing_ |
|||
| Boleto expiré sans paiement au bout d'environ 3 minutes | billing_ |
|||
| Boleto jamais payé ; expire à sa date expires_at | billing_ |
|||
| CPF de bac à sable qui contourne la validation du numéro fiscal | boleto[ |
|||
Sources : documentation Stripe en français — cartes et valeurs de test, Cartes Bancaires (CB), conformité des cartes comarquées, paiements par prélèvement SEPA, accepter un paiement par prélèvement SEPA et codes de refus, consultées le 26 septembre 2026.
Comment utiliser une carte de test Stripe
Trois étapes. Les cartes de test ne s'utilisent qu'avec des clés API de test : rien ici ne peut toucher une vraie carte ni un vrai client.
- Passez en clés de test. Utilisez vos clés API publiable et secrète de test, ou un environnement de test. N'utilisez jamais de vraies informations de carte : le Contrat d'utilisation du service Stripe interdit de tester en mode production avec de véritables moyens de paiement.
- Choisissez la carte du résultat voulu. 4242 4242 4242 4242 pour un paiement réussi. Pour exercer votre gestion des erreurs, prenez la carte dont la ligne affiche le decline code voulu, avec n'importe quel CVC à trois chiffres et une date future comme 12/34.
- Dans le code serveur, passez le PaymentMethod. Stripe recommande d'utiliser un PaymentMethod comme pm_card_visa plutôt qu'un numéro de carte dans les appels API, même en test, pour que votre code reste conforme à la norme PCI en production. La colonne PaymentMethod donne le token de chaque carte qui en a un.
Tester un paiement français : carte FR, Cartes Bancaires et IBAN SEPA
Pour un site qui encaisse en France, trois lignes du tableau comptent plus que 4242 4242 4242 4242, et Stripe les documente à trois endroits différents.
- La carte française, 4000 0025 0000 0003 (
pm_card_fr), en tête du groupe « par pays ». Elle simule un paiement réussi avec une carte émise en France : c'est le pays d'émission qui change, et Stripe calcule les frais transfrontaliers selon ce pays — les cartes émises hors des États-Unis peuvent en supporter, même dans les environnements de test. Ce qu'elle ne teste pas, c'est l'authentification : Stripe précise que les cartes de sa section Europe et Moyen-Orient simulent un paiement qui réussit sans authentification, alors que l'authentification forte du client est exigée pour les paiements en ligne dans l'EEE. Pour 3D Secure, prenez le groupe dédié. - La carte co-badgée Cartes Bancaires/Visa, 4000 0025 0000 1001 (
pm_card_visa_cartesBancaires), dans le groupe des marques. Cartes Bancaires est le réseau de cartes local en France, et selon Stripe plus de 95 % de ces cartes portent aussi la marque Visa ou Mastercard. Le règlement (UE) 2015/751 impose aux entreprises de l'EEE de laisser le titulaire choisir la marque de sa carte co-badgée au moment du paiement : c'est ce sélecteur que cette carte sert à tester. Dans un environnement de test, Stripe affiche le sélecteur de réseau sur ses interfaces hébergées même si Cartes Bancaires n'est pas activé, et Checkout prend ce choix en charge par défaut. Stripe publie une seconde carte co-badgée, Cartes Bancaires/Mastercard (5555 5525 0000 1001), que ce tableau ne reprend pas. - Les IBAN SEPA français, en tête du tableau des moyens de paiement locaux :
FR1420041010050500013M02606pour un prélèvement qui aboutit,FR8420041010050500013M02607pour un échec,FR5720041010050500013M02608pour un litige immédiat,FR9720041010050000002222227pour des fonds insuffisants, et les variantes qui ne se résolvent qu'au bout de trois minutes. Le Payment Element valide ces IBAN et affiche le mandat quand vous les saisissez. Stripe en publie neuf par pays ; le tableau garde les six scénarios principaux.
Deux choses que ces lignes ne montrent pas, et qu'il vaut mieux savoir avant la mise en production. Côté Cartes Bancaires, Stripe relance automatiquement sur Visa ou Mastercard un paiement refusé sur le réseau CB pour une raison technique, et le commerçant ne peut pas contester un litige Cartes Bancaires — dont les frais sont de 0 EUR. Côté SEPA, un débit de test se résout en quelques minutes ; en production, Stripe recommande d'attendre au moins six jours ouvrables avant de le considérer comme réussi, et le client peut le contester sans justification pendant huit semaines, jusqu'à treize mois si le débit n'était pas autorisé.
Quelle carte déclenche quel échec — et ce que votre webhook va recevoir
Bien gérer un paiement échoué, c'est tenir trois choses en tête à la fois : le error.code que lève votre appel API, le decline_code que l'émetteur y a joint, et l'événement qui arrivera plus tard sur votre point de terminaison webhook. Stripe les documente sur trois pages différentes, si bien que la plupart des intégrations sont écrites d'après l'une d'elles et surprises par les deux autres. Voici la même information, une ligne par résultat.
| Carte de test | Ce qu'elle simule | error.code | decline_code | Événement webhook |
|---|---|---|---|---|
| 4000 0000 0000 0002 | Refus générique | card_declined | generic_decline | payment_intent.payment_failed |
| 4000 0000 0000 9995 | Fonds insuffisants | card_declined | insufficient_funds | payment_intent.payment_failed |
| 4000 0000 0000 9987 | Carte perdue | card_declined | lost_card | payment_intent.payment_failed |
| 4000 0000 0000 9979 | Carte volée | card_declined | stolen_card | payment_intent.payment_failed |
| 4000 0000 0000 6975 | Trop de tentatives sur une même carte | card_declined | card_velocity_exceeded | payment_intent.payment_failed |
| 4000 0000 0000 0069 | Carte expirée | expired_card | aucun | payment_intent.payment_failed |
| 4000 0000 0000 0127 | CVC incorrect | incorrect_cvc | aucun | payment_intent.payment_failed |
| 4000 0000 0000 0119 | Erreur de traitement sur le réseau | processing_error | aucun | payment_intent.payment_failed |
| 4242 4242 4242 4241 | Numéro qui échoue au contrôle de Luhn | incorrect_number | aucun | aucun — rejeté avant qu'un paiement existe |
| 4100 0000 0000 0019 | Radar la bloque, toujours | card_declined | generic_decline | payment_intent.payment_failed |
| 4000 0000 0000 9235 | Risque élevé, mise en examen manuel | aucun — le paiement est créé | aucun | review.opened |
| 4000 0000 0000 0101 | Échec de la vérification du CVC par Radar | card_declined | generic_decline | payment_intent.payment_failed |
| 4000 0000 0000 0036 | Échec de la vérification du code postal par Radar | card_declined | generic_decline | payment_intent.payment_failed |
| 4000 0000 0000 0259 | Paiement réussi, puis litige pour fraude | aucun | aucun | charge.dispute.created |
| 4000 0000 0000 2685 | Paiement réussi, puis « produit non reçu » | aucun | aucun | charge.dispute.created |
| 4000 0000 0000 5423 | Paiement réussi, puis avertissement précoce de fraude | aucun | aucun | radar.early_fraud_warning.created |
| 4000 0000 0000 7726 | Remboursement d'abord en attente, puis réussi | aucun | aucun | refund.updated |
| 4000 0000 0000 5126 | Remboursement apparemment réussi, puis échoué | aucun | aucun | refund.failed |
| 4000 0000 0000 3220 | Authentification 3D Secure requise | aucun | aucun | payment_intent.requires_action |
| 4000 0084 0000 1629 | Authentifiée, puis refusée quand même | card_declined | aucun | payment_intent.payment_failed |
| 4000 0084 0000 1280 | La vérification 3D Secure elle-même échoue | card_declined | aucun | payment_intent.payment_failed |
Deux habitudes découlent de cette lecture en un seul tableau. D'abord, card_declined n'est pas un motif, c'est une catégorie : le motif est dans decline_code. Des huit refus du haut du tableau, cinq en portent un ; les trois autres renvoient un error.code différent. Un gestionnaire d'erreurs qui ne regarde que error.code confond fonds insuffisants et carte volée. Or Stripe demande de ne pas dévoiler au client un refus pour carte perdue ou volée et de le présenter comme un generic_decline, alors que le client à court de fonds peut, lui, agir : ce sont deux messages différents.
Ensuite, certains résultats n'apparaissent jamais dans la réponse. Un paiement mis en examen, un litige ouvert trois semaines plus tard, un remboursement asynchrone qui passe de réussi à échoué : rien de cela n'est visible au moment de l'appel API. Ces résultats arrivent sous forme d'événements, ou n'arrivent pas du tout parce que le point de terminaison n'a jamais été écrit. C'est ce mode d'échec qu'il faut tester exprès : bloquez la carte, puis regardez ce que votre système a fait de l'événement.
Deux notes que le tableau ne peut pas contenir. Stripe ignore les vérifications du CVC et du code postal si vous n'envoyez pas ces champs : les cartes qui simulent un échec de vérification réussissent discrètement tant que votre formulaire ne les collecte pas. Et pour un paiement bloqué par Radar, Stripe documente generic_decline, dont la définition couvre le cas où « Stripe Radar ou Adaptive Acceptance a bloqué le paiement » — le client n'a pas à apprendre qu'il a été jugé suspect.
Tester 3D Secure
La réglementation sur l'authentification forte du client exige 3D Secure pour les paiements en ligne au sein de l'Espace économique européen, et c'est là qu'une intégration qui marche tombe le plus souvent — parce que le chemin heureux ne le voit jamais. Un paiement qui demande une authentification n'échoue pas et ne réussit pas : le PaymentIntent revient en requires_action, et votre front-end doit passer la main à Stripe.js pour que le client réussisse le challenge.
Neuf cartes du tableau parcourent les branches, et la distinction qui fait gagner le plus de temps est requis contre pris en charge :
- 4000 0000 0000 3220 — l'authentification est requise et réussit. C'est la carte sur laquelle construire : vous saurez si votre client appelle vraiment l'étape de confirmation ou traite discrètement
requires_actioncomme un échec. - 4000 0000 0000 3055 — 3D Secure est pris en charge mais pas demandé par défaut. Utile pour vérifier que vous n'avez pas rendu l'authentification obligatoire par accident.
- 4000 0084 0000 1629 et 4000 0084 0000 1280 — les deux fins ratées : le client s'authentifie et l'émetteur refuse quand même, ou la vérification elle-même échoue. Les deux reviennent en
card_declined; un gestionnaire qui prend un challenge terminé pour un paiement terminé affichera une page de succès pour un paiement qui n'a jamais eu lieu. - 4000 0025 0000 3155 et 4000 0027 6000 3184 — les cartes enregistrées. La première exige l'authentification pour les paiements hors session tant qu'elle n'est pas configurée pour de futurs paiements ; la seconde l'exige toujours. Si vous comptez débiter vos clients plus tard sans eux, ces deux cartes font la différence entre un renouvellement qui marche et un abonnement mort.
Un piège : seules les cartes de ce groupe testent vraiment 3D Secure. Les autres cartes de test peuvent le déclencher, mais Stripe renvoie attempt_acknowledged et saute les étapes supplémentaires : votre écran de challenge ne s'affiche jamais, et vous en concluez à tort qu'il fonctionne. La carte française et les autres cartes « par pays » européennes, elles, réussissent sans authentification. Enfin, les redirections 3D Secure n'ont pas lieu pour un paiement créé directement dans le Dashboard Stripe : passez par votre propre front-end ou par un appel API.
Cartes de test Stripe par pays
Stripe tient une liste à part de cartes de test par pays : 64 cartes de 58 pays, chacune simulant un paiement réussi avec une carte émise dans ce pays. C'est le dernier groupe du tableau, et sur cette page la ligne France y passe en premier. Les PaymentMethods suivent le code pays — pm_card_fr, pm_card_de, pm_card_jp — à trois exceptions près : la carte mexicaine Carnet et la carte saoudienne n'ont pas de PaymentMethod, et la carte japonaise JCB utilise pm_card_jcb, le même que la carte JCB du groupe des marques. La ligne États-Unis, c'est 4242 4242 4242 4242 elle-même, avec son propre pm_card_us.
Pour simuler l'endroit où se trouve le client plutôt que la provenance de la carte, Stripe documente des adresses e-mail de localisation pour Checkout Sessions, Payment Links et grilles tarifaires : ajoutez +location_XX à la partie locale, par exemple test+location_FR@example.com, et passez-la en customer_email d'une Checkout Session ou en prefilled_email d'un Payment Link. Utile pour vérifier ce qu'un client en France voit s'afficher.
Sous le tableau des cartes figurent les valeurs de test publiées par Stripe pour trois moyens de paiement locaux : les IBAN du prélèvement SEPA pour la France, l'Allemagne et l'Espagne, Konbini pour le Japon et Boleto pour le Brésil. Ils ne se résolvent pas comme une carte. Un prélèvement SEPA attend en processing avant de réussir ou d'échouer, et un bon Konbini ou Boleto attend en requires_action jusqu'à son paiement ou son expiration : chaque ligne donne donc toute la séquence d'événements que recevra votre webhook, et non un seul.
Remboursements, litiges et tout ce qui arrive en retard
En mode production, les remboursements sont asynchrones : un remboursement peut sembler aboutir et échouer ensuite, ou rester pending avant d'aboutir. Presque aucune suite de tests ne le couvre, parce qu'avec une carte de test ordinaire les remboursements aboutissent aussitôt et ne changent plus d'état. Deux cartes rétablissent le vrai comportement : 4000 0000 0000 7726 laisse le remboursement en attente puis le fait réussir, 4000 0000 0000 5126 le déclare réussi puis le fait échouer. Les deux émettent ensuite un événement — exactement le code qu'il vaut mieux avoir écrit avant qu'un client appelle au sujet d'un remboursement jamais reçu.
Les litiges fonctionnent pareil, au ralenti. Le paiement aboutit normalement, puis une rétrofacturation apparaît des jours plus tard, avec charge.dispute.created pour seule notification. 4000 0000 0000 0259 ouvre un litige pour fraude, 4000 0000 0000 2685 un litige pour produit non reçu, et 4000 0000 0000 1976 une demande d'information plutôt qu'une rétrofacturation complète. 4000 0000 0000 5423 produit un avertissement précoce de fraude : le réseau vous prévient qu'un litige arrive probablement, quand il est encore temps de rembourser de vous-même.
Pour simuler l'issue et pas seulement l'événement, répondez au litige avec les chaînes de preuve que Stripe réserve aux tests : winning_evidence clôt le litige comme gagné, losing_evidence le clôt comme perdu, et escalate_inquiry_evidence transforme une demande d'information en rétrofacturation. Rappel pour le marché français : ces scénarios ne représentent pas un litige Cartes Bancaires, que le commerçant ne peut pas contester.
Dernière carte du groupe : 4000 0000 0000 0077 crédite les fonds directement sur votre solde disponible plutôt que sur le solde en attente. Ce n'est pas un test de paiement mais de comptabilité — utile si quelque chose en aval rapproche les virements et que vous ne voulez pas attendre un délai de règlement pour savoir si cela fonctionne.
Télécharger les fixtures en JSON ou en CSV
Un tableau qu'il faut recopier à la main est un tableau qu'on recopiera mal. Les deux boutons de téléchargement en haut de la page donnent les mêmes 119 cartes en fichiers lisibles par machine, générés dans le navigateur à partir des données qui servent à afficher cette page : ce que vous téléchargez ne peut pas s'écarter de ce que vous venez de lire.
Le JSON est un objet avec source, checked, count et un tableau cards. Chaque carte porte un id stable à citer dans le nom d'un test, les chiffres, la marque, le groupe, une description d'une ligne, les règles de CVC et d'expiration, les quatre champs de correspondance — payment_method, error_code, decline_code et webhook_event — et country, le code ISO du pays d'émission pour les cartes du groupe par pays. Les champs sans objet valent null au lieu d'être absents : un parseur n'a jamais à tester une clé manquante.
Le CSV contient les mêmes douze colonnes, avec les guillemets de la RFC 4180 : il s'ouvre dans un tableur et se charge dans pandas sans option de conversion. Les deux fichiers restent en anglais, identiques quelle que soit la langue de la page. Les valeurs des moyens de paiement locaux sont là pour être copiées, pas téléchargées : aucun des deux fichiers ne les contient.
Les deux téléchargements suivent le filtre appliqué. Réduisez le tableau aux refus, cliquez sur Télécharger le JSON, et vous obtenez dix lignes au lieu de 119 — souvent ce qu'attend un test paramétré :
test.each(fixtures.cards.filter(c => c.group === 'decline'))(
'$id surfaces $decline_code',
async ({ payment_method, error_code, decline_code }) => { /* … */ },
);
Les fichiers indiquent l'URL source et la date de vérification, parce qu'une liste de cartes sans date est une liste à laquelle on ne peut plus se fier dans six mois. Si Stripe change un numéro, la bonne correction consiste à revérifier la source, pas à garder une copie périmée dans votre dépôt.
Ce que vous construisez vraiment
Personne ne cherche des cartes de test pour le plaisir. Si vous êtes ici, vous branchez un paiement, et le paiement n'est qu'une pièce d'un ensemble : un catalogue, un prix que le client ne peut pas modifier, une session créée quelque part avec un secret, un webhook qui décide si la commande compte comme payée, puis tout ce qui se passe une fois l'argent arrivé.
La pièce qui casse le plus souvent n'est pas la carte, c'est le prix. Un site statique qui garde ses prix dans le HTML et envoie un montant à un point de paiement fait confiance au navigateur pour le chiffre, et le navigateur n'est pas digne de confiance : c'est toute une famille de bugs que les cartes de test ne verront jamais, car un paiement falsifié réussit parfaitement.
Clize s'appuie sur Stripe Checkout pour cette raison et met le prix côté serveur : une boutique hébergée calcule chaque panier d'après le _catalog.json déployé avec le site et ignore le montant annoncé par le client. Si c'est votre problème, le fichier catalogue a un générateur et un validateur (en anglais) ; et s'il vous suffit qu'un client paie un montant, clize pay link --amount 49 renvoie une URL Stripe Checkout en production sans compte Stripe à vous — ce paiement est de l'argent réel, gardez-le bien loin des numéros de cette page.
FAQ
Quel est le numéro de carte de test Stripe ?
Le numéro standard est 4242 4242 4242 4242, une Visa qui aboutit toujours. Associez-le à n'importe quel CVC à trois chiffres, à une date d'expiration future comme 12/34 et à n'importe quelles valeurs dans les autres champs. Il ne fonctionne qu'avec vos clés API de test.
Quelle carte de test Stripe utiliser pour une carte française ?
4000 0025 0000 0003, la ligne France de la liste de Stripe par pays, avec le PaymentMethod pm_card_fr : elle simule un paiement réussi avec une carte émise en France, sans authentification. Pour une carte co-badgée Cartes Bancaires, Stripe liste 4000 0025 0000 1001 (Cartes Bancaires/Visa, dans ce tableau) et 5555 5525 0000 1001 (Cartes Bancaires/Mastercard).
Comment tester un prélèvement SEPA avec Stripe ?
Avec les IBAN de test de Stripe, par exemple FR1420041010050500013M02606 pour un prélèvement qui aboutit et FR8420041010050500013M02607 pour un échec. Le PaymentIntent passe d'abord en processing, puis en succeeded ou en requires_payment_method ; les IBAN à délai mettent au moins trois minutes. Le tableau des moyens de paiement locaux donne les six scénarios français avec leur séquence d'événements.
Pourquoi ma carte de test Stripe est-elle refusée ?
Trois causes habituelles. Vous l'utilisez avec des clés API de production, alors que les cartes de test ne s'emploient qu'avec des clés de test. Vous avez copié une carte conçue pour être refusée : 4000 0000 0000 0002 et tout le groupe Refus existent pour cela. Ou le numéro échoue au contrôle de Luhn, comme 4242 4242 4242 4241, qui renvoie incorrect_number avant toute création de paiement.
Comment tester 3D Secure avec Stripe ?
Utilisez 4000 0000 0000 3220, qui exige l'authentification et la réussit. Le PaymentIntent revient en requires_action, et votre front-end doit passer la main à Stripe.js pour que le client réussisse le challenge. Seules les cartes du groupe 3D Secure testent vraiment ce flux ; les autres peuvent le déclencher, mais Stripe renvoie attempt_acknowledged et saute l'étape.
Quelle carte de test Stripe crée un litige ?
4000 0000 0000 0259 pour un litige pour fraude, 4000 0000 0000 2685 pour produit non reçu et 4000 0000 0000 1976 pour une demande d'information plutôt qu'une rétrofacturation complète. Le paiement aboutit d'abord, puis le litige arrive par l'événement charge.dispute.created. Répondez avec la chaîne winning_evidence ou losing_evidence pour le clore comme gagné ou perdu.
Ce que je saisis sur cette page est-il envoyé quelque part ?
Non. Le tableau est du HTML rendu avec la page, et la recherche, la copie au clic et les deux téléchargements sont un petit script qui tourne dans votre navigateur. Pas de compte, pas d'inscription, pas de requête réseau : la page fonctionne hors ligne une fois chargée.
Une fois les tests finis, encaissez un vrai paiement.
Une commande renvoie un lien Stripe Checkout en production, sans compte Stripe, sans clé et sans formulaire d'inscription. C'est de l'argent réel : gardez bien séparés les deux jeux de numéros.
$ npm i -g @clize/clize && clize login $ clize pay link --amount 49 --for "facture 1042"[ Agent Storefront → ]