Como ganhar chargebacks no Stripe
Como funcionam as disputas do Stripe nas subscrições: estados, categorias de motivos, campos de provas, prazos, taxas, early fraud warnings e Smart Disputes.
Um chargeback num pagamento de subscrição custa-lhe o pagamento, uma taxa e parte da sua reputação junto das redes de cartões. Tem uma única oportunidade de responder, normalmente em poucas semanas, e o banco decide apenas com base no que envia. Este guia explica como funciona o processo de disputa no Stripe e como construir um dossiê de provas adequado a um negócio de subscrição.
Baseia-se apenas na documentação do próprio Stripe: how disputes work, respond to disputes, categorias de reason codes de disputas, reason codes de disputas, boas práticas para as provas, o objeto Dispute, as Smart Disputes e a FAQ das taxas de disputa (todos consultados em novembro de 2026). Quando as páginas do Stripe deixam uma lacuna, dizemo-lo.
O ciclo de vida de uma disputa
Uma disputa começa quando o titular do cartão contacta o seu banco. O Stripe cria então um objeto Dispute na cobrança e envia o webhook charge.dispute.created. A partir daí, o objeto Dispute passa por um pequeno conjunto de estados:
| Estado | O que significa |
|---|---|
warning_needs_response |
Um pedido de informação (ainda não um chargeback) que precisa de resposta |
warning_under_review |
Um pedido de informação em análise depois de ter submetido provas |
warning_closed |
Um pedido de informação encerrado sem se tornar uma disputa formal |
needs_response |
Um chargeback que precisa de resposta |
under_review |
Um chargeback em análise depois de ter submetido provas |
won / lost |
Resolvido a seu favor / a favor do cliente |
prevented |
Uma disputa que foi impedida de se tornar um chargeback formal |
Os pedidos de informação contam porque, segundo o Stripe, nenhum fundo é retirado a menos que o pedido evolua para uma disputa. Se perder um pedido de informação, ele evolui: o estado muda com um evento charge.dispute.updated e os fundos são retirados com charge.dispute.funds_withdrawn. Quando o caso termina, dispara charge.dispute.closed com won, lost ou warning_closed.
Quanto aos prazos, a página how disputes work do Stripe diz que normalmente tem 7 a 21 dias para responder depois da criação de um chargeback, consoante a rede de cartões, e que o emissor leva tipicamente 60 a 75 dias a decidir depois de submeter. Todo o processo pode levar dois a três meses. O prazo exato de cada caso está no objeto Dispute e no Dashboard; trabalhe sempre a partir dessa data, não de uma regra geral.
Taxas
O Stripe cobra uma taxa de disputa quando uma disputa é aberta, e uma taxa de contestação separada se a contestar. Segundo a FAQ das taxas de disputa e a página de preços do Stripe nos EUA, nos EUA ambas são de $15,00; a taxa de contestação é devolvida se ganhar, e a taxa de disputa não é devolvida salvo indicação em contrário no seu contrato. Os montantes diferem por país, por isso consulte a página de preços do seu. Aceitar uma disputa não evita a taxa de disputa.
Nas disputas de conformidade Visa e Mastercard, o Stripe cobra uma taxa de rede adicional de 500 USD (ou o equivalente local) se contestar, reembolsada se ganhar.
Categorias de motivos
Cada rede tem os seus próprios reason codes. O Stripe associa-os a um valor reason na disputa, que é a primeira coisa a ler porque decide que provas o banco vai analisar. A página de categorias enumera-os; os três que surgem mais nas subscrições são:
fraudulent: o titular do cartão diz que não autorizou o pagamento (por exemplo Visa 10.4, Mastercard 4837).subscription_canceled: o titular do cartão diz que foi cobrado depois de cancelar (Visa 13.2, Mastercard 4841, Amex C28).product_not_received: o titular do cartão diz que não recebeu aquilo por que pagou (Visa 13.1, Mastercard 4855).
Existem outros valores, como duplicate, credit_not_processed, product_unacceptable e general. Use a página de reason codes para ver o que a rede espera em cada um.
O que o Stripe aceita como prova
Submete as provas pelo Dashboard ou atualizando a disputa através da API. O hash evidence tem campos de ficheiro e campos de texto. Alguns que contam para as subscrições, com as descrições do Stripe parafraseadas do objeto Dispute:
| Campo | Tipo | Para que o usar |
|---|---|---|
cancellation_policy |
Ficheiro | A sua política de cancelamento tal como foi mostrada ao cliente |
access_activity_log |
Texto, máx. 20.000 caracteres | Registos que provam que o cliente usou o produto: endereços IP, timestamps, atividade |
customer_communication |
Ficheiro | Emails ou mensagens trocados com o cliente |
uncategorized_text / uncategorized_file |
Texto / ficheiro | Tudo o que for relevante e não caiba noutro campo |
As restrições que o Stripe documenta em respond to disputes e nas boas práticas:
- Uma única submissão. Só pode submeter uma vez. Depois disso não pode editar a resposta nem acrescentar provas.
- Prepare primeiro. Atualizar a disputa com
submit=falseprepara as provas sem as enviar. Um pedido posterior comsubmit=true(o valor por defeito) envia-as ao banco. - Um ficheiro por tipo de prova. Junte vários documentos do mesmo tipo num único ficheiro de várias páginas.
- Limites de tamanho. Os ficheiros estão limitados a 4,5 MB no total, e as provas Mastercard a 19 páginas no total. Todos os campos de texto juntos estão limitados a 150.000 caracteres. Se o dossiê compilado for demasiado longo, a API devolve
dispute_evidence_page_limit_exceeded. - Sem links. O Stripe indica que os bancos não analisam conteúdos externos, por isso não conte com URLs nem com “ligue-nos”.
Provas que funcionam para as subscrições
A página de reason codes do Stripe dá a orientação para cada categoria. Traduzida para um negócio de subscrição:
Subscrição cancelada
O banco quer saber se o cliente cancelou mesmo antes da cobrança, e se aceitou os termos.
- Mostre a prova de que o cliente aceitou os termos da subscrição, incluindo como e quando podia cancelar. Carregue a secção relevante da política como
cancellation_policy, não os seus termos completos; o Stripe sugere destacar a parte que se aplica. - Apresente o registo do cancelamento com timestamps exatos. Se o cliente nunca cancelou, ou cancelou depois da cobrança, diga-o com o registo do sistema.
- Se usou o produto depois da data em que alega ter cancelado, inclua a utilização com timestamps e IPs em
access_activity_log. - Se reembolsou alguma coisa, inclua o registo do reembolso.
Fraude
O titular do cartão diz que nunca autorizou o pagamento. Numa subscrição, a resposta mais forte é mostrar que o mesmo cliente paga e usa a conta há algum tempo.
- Mostre o histórico: pagamentos anteriores não disputados com o mesmo cartão, data de criação da conta, o email registado.
- Mostre a utilização da conta: logins, endereços IP, dispositivos, atividade em torno da data de faturação.
- Inclua qualquer comunicação desse cliente que mostre que conhece o serviço.
Produto não recebido
Para serviços digitais, o Stripe aponta para registos de login, registos de downloads e timestamps de utilização, além dos seus termos. Mostre que a conta foi disponibilizada e usada durante o período cobrado.
Escreva uma nota de apresentação curta
Seja qual for o motivo, ponha um resumo simples em uncategorized_text: quem é o cliente, o que comprou, o que aconteceu e que documento anexo prova cada ponto. Quem analisa lê muitos casos; torne o seu fácil de seguir.
Early fraud warnings
Os emissores Visa, Mastercard e JCB podem enviar early fraud warnings (EFW) para pagamentos que suspeitam ser fraudulentos, muitas vezes antes de qualquer disputa. O Stripe expõe-nos como objetos Early Fraud Warning e através do webhook radar.early_fraud_warning.created. O campo actionable do objeto só é true enquanto a cobrança não tiver disputa e não tiver sido totalmente reembolsada.
A orientação do Stripe é não reembolsar todos os avisos. A sua documentação diz que um reembolso não remove o próprio aviso e só evita o relatório de fraude quando é processado como uma reversão, o que normalmente acontece até cerca de duas horas após a captura. O Stripe sugere que reembolsar faz mais sentido para cobranças aproximadamente iguais ou inferiores à sua taxa de disputa, e dá um exemplo de Workflows que reembolsa abaixo desse montante e alerta uma pessoa acima dele. Numa subscrição, considere também cancelar a subscrição nesse cartão para que a próxima renovação não crie uma segunda disputa.
Smart Disputes
O Stripe oferece as Smart Disputes, que montam um dossiê de provas a partir dos dados que o Stripe já tem e, se não fizer nada, o submetem pouco antes do prazo. Pode desativar a submissão automática no Dashboard. A documentação do Stripe diz que a taxa das Smart Disputes só é cobrada quando a disputa é ganha; consulte os termos atuais nessa página, já que o Stripe apresenta o produto como uma preview. As Smart Disputes só podem usar os dados que o Stripe detém, por isso as provas que estão nos seus próprios sistemas (logins, utilização, conversas de suporte) continuam a ter de vir de si.
Uma checklist de resposta
- Subscreva
charge.dispute.created,charge.dispute.updated,charge.dispute.closederadar.early_fraud_warning.created. - Em cada disputa, leia primeiro
reasone o prazo de resposta. - Decida depressa se aceita. Se o cliente cancelou de facto e foi cobrado na mesma, aceitar e corrigir a causa pode ser a resposta honesta.
- Reúna as provas para esse motivo: termos aceites, registo do cancelamento, registos de utilização, comunicações.
- Prepare as provas com
submit=false, verifique os limites, peça a alguém que as reveja e depois submeta uma única vez. - Registe o resultado e o motivo, para poder corrigir os padrões que causam disputas (descritor de faturação pouco claro, botão de cancelamento difícil de encontrar, lembretes de renovação em falta).
Fazer isto com o NoChurn
O NoChurn lê as disputas do Stripe e reúne automaticamente as provas de cada uma: as respostas do cliente no fluxo de cancelamento, os emails que o NoChurn enviou, os dados de utilização que envia pela API e as conversas de um helpdesk ligado (só de leitura). Redige a resposta com IA, e nada é enviado ao Stripe antes de uma pessoa da sua equipa a rever. É o Stripe que continua a decidir as taxas, os prazos e o resultado com o banco, e o NoChurn não os pode alterar. O NoChurn é grátis abaixo de $300 de MRR, com todas as funcionalidades em todos os planos (o seu próprio domínio de email desde $9). Veja NoChurn + Stripe.