免費工具 · STRIPE 測試卡號

Stripe 測試卡號

最常用的 Stripe 測試卡號是 4242 4242 4242 4242:安全碼填任意三碼(American Express 是四碼)、有效期限填任何未來日期(例如 12/34),其他欄位隨便填。它只對 Stripe 的測試金鑰有效。下面的表格有 119 張測試卡,2026 年 9 月 26 日對過 Stripe 自己的測試文件,包含 Stripe 按國家列出的 64 張——台灣卡排在那一組的第一個。可以搜尋、點卡號複製,也能把整份表下載成 JSON 或 CSV 放進測試套件。每張會失敗的卡都附上錯誤碼、decline code 和它觸發的 webhook 事件:Stripe 把這三樣分在三個頁面,而且那些頁面沒有繁體中文版。

免費免註冊119 張卡JSON + CSV 下載

其他語言:English繁體中文日本語한국어EspañolFrançaisDeutschPortuguês (Brasil)

stripe · 測試卡號

點任何卡號就能複製(不含空格)。沒有任何東西會送出去——表格和下載檔都在這個頁面裡產生。下載內容跟著篩選走,所以可以只匯出被拒的那幾張;下載檔一律是英文。

卡號模擬情境品牌PaymentMethod代碼與事件
付款成功(依卡片品牌) · 15
任意 3 位數 · 任何未來日期 付款成功 Visa pm_card_visa —payment_intent.succeeded
任意 3 位數 · 任何未來日期 簽帳金融卡付款成功 Visa (debit) pm_card_visa_debit —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功 Mastercard pm_card_mastercard —payment_intent.succeeded
任意 3 位數 · 任何未來日期 2 開頭 BIN 的卡付款成功 Mastercard (2-series) — —payment_intent.succeeded
任意 3 位數 · 任何未來日期 簽帳金融卡付款成功 Mastercard (debit) pm_card_mastercard_debit —payment_intent.succeeded
任意 3 位數 · 任何未來日期 預付卡付款成功 Mastercard (prepaid) pm_card_mastercard_prepaid —payment_intent.succeeded
任意 4 位數 · 任何未來日期 付款成功(15 碼卡號、4 碼安全碼) American Express pm_card_amex —payment_intent.succeeded
任意 4 位數 · 任何未來日期 付款成功,第二組 Amex BIN American Express — —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功 Discover pm_card_discover —payment_intent.succeeded
任意 3 位數 · 任何未來日期 19 碼卡號付款成功 UnionPay (19-digit) — —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功 Diners Club pm_card_diners —payment_intent.succeeded
任意 3 位數 · 任何未來日期 14 碼卡號付款成功 Diners Club (14-digit) — —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功 JCB pm_card_jcb —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功 UnionPay pm_card_unionpay —payment_intent.succeeded
任意 3 位數 · 任何未來日期 法國聯名卡(Cartes Bancaires)付款成功 Cartes Bancaires / Visa pm_card_visa_cartesBancaires —payment_intent.succeeded
被拒 · 10
任意 3 位數 · 任何未來日期 一般拒絕(原因不明) Visa pm_card_visa_chargeDeclined card_declineddecline_code generic_declinepayment_intent.payment_failed
任意 3 位數 · 任何未來日期 資金不足被拒 Visa pm_card_visa_chargeDeclinedInsufficientFunds card_declineddecline_code insufficient_fundspayment_intent.payment_failed
任意 3 位數 · 任何未來日期 遺失卡被拒 Visa pm_card_visa_chargeDeclinedLostCard card_declineddecline_code lost_cardpayment_intent.payment_failed
任意 3 位數 · 任何未來日期 被竊卡被拒 Visa pm_card_visa_chargeDeclinedStolenCard card_declineddecline_code stolen_cardpayment_intent.payment_failed
任意 3 位數 · 任何未來日期 過期卡被拒 Visa pm_card_chargeDeclinedExpiredCard expired_cardpayment_intent.payment_failed
任意 3 位數 · 任何未來日期 安全碼錯誤被拒(要送出安全碼,否則不檢查) Visa pm_card_chargeDeclinedIncorrectCvc incorrect_cvcpayment_intent.payment_failed
任意 3 位數 · 任何未來日期 處理錯誤被拒 Visa pm_card_chargeDeclinedProcessingError processing_errorpayment_intent.payment_failed
任意 3 位數 · 任何未來日期 卡號錯誤——故意過不了 Luhn 檢查 Visa — incorrect_number沒有事件——在進 API 之前就被擋下
任意 3 位數 · 任何未來日期 短時間嘗試次數過多被拒 Visa pm_card_visa_chargeDeclinedVelocityLimitExceeded card_declineddecline_code card_velocity_exceededpayment_intent.payment_failed
任意 3 位數 · 任何未來日期 可以綁定到 Customer,實際扣款時才失敗 Visa pm_card_chargeCustomerFail card_declinedpayment_intent.payment_failed
Radar、詐欺與地址檢查 · 9
任意 3 位數 · 任何未來日期 最高風險——Radar 一律封鎖 Visa pm_card_radarBlock card_declineddecline_code generic_declinepayment_intent.payment_failed
任意 3 位數 · 任何未來日期 風險等級「highest」——依你的規則,Radar 可能封鎖 Visa pm_card_riskLevelHighest card_declineddecline_code generic_declinepayment_intent.payment_failed
任意 3 位數 · 任何未來日期 風險等級「elevated」——Radar 可能送進人工審查 Visa pm_card_riskLevelElevated —review.opened
任意 3 位數 · 任何未來日期 詐欺爭議分數偏高 Visa pm_card_highFraudDisputeScore —review.opened
任意 3 位數 · 任何未來日期 早期詐欺警示分數偏高 Visa pm_card_highEfwScore —review.opened
任意 3 位數 · 任何未來日期 濫用免費試用——開啟該項控制時會被封鎖 Visa pm_card_freeTrialAbuseBlock card_declineddecline_code generic_declinepayment_intent.payment_failed
任意 3 位數 · 任何未來日期 安全碼檢查失敗(有送安全碼才檢查) Visa pm_card_cvcCheckFail card_declineddecline_code generic_declinepayment_intent.payment_failed
任意 3 位數 · 任何未來日期 郵遞區號檢查失敗(有送郵遞區號才檢查) Visa pm_card_avsZipFail card_declineddecline_code generic_declinepayment_intent.payment_failed
任意 3 位數 · 任何未來日期 郵遞區號與地址第一行的檢查都失敗 Visa pm_card_avsFail card_declineddecline_code generic_declinepayment_intent.payment_failed
爭議與詐欺警示 · 8
任意 3 位數 · 任何未來日期 扣款成功,之後以詐欺為由提出爭議 Visa pm_card_createDispute —charge.dispute.created
任意 3 位數 · 任何未來日期 Discover 卡扣款成功,之後以詐欺為由提出爭議 Discover — —charge.dispute.created
任意 3 位數 · 任何未來日期 扣款成功,之後以「未收到商品」提出爭議 Visa pm_card_createDisputeProductNotReceived —charge.dispute.created
任意 3 位數 · 任何未來日期 扣款成功,之後收到詢問,而不是正式爭議 Visa pm_card_createDisputeInquiry —charge.dispute.created
任意 3 位數 · 任何未來日期 扣款成功,之後收到早期詐欺警示 Visa pm_card_createIssuerFraudRecord —radar.early_fraud_warning.created
任意 3 位數 · 任何未來日期 扣款成功,之後被提出不只一次爭議 Visa pm_card_createMultipleDisputes —charge.dispute.created
任意 3 位數 · 任何未來日期 符合 Visa Compelling Evidence 3.0 資格的爭議 Visa pm_card_createCe3EligibleDispute —charge.dispute.created
任意 3 位數 · 任何未來日期 符合 Smart Disputes 資格的爭議 Visa pm_card_createAutoRepresentmentEligibleDispute —charge.dispute.created
退款與款項入帳時點 · 4
任意 3 位數 · 任何未來日期 退款先是 pending,之後才成功 Visa pm_card_pendingRefund —refund.updated
任意 3 位數 · 任何未來日期 退款看起來成功,之後才失敗 Visa pm_card_refundFail —refund.failed
任意 3 位數 · 任何未來日期 國內扣款直接進可用餘額 Visa pm_card_bypassPending —payment_intent.succeeded
任意 3 位數 · 任何未來日期 跨國扣款直接進可用餘額 Visa pm_card_bypassPendingInternational —payment_intent.succeeded
3D 驗證(3D Secure) · 9
任意 3 位數 · 任何未來日期 必須 3D 驗證,驗證成功 Visa (IE) pm_card_threeDSecure2Required —payment_intent.requires_action
任意 3 位數 · 任何未來日期 美國發行的卡必須 3D 驗證,驗證成功 Visa (US) — —payment_intent.requires_action
任意 3 位數 · 任何未來日期 3D 驗證通過,付款仍然被拒 Visa pm_card_threeDSecureRequiredChargeDeclined card_declinedpayment_intent.payment_failed
任意 3 位數 · 任何未來日期 3D 驗證的查詢本身出錯,付款被拒 Visa pm_card_threeDSecureRequiredProcessingError card_declinedpayment_intent.payment_failed
任意 3 位數 · 任何未來日期 支援 3D 驗證,但預設規則不要求 Visa pm_card_threeDSecureOptional —payment_intent.succeeded
任意 3 位數 · 任何未來日期 支援 3D 驗證,但嘗試驗證時發生處理錯誤 Visa pm_card_threeDSecureOptionalProcessingError card_declinedpayment_intent.payment_failed
任意 3 位數 · 任何未來日期 卡片設定為日後使用之前,顧客不在場的扣款都要 3D 驗證 Visa pm_card_authenticationRequiredOnSetup —payment_intent.requires_action
任意 3 位數 · 任何未來日期 不管卡片怎麼設定,每一筆都要 3D 驗證 Visa pm_card_authenticationRequired —payment_intent.requires_action
任意 3 位數 · 任何未來日期 已設定為可在顧客不在場時扣款;顧客在場的付款仍要驗證 Visa pm_card_authenticationRequiredSetupForOffSession —payment_intent.requires_action
付款成功(依發卡國) · 64
任意 3 位數 · 任何未來日期 台灣付款成功,發卡國:台灣 Visa pm_card_tw —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:美國 Visa pm_card_us —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:阿根廷 Visa pm_card_ar —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:巴西 Visa pm_card_br —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:加拿大 Visa pm_card_ca —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:智利 Visa pm_card_cl —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:哥倫比亞 Visa pm_card_co —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:哥斯大黎加 Visa pm_card_cr —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:厄瓜多 Visa pm_card_ec —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:墨西哥 Visa pm_card_mx —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:墨西哥 Carnet — —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:巴拿馬 Visa pm_card_pa —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:巴拉圭 Visa pm_card_py —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:秘魯 Visa pm_card_pe —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:烏拉圭 Visa pm_card_uy —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:阿拉伯聯合大公國 Visa pm_card_ae —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:阿拉伯聯合大公國 Mastercard pm_card_ae_mastercard —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:奧地利 Visa pm_card_at —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:比利時 Visa pm_card_be —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:保加利亞 Visa pm_card_bg —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:白俄羅斯 Visa pm_card_by —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:克羅埃西亞 Visa pm_card_hr —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:賽普勒斯 Visa pm_card_cy —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:捷克 Visa pm_card_cz —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:丹麥 Visa pm_card_dk —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:愛沙尼亞 Visa pm_card_ee —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:芬蘭 Visa pm_card_fi —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:法國 Visa pm_card_fr —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:德國 Visa pm_card_de —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:直布羅陀 Visa pm_card_gi —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:希臘 Visa pm_card_gr —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:匈牙利 Visa pm_card_hu —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:愛爾蘭 Visa pm_card_ie —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:義大利 Visa pm_card_it —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:拉脫維亞 Visa pm_card_lv —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:列支敦斯登 Visa pm_card_li —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:立陶宛 Visa pm_card_lt —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:盧森堡 Visa pm_card_lu —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:馬爾他 Visa pm_card_mt —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:荷蘭 Visa pm_card_nl —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:挪威 Visa pm_card_no —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:波蘭 Visa pm_card_pl —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:葡萄牙 Visa pm_card_pt —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:羅馬尼亞 Visa pm_card_ro —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:沙烏地阿拉伯 Visa — —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:斯洛維尼亞 Visa pm_card_si —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:斯洛伐克 Visa pm_card_sk —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:西班牙 Visa pm_card_es —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:瑞典 Visa pm_card_se —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:瑞士 Visa pm_card_ch —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:英國 Visa pm_card_gb —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:英國 Visa (debit) pm_card_gb_debit —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:英國 Mastercard pm_card_gb_mastercard —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:澳洲 Visa pm_card_au —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:中國 Visa pm_card_cn —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:香港 Visa pm_card_hk —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:印度 Visa pm_card_in —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:日本 Visa pm_card_jp —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:日本 JCB pm_card_jcb —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:馬來西亞 Visa pm_card_my —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:紐西蘭 Visa pm_card_nz —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:新加坡 Visa pm_card_sg —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:泰國 Visa (credit) pm_card_th_credit —payment_intent.succeeded
任意 3 位數 · 任何未來日期 付款成功,發卡國:泰國 Visa (debit) pm_card_th_debit —payment_intent.succeeded

本地支付方式:測試值

Stripe 為德國、法國、西班牙的 SEPA 扣款,日本的 Konbini 與巴西的 Boleto 公布的測試值。台灣沒有列:Stripe 的支付方式支援表上,沒有任何本地支付方式把台灣列為顧客所在國家。點值即可複製。這些付款會先停在 processing 或 requires_action 才有結果,所以最後一欄列出整串 webhook 事件。

測試值模擬情境參數PaymentMethod代碼與事件
SEPA Direct Debit · 德國 (DE) · 6
PaymentIntent 從 processing 變成 succeeded sepa_debit[iban] pm_sepaDebit_success_de payment_intent.processing→ payment_intent.succeeded
至少三分鐘後,PaymentIntent 從 processing 變成 succeeded sepa_debit[iban] pm_sepaDebit_successDelayed_de payment_intent.processing→ payment_intent.succeeded
PaymentIntent 從 processing 變成 requires_payment_method sepa_debit[iban] pm_sepaDebit_failed_de payment_intent.processing→ payment_intent.payment_failed
至少三分鐘後,PaymentIntent 從 processing 變成 requires_payment_method sepa_debit[iban] pm_sepaDebit_failedDelayed_de payment_intent.processing→ payment_intent.payment_failed
PaymentIntent 從 processing 變成 succeeded,接著立刻產生一筆爭議 sepa_debit[iban] pm_sepaDebit_disputed_de payment_intent.processing→ payment_intent.succeeded→ charge.dispute.created
付款失敗,失敗碼 insufficient_funds sepa_debit[iban] pm_sepaDebit_insufficientFunds_de insufficient_fundspayment_intent.processing→ payment_intent.payment_failed
SEPA Direct Debit · 法國 (FR) · 6
PaymentIntent 從 processing 變成 succeeded sepa_debit[iban] pm_sepaDebit_success_fr payment_intent.processing→ payment_intent.succeeded
至少三分鐘後,PaymentIntent 從 processing 變成 succeeded sepa_debit[iban] pm_sepaDebit_successDelayed_fr payment_intent.processing→ payment_intent.succeeded
PaymentIntent 從 processing 變成 requires_payment_method sepa_debit[iban] pm_sepaDebit_failed_fr payment_intent.processing→ payment_intent.payment_failed
至少三分鐘後,PaymentIntent 從 processing 變成 requires_payment_method sepa_debit[iban] pm_sepaDebit_failedDelayed_fr payment_intent.processing→ payment_intent.payment_failed
PaymentIntent 從 processing 變成 succeeded,接著立刻產生一筆爭議 sepa_debit[iban] pm_sepaDebit_disputed_fr payment_intent.processing→ payment_intent.succeeded→ charge.dispute.created
付款失敗,失敗碼 insufficient_funds sepa_debit[iban] pm_sepaDebit_insufficientFunds_fr insufficient_fundspayment_intent.processing→ payment_intent.payment_failed
SEPA Direct Debit · 西班牙 (ES) · 6
PaymentIntent 從 processing 變成 succeeded sepa_debit[iban] pm_sepaDebit_success_es payment_intent.processing→ payment_intent.succeeded
至少三分鐘後,PaymentIntent 從 processing 變成 succeeded sepa_debit[iban] pm_sepaDebit_successDelayed_es payment_intent.processing→ payment_intent.succeeded
PaymentIntent 從 processing 變成 requires_payment_method sepa_debit[iban] pm_sepaDebit_failed_es payment_intent.processing→ payment_intent.payment_failed
至少三分鐘後,PaymentIntent 從 processing 變成 requires_payment_method sepa_debit[iban] pm_sepaDebit_failedDelayed_es payment_intent.processing→ payment_intent.payment_failed
PaymentIntent 從 processing 變成 succeeded,接著立刻產生一筆爭議 sepa_debit[iban] pm_sepaDebit_disputed_es payment_intent.processing→ payment_intent.succeeded→ charge.dispute.created
付款失敗,失敗碼 insufficient_funds sepa_debit[iban] pm_sepaDebit_insufficientFunds_es insufficient_fundspayment_intent.processing→ payment_intent.payment_failed
Konbini · 日本 (JP) · 6
{any_prefix}@{any_domain}confirmation_number 11111111110 3 分鐘後付款成功 billing_details.email — payment_intent.requires_action→ payment_intent.succeeded
{any_prefix}succeed_immediately@{any_domain}confirmation_number 22222222220 立即付款成功 billing_details.email — payment_intent.requires_action→ payment_intent.succeeded
{any_prefix}expire_immediately@{any_domain}confirmation_number 33333333330 立即逾期 billing_details.email — payment_intent.requires_action→ payment_intent.payment_failed
{any_prefix}expire_with_delay@{any_domain}confirmation_number 44444444440 一直沒付款,3 分鐘後逾期 billing_details.email — payment_intent.requires_action→ payment_intent.payment_failed
{any_prefix}fill_never@{any_domain}confirmation_number 55555555550 一直沒付款,在你設定的 expires_at 逾期 billing_details.email — payment_intent.requires_action→ payment_intent.payment_failed
確認 PaymentIntent 時,確認號被拒 payment_method_options[konbini][confirmation_number] — payment_intent_konbini_rejected_confirmation_number
Boleto · 巴西 (BR) · 6
{any_prefix}@{any_domain} 繳費單 3 分鐘後付清 billing_details.email — payment_intent.requires_action→ payment_intent.succeeded
{any_prefix}succeed_immediately@{any_domain} 繳費單立即付清 billing_details.email — payment_intent.requires_action→ payment_intent.succeeded
{any_prefix}expire_immediately@{any_domain} 繳費單未付即逾期,幾秒內送出 payment_failed billing_details.email — payment_intent.requires_action→ payment_intent.payment_failed
{any_prefix}expire_with_delay@{any_domain} 繳費單約 3 分鐘後未付逾期 billing_details.email — payment_intent.requires_action→ payment_intent.payment_failed
{any_prefix}fill_never@{any_domain} 繳費單一直沒付,在它的 expires_at 逾期 billing_details.email — payment_intent.requires_action→ payment_intent.payment_failed
CNPJ 00.000.000/0000-00 沙盒專用、可略過稅籍編號驗證的 CPF boleto[tax_id] — —

資料來源:Stripe 文件〈Testing〉(測試卡、按國家分的卡、台灣卡 pm_card_tw、跨境手續費、地點格式 email;這一頁沒有繁體中文版,另有簡體中文版)、〈Payment method support〉(各付款方式支援的顧客國家)、〈Supported currencies〉(TWD 的金額單位與出款規則)、〈Decline codes〉;Stripe〈Global availability〉(可開戶的國家與地區)。以上皆於 2026 年 9 月 26 日查閱。

Stripe 測試卡怎麼用

三個步驟。測試卡只被測試金鑰接受,所以這一頁上的任何東西都碰不到真的卡片或真的顧客。

  1. 換成測試金鑰。 用測試用的可公開金鑰與私密金鑰,或是沙盒。Stripe 服務協議禁止在正式環境用真實的付款資料做測試;反過來,把測試卡號送進正式環境,只會直接被拒。
  2. 挑一張對應你要的結果的卡。 單純要成功,用 4242 4242 4242 4242。要練錯誤處理,就挑那一列寫著你想看到的 decline code 的卡,安全碼填任意三碼、有效期限填任何未來日期。
  3. 伺服器端的程式碼改用 PaymentMethod。 Stripe 建議在 API 呼叫裡傳 pm_card_visa 這類 PaymentMethod,而不是直接寫卡號,這樣測試程式碼裡永遠不會出現卡號。表格的 PaymentMethod 一欄列出每張有對應值的卡;台灣卡是 pm_card_tw。

台灣卡、台灣顧客與新臺幣:Stripe 文件裡讀不到的在地細節

這一頁是 Stripe 測試卡號表的繁體中文版:119 張測試卡,每張附上它模擬的情境、PaymentMethod、錯誤碼與 webhook 事件。Stripe 自己的測試文件有英文、德文、法文、西班牙文、義大利文、日文、巴西葡萄牙文、印尼文和簡體中文,就是沒有繁體中文——用 zh-TW 的瀏覽器打開,拿到的是英文頁。底下幾件事,是台灣開發者在那一頁上讀不到的:

  • 台灣卡是 4000 0015 8000 0008。Stripe 按國家列出的測試卡裡,台灣這一列是一張 Visa,PaymentMethod 是 pm_card_tw,模擬台灣發行的卡付款成功。上面的表格把它排在「付款成功(依發卡國)」一組的第一個,並標上「台灣」。
  • 對你的 Stripe 帳戶來說,它是一張外國卡。台灣不在 Stripe 公布的可開戶國家/地區清單上,所以收台灣卡的帳戶一定開在別的國家。Stripe 的測試文件寫明:跨境手續費依發卡國計算,發卡國不是美國的卡,即使在測試環境也可能被算跨境費。任何會讀手續費或卡片國別的程式,都該拿這張卡跑一次。
  • 沒有台灣的本地支付方式。Stripe 的支付方式支援表列了 43 種付款方式,沒有一種把台灣列為顧客所在國家——日本有 Konbini 與 PayPay,新加坡有 PayNow,泰國有 PromptPay,台灣一個也沒有。所以下面的本地支付方式表沒有台灣的列;在 Stripe 上,台灣顧客要測的主要是卡片。
  • 新臺幣金額要乘以 100。Stripe 的 API 以貨幣的最小單位收金額,而 TWD 不在零位小數貨幣的名單上(日圓 JPY 才在),所以 NT$1,290 要傳 amount: 129000;傳 1290,扣的是 NT$12.90。反過來,TWD 的出款(payout)Stripe 當零位小數處理:手動出款的金額必須能被 100 整除。
  • 想看台灣顧客看到的結帳頁,用地點格式的 email。測試 Checkout Session、Payment Link 或 pricing table 時,把 test+location_TW@example.com 當成 Checkout Session 的 customer_email,或 Payment Link 的 prefilled_email,打開的結帳頁就會顯示在台灣的顧客會看到的幣別與付款方式。

哪張卡觸發哪一種失敗,webhook 又會收到什麼

把付款失敗處理好,要同時記住三樣東西:API 呼叫丟回來的 error.code、發卡行附上的 decline_code,以及之後才打到你 webhook 端點的事件。Stripe 把這三樣寫在三個不同的頁面,所以大多數整合只照著其中一頁寫,另外兩樣要到上線後才碰到。下面把同樣的資訊排成一種結果一列。

測試卡模擬情境error.codedecline_codeWebhook 事件
4000 0000 0000 0002一般拒絕card_declinedgeneric_declinepayment_intent.payment_failed
4000 0000 0000 9995資金不足card_declinedinsufficient_fundspayment_intent.payment_failed
4000 0000 0000 9987遺失卡card_declinedlost_cardpayment_intent.payment_failed
4000 0000 0000 9979被竊卡card_declinedstolen_cardpayment_intent.payment_failed
4000 0000 0000 6975同一張卡嘗試太多次card_declinedcard_velocity_exceededpayment_intent.payment_failed
4000 0000 0000 0069過期卡expired_card無payment_intent.payment_failed
4000 0000 0000 0127安全碼錯誤incorrect_cvc無payment_intent.payment_failed
4000 0000 0000 0119處理錯誤processing_error無payment_intent.payment_failed
4242 4242 4242 4241過不了 Luhn 檢查的卡號incorrect_number無無——扣款還沒建立就被擋下
4100 0000 0000 0019Radar 一律封鎖card_declinedgeneric_declinepayment_intent.payment_failed
4000 0000 0000 9235風險偏高,送進審查無——扣款照樣建立無review.opened
4000 0000 0000 0101Radar 的安全碼檢查失敗card_declinedgeneric_declinepayment_intent.payment_failed
4000 0000 0000 0036Radar 的郵遞區號檢查失敗card_declinedgeneric_declinepayment_intent.payment_failed
4000 0000 0000 0259扣款成功,之後以詐欺為由提出爭議無無charge.dispute.created
4000 0000 0000 2685扣款成功,之後以「未收到商品」提出爭議無無charge.dispute.created
4000 0000 0000 5423扣款成功,之後收到早期詐欺警示無無radar.early_fraud_warning.created
4000 0000 0000 7726退款先是 pending,之後才成功無無refund.updated
4000 0000 0000 5126退款看起來成功,之後才失敗無無refund.failed
4000 0000 0000 3220必須 3D 驗證無無payment_intent.requires_action
4000 0084 0000 1629驗證通過,之後仍被拒card_declined無payment_intent.payment_failed
4000 0084 0000 12803D 驗證的查詢本身出錯card_declined無payment_intent.payment_failed

把它當成一張表來讀,會養成兩個習慣。第一,card_declined 不是原因,是類別——原因在 decline_code。上面八種被拒裡,五種帶著 decline_code;另外三種(過期、安全碼錯誤、處理錯誤)沒有,原因直接寫在 error.code。錯誤處理只看 error.code 的話,資金不足和被竊卡對它來說一模一樣。不過要區分的是你的內部處理,不是顧客看到的字:Stripe 在 lost_card、stolen_card 和 fraudulent 的說明裡都寫著,不要把更詳細的原因告訴顧客,照 generic_decline 的方式呈現。

第二,有些結果根本不會出現在回應裡。被送進審查的扣款、幾週後才開的爭議、從成功翻成失敗的非同步退款——API 呼叫的當下都看不到。它們以事件的形式到達,或者因為端點根本沒寫而永遠不會到。這才是值得刻意去測的失敗:先讓卡被擋下,再看你的系統怎麼處理那個事件。

表格放不下的兩個註腳。你不送安全碼或郵遞區號,Stripe 就直接跳過這兩項檢查,檢查也就不可能失敗——所以模擬檢查失敗的那幾張卡,在沒收這兩個欄位的表單上會安靜地成功。至於被 Radar 擋下的付款,generic_decline 的官方說明本來就包含「Stripe Radar 或 Adaptive Acceptance 封鎖了付款」。

測試 3D 驗證

3D Secure(3D 驗證)是線上刷卡時額外的一道身分驗證;在歐洲經濟區,強化客戶驗證(SCA)法規要求線上付款做這一步。它也是整合最常出狀況的地方,因為一路成功的測試永遠碰不到它。需要驗證的付款不會失敗、也不會成功:PaymentIntent 會停在 requires_action,前端必須把流程交給 Stripe.js,讓顧客完成驗證。

表格裡有九張卡在測這些分支,最省時間的區分是「必須」與「支援」:

  • 4000 0000 0000 3220——必須驗證,而且驗證成功。這是拿來開發的那一張:用它,就會知道你的前端是真的呼叫了確認步驟,還是默默把 requires_action 當成失敗。
  • 4000 0000 0000 3055——支援 3D 驗證,但預設不要求。用來確認你沒有不小心把驗證變成強制。
  • 4000 0084 0000 1629 與 4000 0084 0000 1280——流程收尾出錯的兩種方式:顧客驗證完、發卡行照樣拒絕;以及驗證的查詢本身出錯。兩者都回 card_declined,所以一個以為「驗證完成=付款完成」的錯誤處理,會替一筆根本沒成立的付款顯示成功畫面。
  • 4000 0025 0000 3155 與 4000 0027 6000 3184——儲存卡片的情況。前者在卡片設定為日後使用之前,顧客不在場的扣款都要驗證;後者每一筆都要。如果你打算之後在顧客不在場時扣款(像訂閱續扣),這兩張就是續扣會不會成功的分水嶺。

容易踩的一個坑:只有這一組的卡真正測得到 3D 驗證。其他測試卡也可能觸發它,但 Stripe 會回 attempt_acknowledged 並略過額外步驟,於是你的驗證畫面從沒出現過,你卻以為它能動。另外,直接在 Stripe Dashboard 建立的付款不會跳轉到 3D 驗證——請從你自己的前端或 API 呼叫去跑。

按國家分的 Stripe 測試卡

Stripe 另外列了一份按國家分的測試卡:58 個國家/地區、64 張卡,每張都模擬「該國發行的卡付款成功」。它們是上面表格的最後一組,這一頁把台灣排在最前面。PaymentMethod 跟著國家代碼走——pm_card_tw、pm_card_jp、pm_card_de——例外有三個:墨西哥的 Carnet 卡和沙烏地阿拉伯那張沒有 PaymentMethod,日本的 JCB 卡用的是 pm_card_jcb,和品牌組那張 JCB 同一個。美國那一列就是 4242 4242 4242 4242 本身,另有 pm_card_us。

這些卡改變的是發卡國,用途也就在這裡:任何會讀手續費或卡片國別的流程,都該拿它們跑一遍。它們不測的是驗證。強化客戶驗證法規要求歐洲經濟區內的線上付款做 3D 驗證,但 Stripe 註明,歐洲與中東那一段的卡模擬的是不經驗證就成功的付款——德國卡、法國卡在這裡不會觸發你的驗證流程,要測驗證,請用 3D 驗證那一組。

卡片表下面還有 Stripe 為三種本地付款方式公布的測試值:德國、法國、西班牙的 SEPA 扣款 IBAN,日本的 Konbini,巴西的 Boleto。它們的結果來得跟卡片不一樣:SEPA 扣款會先停在 processing 再成功或失敗,Konbini 與 Boleto 的繳費單則停在 requires_action,直到付清或逾期,所以每一列列的是 webhook 會依序收到的整串事件,不是單一事件。Konbini 與 Boleto 的結果由顧客的 email 決定;Boleto 在沙盒裡可以用稅籍編號 000.000.000-00,Stripe 對它免除驗證。這張表沒有台灣的列,原因見本頁開頭:Stripe 沒有面向台灣顧客的本地付款方式。

退款、爭議,以及那些晚到的事件

正式環境裡的退款不是即時的,也不保證成功:它可能先回報成功、之後才失敗,也可能先停在 pending、之後才有結果。幾乎每一套測試都漏掉這件事,因為用一般的測試卡,退款會立刻完成,而且再也不會改變狀態。有兩張卡能把真實的行為找回來:4000 0000 0000 7726 讓退款先 pending、之後變成成功;4000 0000 0000 5126 先回報成功、之後才失敗。兩者事後都會送出事件——這正是你該在顧客打電話來問「錢怎麼沒退回來」之前就寫好的那段程式。

爭議也是同一回事,只是更慢。扣款照常成功,幾天後才出現爭議,而 charge.dispute.created 是你唯一會收到的通知。4000 0000 0000 0259 以詐欺為由提出爭議,4000 0000 0000 2685 以「未收到商品」提出,4000 0000 0000 1976 則是詢問(inquiry)而不是正式爭議。4000 0000 0000 5423 產生的是早期詐欺警示:卡組織在告訴你爭議大概要來了,而你還有時間主動退款。

要連結果一起模擬,就用 Stripe 保留給測試的證據字串回覆爭議:winning_evidence 讓爭議以勝訴結案,losing_evidence 以敗訴結案,escalate_inquiry_evidence 把詢問升級成正式爭議。

晚到的這一組還有最後一張:4000 0000 0000 0077 讓款項直接進可用餘額,而不是待入帳餘額。這不是付款測試,是記帳測試——下游有任何東西在對帳出款、又不想等結算期才知道對不對時,就用它。

把卡表下載成 JSON 或 CSV

要手抄的表,就是會抄錯的表。頁面最上面的兩個下載按鈕,把同樣的 119 張卡給你成機器讀得懂的檔案,由瀏覽器從渲染這一頁的同一份資料產生——所以你下載的內容,不可能和你剛剛讀到的不一樣。

JSON 是一個物件,帶著 source、checked、count 和 cards 陣列。每張卡都有一個固定的 id(可以直接拿來當測試名稱)、卡號、品牌、分組、一行說明、安全碼與有效期限的規則、四個對照欄位——payment_method、error_code、decline_code、webhook_event——以及 country:按國家分組那些卡的發卡國 ISO 代碼,台灣卡就是 "TW"。不適用的欄位是 null 而不是缺鍵,解析時不必到處防呆。

CSV 帶著同樣的十二個欄位,照 RFC 4180 加引號,用試算表打開、或用 pandas 讀進來都不需要額外參數。寫種子資料,或交給一定會有人來要的 QA 試算表,都很方便。下載檔一律是英文、依規範順序排列,不管你從哪個語言的頁面下載;表格下方的本地付款方式測試值只供複製,兩個檔案都不包含。

兩種下載都跟著目前的篩選走。把表格縮小到「被拒」、按下載 JSON,你拿到的是十列而不是全部 119 列——參數化測試通常要的正是這個:

test.each(fixtures.cards.filter(c => c.group === 'decline'))(
  '$id surfaces $decline_code',
  async ({ payment_method, error_code, decline_code }) => { /* … */ },
);

檔案裡帶著來源網址和核對日期,因為沒有日期的卡號表,半年後就沒辦法信任。Stripe 改了卡號時,老實的做法是回頭重新核對來源,而不是在程式庫裡留一份過期的副本。

你真正在做的東西

沒有人會為了好玩去查測試卡。你會在這裡,是因為正在接結帳,而結帳只是更大一件事的一塊:一份商品目錄、一個顧客改不了的價格、一個在某處用密鑰建立的 session、一個決定這筆訂單算不算已付款的 webhook,以及錢進來之後的所有事。

最常出錯的不是卡,是價格。一個把價格寫在 HTML 裡、再把金額送到結帳端點的靜態網站,等於把那個數字交給瀏覽器決定,而瀏覽器不值得信任——這是一整類測試卡永遠抓不到的錯誤,因為被竄改的付款會漂亮地成功。

Clize 正是為了這個原因建在 Stripe Checkout 上,並把價格放在伺服器端:代管的商店會拿隨網站部署的 _catalog.json 為每一筆購物車定價,完全不理會用戶端宣稱的金額。如果你的問題長這樣,目錄檔的產生器與檢查工具在這裡(英文);如果你只需要讓一位顧客付一筆金額,clize pay link --amount 49 會回傳一個正式(live)的 Stripe Checkout 網址,不需要你自己的 Stripe 帳戶——那一筆是真的錢,所以千萬別和這一頁上的號碼混在一起。

常見問題

Stripe 測試卡號是多少?

最常用的 Stripe 測試卡號是 4242 4242 4242 4242:安全碼填任意三碼(American Express 是四碼)、有效期限填任何未來日期(例如 12/34)。這是一張一定成功的 Visa,其他欄位隨便填;它只對測試金鑰有效,送到正式環境的金鑰會被拒。

測試卡的有效期限和安全碼要填什麼?

任何未來的日期都可以,12/34 就是 Stripe 自己用的例子。安全碼填任意三碼,American Express 則是任意四碼。你不送安全碼的話,Stripe 會直接跳過安全碼檢查,所以模擬安全碼檢查失敗的那張卡,在沒有安全碼欄位的表單上看起來會成功。

為什麼 Stripe 測試卡一直被拒?

通常是三個原因之一。你把它送到了正式環境的金鑰,那本來就會拒絕測試卡號;你複製到一張本來就設計成被拒的卡,例如 4000 0000 0000 0002 和整個「被拒」分組;或者你用了過不了 Luhn 檢查的卡號,例如 4242 4242 4242 4241,它在扣款建立之前就回 incorrect_number。

台灣可以用 Stripe 嗎?有台灣的測試卡嗎?

台灣不在 Stripe 公布的可開戶國家與地區清單上(2026 年 9 月 26 日查閱),Stripe 的支付方式支援表上也沒有面向台灣顧客的本地付款方式。測試卡則有:Stripe 按國家列出的台灣卡是 4000 0015 8000 0008,PaymentMethod 為 pm_card_tw,模擬台灣發行的卡付款成功。

新臺幣的金額要怎麼傳給 Stripe?

乘以 100。Stripe 的 API 以貨幣的最小單位收金額,TWD 不是零位小數貨幣,所以 NT$1,290 要傳 129000,傳 1290 扣的是 NT$12.90。出款則相反:Stripe 把 TWD 出款當零位小數處理,手動出款的金額必須能被 100 整除。

Stripe 要怎麼測試 3D 驗證?

用 4000 0000 0000 3220,它必須驗證、而且驗證成功。PaymentIntent 會回到 requires_action,前端要交給 Stripe.js 讓顧客完成驗證。只有 3D 驗證那一組的卡真正測得到這個流程;其他卡也可能觸發它,但 Stripe 會回 attempt_acknowledged 並略過額外步驟。

測試卡可以在正式環境(live mode)用嗎?

不行。測試卡號只被測試金鑰接受,而真實的卡片資料也不能拿來測試——Stripe 服務協議禁止在正式環境用真實付款資料做測試。在設定檔裡把兩組金鑰分開放,因為這個錯誤一個方向是無聲的,另一個方向是要花錢的。

clize pay link — 一行指令拿到正式的結帳網址

測試卡跑完了,就收一筆真的款。

一行指令回傳一個正式的 Stripe Checkout 付款連結,不需要 Stripe 帳戶、金鑰或申請表單。那是真的錢,所以手上拿的是哪一組號碼,要分清楚。

$ npm i -g @clize/clize && clize login
$ clize pay link --amount 49 --for "訂單 1042"
[ Agent Storefront → ]