개발자 도구

테스트용 신용카드 번호 목록

Stripe, PayPal, Square, Braintree의 테스트 카드 번호를 브랜드별·성공/실패 패턴별로 정리. 원클릭 복사 지원. 결제 구현 및 테스트 시 활용하세요.


[[ labels.stripe_hint ]]
Service [[ labels.col_number ]] [[ labels.col_brand ]] [[ labels.col_behavior ]]
[[ card.service ]] [[ formatNumber(card.number) ]] [[ card.brand ]] [[ labels['subtype_' + card.subtype] ]] [[ behaviorLabel(card.behavior) ]]

사용 팁

  • Stripe 테스트 모드에서는 CVC에 임의의 3자리 숫자(Amex는 4자리), 유효기간에 미래의 임의 날짜, 우편번호에 임의의 5자리 숫자를 입력하면 통과됩니다. 테스트 키를 사용하는 한 실제 청구는 발생하지 않습니다.
  • 모든 테스트 카드 번호는 Luhn 검사(카드 번호 검증 알고리즘)를 통과하도록 설계되어 있어, 프론트엔드 유효성 검사에서 거부되지 않고 게이트웨이 측에서 테스트 시나리오를 재현할 수 있습니다.
  • 3D Secure(3DS) 테스트에는 전용 카드를 사용합니다. 4000002500003155는 인증 다이얼로그가 표시되는 시나리오이고, 4000000000003220은 3DS 2 플로우 테스트에 사용됩니다.
  • 프로덕션 환경에서 테스트 카드 번호를 사용하면 거래가 거절됩니다. 테스트 키와 테스트 카드 번호는 반드시 함께 사용하세요. Stripe의 테스트 키는 sk_test_로 시작합니다.

자주 묻는 질문

테스트 키(sk_test_ 등)와 함께 사용하는 한 실제 청구는 전혀 발생하지 않습니다. 실수로 프로덕션 키를 사용하면 테스트 번호로도 거래가 시도되므로, 키를 혼용하지 않도록 주의하세요.

Stripe의 경우 CVC는 임의의 숫자(Visa/Mastercard는 3자리, Amex는 4자리), 유효기간은 미래의 임의 날짜(예: 12/34), 우편번호는 임의의 5자리를 입력하면 통과됩니다. PayPal, Square, Braintree도 마찬가지로 샌드박스 환경에서는 이러한 값을 엄격하게 검증하지 않습니다.

카드 번호의 자릿수와 배열이 유효한지 확인하는 계산식입니다. 오른쪽 끝부터 한 자리 건너 숫자를 2배로 하여 각 자릿수를 합산하고, 합계가 10의 배수이면 유효하다고 판정합니다. 대부분의 오타를 걸러낼 수 있지만, 실제로 존재하는 카드인지 여부는 판별하지 못합니다.

"4242..."는 반복 숫자라 외우기 쉽고, Luhn 검사를 통과하도록 설계되어 있습니다. Stripe가 이 번호를 공식 문서에서 오랫동안 사용해 온 덕분에 결제 개발자들 사이에서 사실상의 표준이 되었습니다.

여담 ― Luhn 알고리즘 ― 1954년부터 카드 번호를 지켜온 수호자

신용카드 번호 끝에 붙는 "체크 디지트"는 1954년 IBM 엔지니어 Hans Peter Luhn이 고안한 알고리즘으로 검증됩니다. 오른쪽 끝부터 한 자리 건너 숫자를 2배로 하여 각 자릿수를 합산하고, 10으로 나누어 떨어지면 유효한 번호입니다. 이 단순한 알고리즘은 현재도 Visa, Mastercard, Amex를 포함한 주요 브랜드에서 사용되며, 오타로 인한 입력 오류의 대부분을 걸러낼 수 있습니다.

다만 Luhn 검사는 어디까지나 "자릿수 오류 감지"에 특화되어 있으며, 실제로 존재하는 카드인지 여부는 판별하지 못합니다. 폼의 클라이언트 사이드 유효성 검사에서 Luhn 검사를 사용하는 것은 UX 개선(즉시 오류 알림)일 뿐이며, 부정 사용 방지에는 도움이 되지 않습니다. 실제 신용 확인은 반드시 서버 사이드에서 결제 게이트웨이를 통해 이루어져야 합니다.

테스트 카드 번호는 각 결제 서비스가 의도적으로 Luhn 검사를 통과하도록 설계한 고정 번호입니다. 예를 들어 Stripe의 4242424242424242는 같은 숫자의 반복이라 기억하기 쉬우면서도 Luhn 검증도 통과합니다. 번호 자체에는 특별한 의미가 없으며, Stripe 시스템 내에서 "성공", "실패" 등의 동작에 매핑되어 있을 뿐입니다.