Códigos de recusa
Códigos de recusa Stripe: o que cada um significa e como resolver
Verificado em
Os códigos de recusa Stripe informam por que um pagamento com cartão falhou na Stripe. Alguns vêm do banco do cartão, como `insufficient_funds` ou `expired_card`; alguns vêm da própria Stripe, como `fraudulent` ou `merchant_blacklist`. A Stripe os retorna como o `decline_code` em um erro `card_declined`. Cada página abaixo explica um código, diz se uma nova tentativa pode funcionar sob as regras da rede de cartões e mostra o que o checkout e as renovações de assinatura da PlatformDTC fazem com ele.
| Código | Significado |
|---|---|
| authentication_required | O banco quer que o titular do cartão verifique o pagamento, geralmente com 3D Secure. |
| authentication_not_handled | A verificação foi exigida, o comprador a pulou, e o banco recusou novamente. |
| approve_with_id | O banco não conseguiu autorizar o pagamento como enviado; mais uma tentativa pode funcionar. |
| call_issuer | O banco recusou sem um motivo e quer que o titular do cartão entre em contato com ele. |
| card_not_supported | O cartão não pode ser usado para este tipo de compra. |
| card_velocity_exceeded | O saldo, limite de crédito ou limite de valor do cartão foi atingido. |
| currency_not_supported | O cartão não pode ser cobrado na moeda do pagamento. |
| do_not_honor | O banco recusou o cartão sem dizer o porquê. |
| do_not_try_again | Código obsoleto: recusado por um motivo desconhecido; não cobre este cartão novamente. |
| duplicate_transaction | Um pagamento idêntico no mesmo cartão foi enviado momentos atrás. |
| expired_card | O cartão está com a data de validade vencida. |
| fraudulent | As verificações de fraude da Stripe suspeitaram que o pagamento era fraudulento e o bloquearam. |
| generic_decline | Recusado por um motivo desconhecido, ou bloqueado pelo Stripe Radar ou Adaptive Acceptance. |
| incorrect_address | O endereço de cobrança inserido não corresponde aos registros do banco. |
| incorrect_cvc | O código de segurança do cartão (CVC) está incorreto. |
| incorrect_number | O número do cartão inserido está incorreto. |
| incorrect_pin | O PIN digitado em um leitor de cartão está errado. |
| incorrect_zip | O código postal de cobrança não corresponde aos registros do banco. |
| insufficient_funds | O cartão não tem dinheiro ou crédito suficiente para este pagamento. |
| invalid_account | O cartão ou a conta vinculada a ele não é mais válido. |
| invalid_amount | O valor do pagamento é inválido ou acima do que o cartão permite. |
| invalid_cvc | O código de segurança do cartão (CVC) está incorreto. |
| invalid_expiry_month | O mês de validade do cartão é inválido. |
| invalid_expiry_year | O ano de validade do cartão é inválido. |
| invalid_number | O número do cartão está incorreto. |
| invalid_pin | O PIN digitado está incorreto. |
| issuer_not_available | O banco do cartão não pôde ser contatado, então o pagamento nunca foi autorizado. |
| lost_card | O cartão foi reportado como perdido. Não pode ser usado; o comprador precisa de outro cartão. |
| merchant_blacklist | O pagamento correspondeu a uma entrada na própria lista de bloqueio do Stripe da loja. |
| new_account_information_available | O cartão ou sua conta é inválido; o banco pode ter detalhes mais recentes para ele. |
| no_action_taken | O cartão foi recusado por um motivo que o banco não compartilhou. |
| not_permitted | O banco diz que este pagamento não é permitido neste cartão. |
| offline_pin_required | Somente presencialmente: o cartão precisa ser inserido e um PIN digitado. |
| online_or_offline_pin_required | Somente presencialmente: o cartão precisa de um PIN, por PIN Online ou chip e PIN. |
| pickup_card | O cartão não pode ser usado para este pagamento; ele pode ter sido reportado como perdido ou roubado. |
| pin_try_exceeded | Muitas tentativas de PIN incorretas; o cliente deve usar outro cartão ou método. |
| processing_error | Ocorreu um erro ao processar o cartão. Geralmente temporário. |
| reenter_transaction | O banco não conseguiu processar o pagamento por um motivo desconhecido; tente novamente. |
| restricted_card | O cartão não pode ser usado para este pagamento; pode ter sido reportado como perdido ou roubado. |
| revocation_of_all_authorizations | O banco recusou; tipicamente o titular do cartão parou todos os pagamentos futuros. |
| revocation_of_authorization | O banco recusou; tipicamente o titular do cartão revogou os pagamentos para esta loja. |
| security_violation | O banco recusou por um motivo que não compartilhou; frequentemente uma regra de segurança. |
| service_not_allowed | O cartão foi recusado por um motivo que o banco não informou. |
| stolen_card | O cartão foi denunciado como roubado. Ele não pode ser usado novamente. |
| stop_payment_order | O banco recusou; o nome do código aponta para uma ordem de suspensão de pagamento no cartão. |
| testmode_decline | Um número de cartão de teste da Stripe foi usado em um pagamento real. |
| transaction_not_allowed | O banco recusou; o cartão não permite este tipo de transação. |
| try_again_later | Código obsoleto: o banco recusou por um motivo desconhecido; tente novamente mais tarde. |
| withdrawal_count_limit_exceeded | O cliente excedeu o saldo ou limite de crédito disponível no cartão. |
| mobile_device_authentication_required | O pagamento precisa de autenticação; o cliente deve tocar o telefone novamente. |
| card_declined | Código de erro da Stripe para qualquer cartão recusado; o decline_code diz o porquê. |
| payment_intent_authentication_failure | O cartão falhou na verificação de autenticação do banco (como 3-D Secure). |
Quais códigos de recusa Stripe podem ser tentados novamente
A Stripe classifica muitas recusas como genéricas, então o motivo exato é frequentemente incerto. Como regra geral, códigos de fundos, limite e temporários podem ser resolvidos mais tarde; detalhes de cartão incorretos exigem que o comprador os insira novamente; cartões perdidos, roubados, fechados, restritos e expirados precisam de um cartão diferente.
A Stripe também retorna um código de conselho com algumas recusas: `do_not_try_again` significa não usar o cartão novamente para aquele pagamento, `try_again_later` significa que uma nova tentativa é permitida, e `confirm_card_data` significa que alguns detalhes do cartão estão incorretos. A Stripe recomenda no máximo oito novas tentativas para uma cobrança que permite novas tentativas.
No cronograma fixo padrão (novas tentativas com 1, 3, 5 e 7 dias de intervalo), as recusas nos dois últimos grupos também param na primeira falha: o cartão não é tentado novamente, a assinatura fica em atraso e o cliente recebe o e-mail de atualização de cartão ou confirmação de pagamento. Apenas os outros grupos são tentados novamente nesse cronograma.
| Grupo | Códigos de exemplo | O que acontece |
|---|---|---|
| Fundos insuficientes | insufficient_funds | Tentado novamente na provável data de pagamento do cliente, ou 2, 5, 8, 13 e 18 dias após a primeira recusa: até 6 tentativas (7 no PayPal, 2 em um cartão pré-pago) |
| Temporário | processing_error, issuer_not_available, try_again_later, card_velocity_exceeded, card_decline_rate_limit_exceeded | Tentado novamente 2, 5 e 8 dias após a primeira recusa: até 4 tentativas |
| Nenhum motivo fornecido | do_not_honor, generic_decline, call_issuer, approve_with_id, no_action_taken, duplicate_transaction | Uma nova tentativa 48 a 72 horas depois, então o cliente é solicitado a usar um novo cartão |
| Confirmação bancária necessária | authentication_required, authentication_not_handled, mobile_device_authentication_required | Nenhuma nova tentativa cega; o cliente é solicitado a confirmar o pagamento com seu banco |
| Cartão não pode ser usado | lost_card, stolen_card, expired_card, incorrect_number, incorrect_zip, restricted_card, pin_try_exceeded, do_not_try_again | Nunca tentado novamente; o cliente recebe um link de um clique para atualizar o cartão |
O que a PlatformDTC faz no checkout
O comprador vê a mensagem de recusa da Stripe, mais uma dica simples para os códigos comuns, como "Seu cartão tem fundos insuficientes. Tente outro cartão." e uma opção para tentar outro cartão imediatamente. Para `lost_card`, `stolen_card`, `pickup_card`, `fraudulent` e `merchant_blacklist`, a dica é sempre a genérica "Seu cartão foi recusado. Tente outro cartão ou entre em contato com seu banco.", para que o comprador nunca seja informado de que um cartão foi relatado como perdido ou roubado ou sinalizado.
Se a loja escolheu pagamentos com cartão PayPal como seu backup, uma recusa bancária sem motivo duradouro, como `do_not_honor` ou `processing_error`, pode ser tentada novamente através do PayPal, onde o comprador insere o cartão novamente. Recusas por fundos, 3-D Secure, detalhes incorretos, cartão inválido e fraude nunca são movidas para o backup.
Perguntas frequentes
- Onde encontro o código de recusa para um pagamento Stripe?
- No Painel Stripe, abra o pagamento falho: o motivo da recusa é mostrado com uma breve solução sugerida. Na API, é o `decline_code` no `last_payment_error` do `PaymentIntent`, e o `outcome` da cobrança também contém o motivo, um código de conselho e, quando a rede enviou um, o código de recusa bruto da rede.
- Qual é o código de recusa Stripe mais comum?
- A Stripe diz que os bancos de cartão categorizam a maioria das recusas como genéricas (`generic_decline`), o que deixa o motivo exato incerto. Se as informações do cartão estiverem corretas, a Stripe aconselha pedir ao cliente para entrar em contato com o banco do seu cartão para saber por que o pagamento foi recusado.
- Quantas vezes posso tentar novamente um pagamento Stripe recusado?
- A Stripe recomenda um máximo de oito novas tentativas para cobranças que permitem novas tentativas, e alerta que tentativas extras podem parecer fraude para os bancos de cartão. A Visa permite até 20 tentativas em 30 dias em recusas que podem ser tentadas novamente e nenhuma após uma recusa de Categoria 1, como um cartão perdido ou roubado.
- Devo informar ao comprador o motivo exato da recusa?
- Para a maioria dos códigos, sim: um motivo simples como um cartão expirado ou um código de segurança incorreto os ajuda a resolver. Para `fraudulent`, `lost_card`, `stolen_card` e `merchant_blacklist`, a Stripe diz para não fornecer detalhes e mostrar a recusa da mesma forma que `generic_decline`.