FERRAMENTA GRATUITA · CARTÕES DE TESTE DO STRIPE
Cartões de teste do Stripe
O que você procura é 4242 4242 4242 4242, com qualquer CVC de três dígitos (quatro no American Express), qualquer data futura, como 12/34, e o que quiser nos outros campos. Ele só funciona com as chaves de API de teste do Stripe. Para um cartão emitido no Brasil, a Stripe tem o 4000 0007 6000 0002, com o PaymentMethod pm_card_br, e para o Boleto o desfecho sai do e-mail do pagador. A tabela abaixo traz os 119 cartões de teste conferidos na página de testes da Stripe em 26 de setembro de 2026 — 64 deles por país, com o do Brasil no topo — e, embaixo, os valores de teste do Boleto. Busque, clique num número para copiar e baixe tudo em JSON ou CSV para a sua suíte de testes. Cada cartão de falha traz o código de erro, o decline code e o evento de webhook que ele gera — o que a documentação oficial espalha por três páginas.
Também emEnglish繁體中文日本語한국어EspañolFrançaisDeutschPortuguês (Brasil)
Clique num número para copiá-lo sem espaços. Nada é enviado a lugar nenhum: a tabela e os downloads são montados nesta página. O download segue o filtro, então dá para exportar só os cartões de recusa.
| Número | O que simula | Bandeira | PaymentMethod | Códigos e evento |
|---|---|---|---|---|
| Pagamento aprovado, por bandeira · 15 | ||||
| Pagamento aprovado | Visa | pm_card_visa |
||
| Pagamento aprovado com cartão de débito | Visa (debit) | pm_card_visa_debit |
||
| Pagamento aprovado | Mastercard | pm_card_mastercard |
||
| Pagamento aprovado com BIN da série 2 | Mastercard (2-series) | |||
| Pagamento aprovado com cartão de débito | Mastercard (debit) | pm_card_mastercard_debit |
||
| Pagamento aprovado com cartão pré-pago | Mastercard (prepaid) | pm_card_mastercard_prepaid |
||
| Pagamento aprovado (15 dígitos, CVC de 4 dígitos) | American Express | pm_card_amex |
||
| Pagamento aprovado, segundo BIN da Amex | American Express | |||
| Pagamento aprovado | Discover | pm_card_discover |
||
| Pagamento aprovado com número de 19 dígitos | UnionPay (19-digit) | |||
| Pagamento aprovado | Diners Club | pm_card_diners |
||
| Pagamento aprovado com número de 14 dígitos | Diners Club (14-digit) | |||
| Pagamento aprovado | JCB | pm_card_jcb |
||
| Pagamento aprovado | UnionPay | pm_card_unionpay |
||
| Pagamento aprovado com cartão francês de bandeira conjunta | Cartes Bancaires / Visa | pm_card_visa_cartesBancaires |
||
| Pagamentos recusados · 10 | ||||
| Recusado por motivo genérico | Visa | pm_card_visa_chargeDeclined |
card_declined |
|
| Recusado por fundos insuficientes | Visa | pm_card_visa_chargeDeclinedInsufficientFunds |
card_declined |
|
| Recusado por perda do cartão | Visa | pm_card_visa_chargeDeclinedLostCard |
card_declined |
|
| Recusado por roubo do cartão | Visa | pm_card_visa_chargeDeclinedStolenCard |
card_declined |
|
| Recusado por cartão vencido | Visa | pm_card_chargeDeclinedExpiredCard |
expired_card |
|
| Recusado por CVC incorreto (envie um CVC, senão a verificação é pulada) | Visa | pm_card_chargeDeclinedIncorrectCvc |
incorrect_cvc |
|
| Recusado por erro de processamento | Visa | pm_card_chargeDeclinedProcessingError |
processing_error |
|
| Número incorreto — reprovado no algoritmo de Luhn de propósito | Visa | incorrect_number |
||
| Recusado por exceder o limite de velocidade | Visa | pm_card_visa_chargeDeclinedVelocityLimitExceeded |
card_declined |
|
| Anexa a um Customer e falha quando é cobrado | Visa | pm_card_chargeCustomerFail |
card_declined |
|
| Radar, fraude e verificação de endereço · 9 | ||||
| Risco mais alto — o Radar sempre bloqueia | Visa | pm_card_radarBlock |
card_declined |
|
| Nível de risco "mais alto" — o Radar pode bloquear, conforme as suas regras | Visa | pm_card_riskLevelHighest |
card_declined |
|
| Nível de risco "elevado" — o Radar pode mandar para revisão manual | Visa | pm_card_riskLevelElevated |
||
| Pontuação alta de contestação por fraude | Visa | pm_card_highFraudDisputeScore |
||
| Pontuação alta de alerta antecipado de fraude | Visa | pm_card_highEfwScore |
||
| Abuso de teste gratuito — bloqueado quando esse controle está ativo | Visa | pm_card_freeTrialAbuseBlock |
card_declined |
|
| Falha na verificação do CVC (só se você enviar um CVC) | Visa | pm_card_cvcCheckFail |
card_declined |
|
| Falha na verificação do CEP (só se você enviar um código postal) | Visa | pm_card_avsZipFail |
card_declined |
|
| Falham as verificações do CEP e da linha 1 do endereço | Visa | pm_card_avsFail |
card_declined |
|
| Contestações e alertas de fraude · 8 | ||||
| Cobrança aprovada, depois contestada como fraude | Visa | pm_card_createDispute |
||
| Cobrança aprovada, depois contestada como fraude, na Discover | Discover | |||
| Cobrança aprovada, depois contestada como produto não recebido | Visa | pm_card_createDisputeProductNotReceived |
||
| Cobrança aprovada, depois recebe um pedido de informação em vez de chargeback | Visa | pm_card_createDisputeInquiry |
||
| Cobrança aprovada, depois chega um alerta antecipado de fraude | Visa | pm_card_createIssuerFraudRecord |
||
| Cobrança aprovada, depois contestada mais de uma vez | Visa | pm_card_createMultipleDisputes |
||
| Contestação qualificada para o Visa Compelling Evidence 3.0 | Visa | pm_card_createCe3EligibleDispute |
||
| Contestação qualificada para o Smart Disputes | Visa | pm_card_createAutoRepresentmentEligibleDispute |
||
| Reembolsos e saldo · 4 | ||||
| Reembolso começa pendente e é concluído depois | Visa | pm_card_pendingRefund |
||
| Reembolso parece concluído e falha depois | Visa | pm_card_refundFail |
||
| Cobrança dos EUA vai direto para o saldo disponível | Visa | pm_card_bypassPending |
||
| Cobrança internacional vai direto para o saldo disponível | Visa | pm_card_bypassPendingInternational |
||
| 3D Secure · 9 | ||||
| 3DS obrigatório, e o desafio é concluído | Visa (IE) | pm_card_threeDSecure2Required |
||
| 3DS obrigatório num cartão emitido nos EUA, desafio concluído | Visa (US) | |||
| 3DS concluído, e o pagamento é recusado mesmo assim | Visa | pm_card_threeDSecureRequiredChargeDeclined |
card_declined |
|
| A própria consulta do 3DS dá erro, e o pagamento é recusado | Visa | pm_card_threeDSecureRequiredProcessingError |
card_declined |
|
| 3DS aceito, mas não exigido pelas regras padrão | Visa | pm_card_threeDSecureOptional |
||
| 3DS aceito, mas a tentativa gera erro de processamento | Visa | pm_card_threeDSecureOptionalProcessingError |
card_declined |
|
| Pagamento fora da sessão exige 3DS até o cartão ser configurado para uso futuro | Visa | pm_card_authenticationRequiredOnSetup |
||
| 3DS obrigatório em toda transação, seja qual for a configuração | Visa | pm_card_authenticationRequired |
||
| Já configurado para uso fora da sessão; pagamentos na sessão ainda autenticam | Visa | pm_card_authenticationRequiredSetupForOffSession |
||
| Pagamento aprovado, por país · 64 | ||||
| Seu mercadoPagamento aprovado · país emissor: Brasil | Visa | pm_card_br |
||
| Pagamento aprovado · país emissor: Estados Unidos | Visa | pm_card_us |
||
| Pagamento aprovado · país emissor: Argentina | Visa | pm_card_ar |
||
| Pagamento aprovado · país emissor: Canadá | Visa | pm_card_ca |
||
| Pagamento aprovado · país emissor: Chile | Visa | pm_card_cl |
||
| Pagamento aprovado · país emissor: Colômbia | Visa | pm_card_co |
||
| Pagamento aprovado · país emissor: Costa Rica | Visa | pm_card_cr |
||
| Pagamento aprovado · país emissor: Equador | Visa | pm_card_ec |
||
| Pagamento aprovado · país emissor: México | Visa | pm_card_mx |
||
| Pagamento aprovado · país emissor: México | Carnet | |||
| Pagamento aprovado · país emissor: Panamá | Visa | pm_card_pa |
||
| Pagamento aprovado · país emissor: Paraguai | Visa | pm_card_py |
||
| Pagamento aprovado · país emissor: Peru | Visa | pm_card_pe |
||
| Pagamento aprovado · país emissor: Uruguai | Visa | pm_card_uy |
||
| Pagamento aprovado · país emissor: Emirados Árabes Unidos | Visa | pm_card_ae |
||
| Pagamento aprovado · país emissor: Emirados Árabes Unidos | Mastercard | pm_card_ae_mastercard |
||
| Pagamento aprovado · país emissor: Áustria | Visa | pm_card_at |
||
| Pagamento aprovado · país emissor: Bélgica | Visa | pm_card_be |
||
| Pagamento aprovado · país emissor: Bulgária | Visa | pm_card_bg |
||
| Pagamento aprovado · país emissor: Bielorrússia | Visa | pm_card_by |
||
| Pagamento aprovado · país emissor: Croácia | Visa | pm_card_hr |
||
| Pagamento aprovado · país emissor: Chipre | Visa | pm_card_cy |
||
| Pagamento aprovado · país emissor: Tchéquia | Visa | pm_card_cz |
||
| Pagamento aprovado · país emissor: Dinamarca | Visa | pm_card_dk |
||
| Pagamento aprovado · país emissor: Estônia | Visa | pm_card_ee |
||
| Pagamento aprovado · país emissor: Finlândia | Visa | pm_card_fi |
||
| Pagamento aprovado · país emissor: França | Visa | pm_card_fr |
||
| Pagamento aprovado · país emissor: Alemanha | Visa | pm_card_de |
||
| Pagamento aprovado · país emissor: Gibraltar | Visa | pm_card_gi |
||
| Pagamento aprovado · país emissor: Grécia | Visa | pm_card_gr |
||
| Pagamento aprovado · país emissor: Hungria | Visa | pm_card_hu |
||
| Pagamento aprovado · país emissor: Irlanda | Visa | pm_card_ie |
||
| Pagamento aprovado · país emissor: Itália | Visa | pm_card_it |
||
| Pagamento aprovado · país emissor: Letônia | Visa | pm_card_lv |
||
| Pagamento aprovado · país emissor: Liechtenstein | Visa | pm_card_li |
||
| Pagamento aprovado · país emissor: Lituânia | Visa | pm_card_lt |
||
| Pagamento aprovado · país emissor: Luxemburgo | Visa | pm_card_lu |
||
| Pagamento aprovado · país emissor: Malta | Visa | pm_card_mt |
||
| Pagamento aprovado · país emissor: Países Baixos | Visa | pm_card_nl |
||
| Pagamento aprovado · país emissor: Noruega | Visa | pm_card_no |
||
| Pagamento aprovado · país emissor: Polônia | Visa | pm_card_pl |
||
| Pagamento aprovado · país emissor: Portugal | Visa | pm_card_pt |
||
| Pagamento aprovado · país emissor: Romênia | Visa | pm_card_ro |
||
| Pagamento aprovado · país emissor: Arábia Saudita | Visa | |||
| Pagamento aprovado · país emissor: Eslovênia | Visa | pm_card_si |
||
| Pagamento aprovado · país emissor: Eslováquia | Visa | pm_card_sk |
||
| Pagamento aprovado · país emissor: Espanha | Visa | pm_card_es |
||
| Pagamento aprovado · país emissor: Suécia | Visa | pm_card_se |
||
| Pagamento aprovado · país emissor: Suíça | Visa | pm_card_ch |
||
| Pagamento aprovado · país emissor: Reino Unido | Visa | pm_card_gb |
||
| Pagamento aprovado · país emissor: Reino Unido | Visa (debit) | pm_card_gb_debit |
||
| Pagamento aprovado · país emissor: Reino Unido | Mastercard | pm_card_gb_mastercard |
||
| Pagamento aprovado · país emissor: Austrália | Visa | pm_card_au |
||
| Pagamento aprovado · país emissor: China | Visa | pm_card_cn |
||
| Pagamento aprovado · país emissor: Hong Kong | Visa | pm_card_hk |
||
| Pagamento aprovado · país emissor: Índia | Visa | pm_card_in |
||
| Pagamento aprovado · país emissor: Japão | Visa | pm_card_jp |
||
| Pagamento aprovado · país emissor: Japão | JCB | pm_card_jcb |
||
| Pagamento aprovado · país emissor: Malásia | Visa | pm_card_my |
||
| Pagamento aprovado · país emissor: Nova Zelândia | Visa | pm_card_nz |
||
| Pagamento aprovado · país emissor: Singapura | Visa | pm_card_sg |
||
| Pagamento aprovado · país emissor: Taiwan | Visa | pm_card_tw |
||
| Pagamento aprovado · país emissor: Tailândia | Visa (credit) | pm_card_th_credit |
||
| Pagamento aprovado · país emissor: Tailândia | Visa (debit) | pm_card_th_debit |
||
Formas de pagamento locais: valores de teste
O que a Stripe publica para o Boleto no Brasil — primeiro, por ser o seu mercado —, para o débito automático SEPA na Alemanha, na França e na Espanha e para o Konbini no Japão. Clique num valor para copiá-lo. Esses pagamentos esperam em requires_action ou processing antes de se resolver, por isso a última coluna mostra a sequência inteira de webhooks.
| Valor de teste | O que simula | Parâmetro | PaymentMethod | Códigos e evento |
|---|---|---|---|---|
| Boleto · Brasil (BR) · 6 | ||||
| Seu mercadoBoleto pago depois de 3 minutos | billing_ |
|||
| Seu mercadoBoleto pago na hora | billing_ |
|||
| Seu mercadoBoleto vence sem pagamento; payment_failed em segundos | billing_ |
|||
| Seu mercadoBoleto vence sem pagamento depois de uns 3 minutos | billing_ |
|||
| Seu mercadoBoleto nunca pago; vence no expires_at dele | billing_ |
|||
| Seu mercadoCPF de sandbox que dispensa a validação do documento | boleto[ |
|||
| SEPA Direct Debit · Alemanha (DE) · 6 | ||||
| O PaymentIntent vai de processing para succeeded | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para succeeded depois de pelo menos três minutos | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para requires_payment_method | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para requires_payment_method depois de pelo menos três minutos | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para succeeded e uma contestação é criada logo em seguida | sepa_ |
pm_ |
||
| O pagamento falha com o código insufficient_funds | sepa_ |
pm_ |
insufficient_ |
|
| SEPA Direct Debit · França (FR) · 6 | ||||
| O PaymentIntent vai de processing para succeeded | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para succeeded depois de pelo menos três minutos | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para requires_payment_method | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para requires_payment_method depois de pelo menos três minutos | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para succeeded e uma contestação é criada logo em seguida | sepa_ |
pm_ |
||
| O pagamento falha com o código insufficient_funds | sepa_ |
pm_ |
insufficient_ |
|
| SEPA Direct Debit · Espanha (ES) · 6 | ||||
| O PaymentIntent vai de processing para succeeded | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para succeeded depois de pelo menos três minutos | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para requires_payment_method | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para requires_payment_method depois de pelo menos três minutos | sepa_ |
pm_ |
||
| O PaymentIntent vai de processing para succeeded e uma contestação é criada logo em seguida | sepa_ |
pm_ |
||
| O pagamento falha com o código insufficient_funds | sepa_ |
pm_ |
insufficient_ |
|
| Konbini · Japão (JP) · 6 | ||||
| Pagamento concluído depois de 3 minutos | billing_ |
|||
| Pagamento concluído na hora | billing_ |
|||
| Pagamento expira na hora | billing_ |
|||
| Nunca pago; expira depois de 3 minutos | billing_ |
|||
| Nunca pago; expira no expires_at que você definir | billing_ |
|||
| Número de confirmação recusado ao confirmar o PaymentIntent | payment_ |
payment_ |
||
Fontes, todas na documentação da Stripe em português: Testes (cartões por bandeira e por país, recusas, prevenção a fraudes, contestações, reembolsos, 3D Secure e a sequência de webhooks das formas de pagamento com guia), Boleto — teste sua integração, Pix — teste a integração, parcelas e códigos de recusa. Tabela conferida em 26 de setembro de 2026.
Como usar um cartão de teste do Stripe
Três passos. Cartão de teste só é aceito por chave de API de teste, então nada aqui encosta num cartão ou num cliente de verdade.
- Use as chaves de teste. As chaves de API publicável e secreta de teste, ou uma área restrita (sandbox). O Contrato de Serviços da Stripe proíbe testar em produção com dados reais de pagamento, e número de teste enviado a uma chave de produção é simplesmente recusado.
- Escolha o cartão pelo desfecho que você quer. 4242 4242 4242 4242 para um pagamento aprovado simples, 4000 0007 6000 0002 para um cartão emitido no Brasil. Para exercitar o tratamento de erros, pegue o cartão cuja linha traz o decline code que você quer ver, com qualquer CVC de três dígitos e qualquer data futura.
- No código do servidor, use o PaymentMethod. A Stripe recomenda passar um PaymentMethod como pm_card_visa ou pm_card_br nas chamadas de API, em vez do número, para o código de teste nunca conter um número de cartão. A coluna PaymentMethod traz o token de todo cartão que tem um.
O cartão do Brasil: o que ele testa, e o que não testa
Cartões de teste do Stripe são números de cartão que só funcionam com as chaves de API de teste e simulam, cada um, um desfecho — pagamento aprovado, recusa por fundos insuficientes, contestação, 3D Secure. Esta página reúne os 119 que a Stripe lista na página de testes, 64 deles por país, numa tabela só, com o código de erro, o decline code e o evento de webhook de cada um. Para o Brasil existe um: 4000 0007 6000 0002, Visa, com o PaymentMethod pm_card_br. Ele abre o grupo por país, marcado como o seu mercado.
O que esse cartão muda é o país do emissor, e é para isso que ele serve. A Stripe calcula a tarifa internacional pelo país do emissor do cartão e avisa que cartões emitidos fora dos EUA podem ter tarifa internacional mesmo em ambiente de teste: é o cartão para passar por qualquer código que leia a tarifa ou o país do cartão. O que ele não testa é parcelamento. A documentação de parcelas da Stripe cobre o Japão, o México e o Mastercard Installments — o Brasil não está lá, e não há cartão de teste de parcelas para ele.
Para simular onde o cliente está, e não de onde vem o cartão, a Stripe documenta e-mails com localização para Checkout Sessions, Payment Links e tabelas de preços: test+location_BR@example.com como customer_email na Checkout Session, ou como prefilled_email no Payment Link. A página do Checkout passa a mostrar a moeda e as formas de pagamento que um cliente no Brasil veria.
Um cuidado com a tabela da própria Stripe: na versão em português, conferida em 26 de setembro de 2026, o cartão do Chile (4000 0015 2000 0001) aparece como "Chipre (CL)". Aqui o nome do país sai do código ISO; na dúvida, confie no código entre parênteses.
Boleto (e Pix): o desfecho sai do e-mail, não do número
Embaixo da tabela de cartões ficam os valores de teste do Boleto, primeiro por ser o seu mercado. Não há número para digitar: o desfecho é escolhido pelo e-mail do pagador, em billing_details.email — qualquer prefixo, qualquer domínio e, quando for o caso, uma palavra-chave antes da arroba.
| O que a Stripe simula | Webhooks | |
|---|---|---|
fulaninho@example.com (qualquer um) | Boleto pago depois de 3 minutos | requires_action → succeeded |
succeed_immediately@… | Boleto pago na hora, webhook em segundos | requires_action → succeeded |
expire_immediately@… | Vence sem pagamento, falha em segundos | requires_action → payment_failed |
expire_with_delay@… | Vence sem pagamento depois de 3 minutos | requires_action → payment_failed |
fill_never@… | Nunca pago; vence no expires_at | requires_action → payment_failed |
Numa área restrita, o tax_id precisa passar pela validação de CPF ou CNPJ, e a Stripe reserva dois valores que a dispensam: 000.000.000-00 e 00.000.000/0000-00. O resto da documentação muda o desenho do seu código em três pontos que cartão nenhum ensina:
- O pagamento chega um dia útil depois. No teste, o
payment_intent.succeededsai em segundos ou em 3 minutos; em produção, diz a Stripe, ele chega 1 dia útil após o pagamento. O pedido precisa aguentar ficar em aberto até lá sem ser cancelado por engano. - Boleto não tem reembolso. A Stripe diz que pagamentos em boleto não podem ser reembolsados; quem precisa devolver cria um processo próprio para repassar o crédito ao cliente.
- Boleto não tem contestação. Os cartões do grupo de contestações não têm equivalente aqui.
O prazo de vencimento é seu: expires_after_days vai de 0 a 60 dias, com 3 por padrão, e a guia vence às 23:59 no horário de São Paulo (UTC−3). O Pix não está na tabela, mas o guia de Pix da Stripe usa os mesmos padrões de e-mail, aceita 000.000.000-00 como identificador fiscal de teste e tem um botão Simular digitalização, que abre uma página de Pix de teste hospedada pela Stripe para autorizar ou expirar o pagamento. A diferença que importa: em produção, o webhook de sucesso do Pix chega logo depois do pagamento, e não no dia útil seguinte.
Qual cartão dispara qual falha — e o que o seu webhook vai ver
Tratar bem um pagamento que falhou exige ter três coisas na cabeça ao mesmo tempo: o error.code que a chamada da API devolve, o decline_code que o emissor anexou — o "código de pagamento recusado" da documentação em português — e o evento que depois chega ao seu endpoint de webhook. A Stripe documenta os três em páginas diferentes. Aqui estão numa linha por desfecho:
| Cartão de teste | O que simula | error.code | decline_code | Evento de webhook |
|---|---|---|---|---|
| 4000 0000 0000 0002 | Recusa genérica | card_declined | generic_decline | payment_intent.payment_failed |
| 4000 0000 0000 9995 | Fundos insuficientes | card_declined | insufficient_funds | payment_intent.payment_failed |
| 4000 0000 0000 9987 | Cartão perdido | card_declined | lost_card | payment_intent.payment_failed |
| 4000 0000 0000 9979 | Cartão roubado | card_declined | stolen_card | payment_intent.payment_failed |
| 4000 0000 0000 6975 | Tentativas demais no mesmo cartão | card_declined | card_velocity_exceeded | payment_intent.payment_failed |
| 4000 0000 0000 0069 | Cartão vencido | expired_card | nenhum | payment_intent.payment_failed |
| 4000 0000 0000 0127 | CVC incorreto | incorrect_cvc | nenhum | payment_intent.payment_failed |
| 4000 0000 0000 0119 | Erro de processamento na rede | processing_error | nenhum | payment_intent.payment_failed |
| 4242 4242 4242 4241 | Número reprovado no algoritmo de Luhn | incorrect_number | nenhum | nenhum — recusado antes de existir cobrança |
| 4100 0000 0000 0019 | O Radar bloqueia, sempre | card_declined | generic_decline | payment_intent.payment_failed |
| 4000 0000 0000 9235 | Risco elevado, vai para revisão | nenhum — a cobrança é criada | nenhum | review.opened |
| 4000 0000 0000 0259 | Aprovado, depois contestação por fraude | nenhum | nenhum | charge.dispute.created |
| 4000 0000 0000 7726 | Reembolso começa pendente, conclui depois | nenhum | nenhum | refund.updated |
| 4000 0000 0000 5126 | Reembolso parece concluído, falha depois | nenhum | nenhum | refund.failed |
| 4000 0000 0000 3220 | Desafio 3D Secure obrigatório | nenhum | nenhum | payment_intent.requires_action |
Dois hábitos saem de ler isso como uma tabela só. Primeiro, card_declined não é motivo, é categoria: o motivo está no decline_code, e só uma parte das recusas traz um. Um tratamento de erros que olha só o error.code vê fundos insuficientes e cartão roubado como a mesma coisa — e mostra a mensagem errada para o cliente cujo cartão só estava sem limite. Segundo, parte dos desfechos nunca aparece na resposta: a cobrança que foi para revisão, a contestação de três semanas depois, o reembolso que muda de concluído para falhou chegam como evento, ou não chegam porque o endpoint nunca foi escrito.
Duas notas de rodapé. A Stripe pula as verificações de CVC e de CEP quando esses campos não são enviados, então os cartões que simulam falha nelas passam em silêncio se o seu formulário não os coleta. E nos pagamentos bloqueados pelo Radar, o generic_decline cobre, pela própria definição da Stripe, o caso em que o Stripe Radar ou o Adaptive Acceptance bloqueou o pagamento — de propósito: o cliente não deve saber que foi marcado como suspeito.
Testar o 3D Secure
O pagamento que exige autenticação não falha e não é aprovado: volta com o PaymentIntent em requires_action, e o seu front-end precisa passar o controle ao Stripe.js para o cliente completar o desafio. É onde uma integração que funciona no caminho feliz costuma cair.
- 4000 0000 0000 3220 — autenticação obrigatória e concluída. É o cartão para construir em cima: mostra se o seu cliente chama mesmo a etapa de confirmação ou trata
requires_actioncomo falha. - 4000 0084 0000 1629 e 4000 0084 0000 1280 — os dois finais ruins: o cliente autentica e o emissor recusa mesmo assim, ou a própria consulta dá erro. Os dois voltam como
card_declined, então quem supõe que desafio concluído é pagamento concluído mostra tela de sucesso para um pagamento que não aconteceu. - 4000 0025 0000 3155 e 4000 0027 6000 3184 — os casos de cartão salvo: o primeiro exige autenticação fora da sessão até ser configurado para uso futuro; o segundo exige sempre. Se você vai cobrar depois, sem o cliente presente, estes dois separam a renovação que funciona da que morre.
Só os cartões do grupo 3D Secure testam o fluxo de verdade: outros podem acioná-lo, mas a Stripe devolve attempt_acknowledged e pula as etapas extras. E o redirecionamento não acontece em pagamento criado direto no Dashboard — teste pelo seu front-end ou por uma chamada de API. Vale saber também que os cartões europeus do grupo por país simulam pagamento aprovado sem autenticação: para o desafio, use este grupo.
Reembolsos, contestações e o que chega atrasado
Em produção, reembolso não é instantâneo nem garantido: pode aparecer como concluído e falhar horas depois, ou ficar pendente e se resolver mais tarde. Com um cartão de teste comum, o reembolso conclui na hora e nunca muda de status. 4000 0000 0000 7726 começa pendente e depois conclui; 4000 0000 0000 5126 aparece concluído e depois falha. Os dois emitem evento depois — exatamente o caminho de código que você quer pronto antes de um cliente ligar atrás do dinheiro. No Boleto, lembre, reembolso não existe.
Contestação é a mesma coisa em câmera lenta: a cobrança é aprovada e o chargeback aparece dias depois, com charge.dispute.created como único aviso. 4000 0000 0000 0259 abre uma contestação por fraude, 4000 0000 0000 2685 uma de produto não recebido e 4000 0000 0000 1976 um pedido de informação em vez de um chargeback. 4000 0000 0000 5423 gera um alerta antecipado de fraude, que é a rede avisando que uma contestação provavelmente vem aí, enquanto ainda dá para reembolsar por conta própria.
Para simular o resultado além do evento, responda à contestação com os textos que a Stripe reserva para teste, no campo de texto sem categoria: winning_evidence fecha como ganha, losing_evidence como perdida e escalate_inquiry_evidence transforma um pedido de informação num chargeback de verdade. E 4000 0000 0000 0077 manda os fundos direto para o saldo disponível, sem passar pelo pendente — um teste de conciliação, não de pagamento.
Baixe os fixtures em JSON ou CSV
Tabela copiada à mão é tabela copiada errado. Os dois botões no topo da página entregam os mesmos 119 cartões em arquivos legíveis por máquina, gerados no navegador a partir dos dados com que a página foi montada — o que você baixa não tem como divergir do que acabou de ler.
O JSON é um objeto com source, checked, count e a lista cards. Cada cartão traz um id estável para usar no nome do teste, os dígitos, a bandeira, o grupo, a descrição, as regras de CVC e validade, os quatro campos da tabela cruzada — payment_method, error_code, decline_code e webhook_event — e country, o código ISO do país emissor nos cartões do grupo por país. Campo que não se aplica vem como null, não some.
O CSV tem as mesmas doze colunas, com aspas no padrão RFC 4180: abre em planilha e carrega no pandas sem argumento extra. Os dois arquivos são iguais em qualquer idioma da página — em inglês e na ordem da Stripe —, e os valores do Boleto e das outras formas locais ficam fora deles: estão aqui para copiar, não para baixar. Os downloads seguem o filtro aplicado; filtre as recusas, baixe o JSON e você recebe dez linhas em vez de 119, que é o que um teste parametrizado costuma querer:
test.each(fixtures.cards.filter(c => c.group === 'decline'))(
'$id devolve $decline_code',
async ({ payment_method, error_code, decline_code }) => { /* … */ },
);
Os arquivos carregam a URL da fonte e a data da conferência, porque lista de cartões sem data é lista em que não dá para confiar daqui a seis meses. Se a Stripe mudar um número, o conserto honesto é conferir a fonte de novo, não manter uma cópia velha no repositório.
O que você está construindo de fato
Ninguém procura cartão de teste por diversão. Você está montando um checkout, e o checkout é um pedaço de algo maior: um catálogo, um preço que o cliente não pode editar, uma sessão criada em algum lugar com uma chave secreta, um webhook que decide se o pedido conta como pago e tudo o que acontece depois que o dinheiro chega.
O pedaço que mais quebra não é o cartão, é o preço. Um site estático que guarda o preço no HTML e manda um valor para o endpoint de checkout está confiando o número ao navegador, e o navegador não é confiável — é uma classe inteira de erro que os cartões de teste nunca pegam, porque um pagamento adulterado é aprovado lindamente.
A Clize se apoia no Stripe Checkout exatamente por isso e deixa o preço do lado do servidor: uma loja hospedada precifica cada carrinho contra o _catalog.json publicado com o site e ignora o valor que o cliente disser. Se esse é o formato do seu problema, o arquivo de catálogo tem gerador e validador aqui (em inglês); e, se você só precisa que um cliente pague um valor, clize pay link --amount 49 devolve uma URL de Stripe Checkout real sem conta Stripe própria. Essa cobrança é dinheiro de verdade: mantenha-a longe dos números desta página.
Perguntas frequentes
Qual é o número do cartão de teste do Stripe?
O padrão é 4242 4242 4242 4242, um Visa que sempre é aprovado. Use com qualquer CVC de três dígitos, qualquer data futura, como 12/34, e qualquer valor nos outros campos. Ele só funciona com as chaves de API de teste do Stripe; numa chave de produção, é recusado.
Existe cartão de teste do Stripe para o Brasil?
Existe: 4000 0007 6000 0002, um Visa, com o PaymentMethod pm_card_br. Ele simula um pagamento aprovado com cartão emitido no Brasil, o que serve para testar tudo o que depende do país do emissor, como a tarifa internacional. Não simula recusa nem 3D Secure: para isso, use os grupos de recusas e de 3D Secure.
Como testar Boleto no Stripe?
Pelo e-mail do pagador: qualquer e-mail simula um boleto pago depois de 3 minutos, succeed_immediately antes da arroba paga na hora, expire_immediately e expire_with_delay simulam vencimento sem pagamento e fill_never nunca é pago. Numa área restrita, use 000.000.000-00 como CPF ou 00.000.000/0000-00 como CNPJ. Em produção, o webhook de sucesso chega 1 dia útil após o pagamento.
Por que meu cartão de teste está sendo recusado?
Três causas comuns. Você está usando chaves de produção, que recusam número de teste. Você copiou um cartão feito para recusar, como 4000 0000 0000 0002 e todo o grupo de recusas. Ou usou um número reprovado no algoritmo de Luhn, como 4242 4242 4242 4241, que devolve incorrect_number antes de existir cobrança.
Dá para testar parcelamento com cartão brasileiro no Stripe?
Não. A documentação de parcelas da Stripe cobre o Japão, o México e o Mastercard Installments; o Brasil não aparece, e não há cartão de teste para parcelamento brasileiro. O cartão 4000 0007 6000 0002 testa pagamento aprovado à vista com emissor brasileiro.
Como testar 3D Secure no Stripe?
Use 4000 0000 0000 3220, que exige autenticação e a conclui. O PaymentIntent volta em requires_action e o seu front-end passa o controle ao Stripe.js para o cliente fazer o desafio. Só os cartões do grupo 3D Secure testam o fluxo de verdade; outros podem acioná-lo, mas a Stripe devolve attempt_acknowledged e pula a etapa.
Posso usar cartão de teste em modo de produção?
Não. Número de teste só é aceito por chave de teste, e dados reais de pagamento não podem ser usados em teste — o Contrato de Serviços da Stripe proíbe. Separe os dois conjuntos de chaves na configuração, porque o erro é silencioso num sentido e caro no outro.
Terminou com os cartões de teste? Receba um pagamento de verdade.
Um comando devolve um link de Stripe Checkout em produção, sem conta Stripe, sem chave e sem formulário de cadastro. É dinheiro de verdade, então preste atenção em qual conjunto de números está na sua mão.
$ npm i -g @clize/clize && clize login $ clize pay link --amount 49 --for "fatura 1042"[ Agent Storefront → ]