Se você tem um SaaS brasileiro e quer cobrar clientes no Brasil e no exterior, Stripe é provavelmente a melhor opção em 2026. Mas a integração tem pegadinhas que a documentação oficial não cobre. Neste guia, vou te mostrar tudo que aprendi implementando Stripe em mais de 10 projetos.
Stripe Brasil vs Stripe Internacional: qual usar?
Essa é a primeira decisão e a mais importante. Existem duas opções:
Stripe Brasil (atlas.stripe.com): aceita PIX, boleto e cartão. Recebe em BRL na sua conta bancária brasileira. Exige CNPJ. Taxa: 3.4% + R$ 0.60 por transação com cartão, 1% pra PIX (mínimo R$ 1.50).
Stripe Internacional (stripe.com): aceita só cartão e métodos internacionais. Recebe em USD/EUR na conta internacional. Funciona com pessoa física em alguns países. Taxa: 2.9% + $0.30 USD.
Minha recomendação: se seus clientes são brasileiros, use Stripe Brasil. Se são internacionais, Stripe Internacional. Se são os dois, pode usar os dois na mesma aplicação com a feature "Cross-border payouts" ou simplesmente ter duas contas Stripe separadas.
Pré-requisitos pra Stripe Brasil
Antes de codar qualquer coisa, você precisa:
CNPJ ativo: MEI funciona. LTDA funciona. EI funciona. Qualquer formato, desde que esteja ativo na Receita Federal.
Conta bancária PJ: precisa ser no nome do CNPJ. Bancos digitais (Inter, Cora, C6 Business) funcionam perfeitamente.
Documentos: RG/CNH do responsável, comprovante de endereço, contrato social ou certificado MEI.
O processo de aprovação leva 1-3 dias úteis. Stripe vai pedir informações sobre seu negócio — seja honesto sobre o que você vende e o volume esperado.
Arquitetura de pagamentos: o que implementar
Uma integração Stripe completa pra SaaS tem 4 componentes:
1. Checkout (onde o cliente paga)
Duas opções: Stripe Checkout (hosted) ou checkout customizado (embedded).
Stripe Checkout hosted é mais rápido de implementar. O cliente é redirecionado pra uma página do Stripe, preenche os dados, e volta pro seu site. Vantagem: Stripe cuida de tudo (PCI compliance, validação de cartão, 3D Secure). Desvantagem: menos controle visual.
Checkout customizado usa Stripe Elements pra renderizar os campos de pagamento dentro do seu site. Mais trabalho, mais controle. Recomendo pra v2, não pro MVP.
Pra MVP, sempre uso Stripe Checkout hosted. Implementação em 1-2 horas, funciona perfeitamente, e converte bem.
2. Assinaturas (billing recorrente)
Stripe gerencia todo o ciclo de vida da assinatura: criação, cobrança recorrente, upgrade, downgrade, cancelamento, pausa, reativação.
O que você precisa definir no Stripe Dashboard:
Produtos: o que você vende (ex: "Plano Pro", "Plano Business").
Preços: quanto custa cada produto (ex: R$ 97/mês, R$ 970/ano). Pode ter múltiplos preços pro mesmo produto (mensal + anual com desconto).
O código no backend cria a assinatura vinculando o cliente ao preço. Stripe cobra automaticamente todo mês.
3. Webhooks (eventos do Stripe pro seu backend)
Essa é a parte mais crítica e onde mais gente erra. Webhooks são notificações que o Stripe envia pro seu servidor quando algo acontece: pagamento confirmado, assinatura cancelada, cobrança falhou, etc.
Eventos essenciais que você precisa processar:
checkout.session.completed — o cliente pagou. Ative a conta/plano dele.
invoice.payment_succeeded — cobrança recorrente deu certo. Mantenha o acesso.
invoice.payment_failed — cobrança falhou. Notifique o cliente, dê um prazo de graça.
customer.subscription.deleted — assinatura cancelada. Remova o acesso.
customer.subscription.updated — mudou de plano. Atualize os limites.
Regras de ouro pra webhooks:
Sempre valide a assinatura do webhook. Nunca confie em um POST aleatório que chega no seu endpoint.
Seja idempotente. O Stripe pode enviar o mesmo evento mais de uma vez. Seu código precisa lidar com isso sem duplicar ações.
Responda rápido (< 5 segundos). Processe o evento de forma assíncrona se precisar. Retorne 200 imediatamente e processe em background.
Tenha um dead letter queue. Se o processamento falhar, o evento não pode ser perdido. Salve no banco e reprocesse depois.
4. Portal do Cliente (self-service)
Stripe Customer Portal é uma página hosted onde o cliente pode: atualizar cartão de crédito, mudar de plano, cancelar assinatura, ver histórico de faturas, baixar notas fiscais.
Implementação: literalmente 5 linhas de código. Cria uma session do portal e redireciona o cliente. Stripe cuida de todo o resto.
Não subestime isso. Um SaaS sem portal do cliente gera suporte manual pra cada mudança de cartão ou cancelamento. Portal resolve 80% dos tickets de billing.
PIX no Stripe Brasil
PIX no Stripe funciona, mas tem particularidades:
É um método de pagamento único (one-time). Não dá pra fazer assinatura recorrente com PIX direto — o cliente precisa pagar manualmente cada mês.
O fluxo: o cliente escolhe PIX no checkout, Stripe gera um QR code, o cliente paga, Stripe confirma em segundos via webhook.
Prazo de expiração: o QR code tem prazo (padrão 24h). Configure de acordo com seu fluxo.
Pra assinaturas: o que funciono bem é cobrar via boleto/cartão recorrente e oferecer PIX como opção de pagamento manual. Quando o cliente paga via PIX, você registra o pagamento manualmente ou via webhook.
Boleto no Stripe Brasil
Boleto também funciona via Stripe Brasil:
Prazo de vencimento: configure 3-7 dias úteis.
Compensação: 1-2 dias úteis após o pagamento.
Taxa: 3.4% + R$ 0.60 (mesma do cartão).
O fluxo é similar ao PIX: Stripe gera o boleto, cliente paga, webhook notifica seu backend.
Impostos e nota fiscal
Stripe não emite nota fiscal. Isso é responsabilidade sua. Opções:
NFe.io ou eNotas: serviços que integram com Stripe via webhook e emitem NF-e automaticamente quando um pagamento é confirmado.
Contador: pra volume baixo (< 50 transações/mês), seu contador pode emitir manualmente.
Como MEI, você emite Nota Fiscal de Serviço (NFS-e) pelo portal da prefeitura. O ISS varia por cidade (2-5%).
Pra vendas internacionais, a tributação depende do regime da sua empresa. Consulte seu contador — sério, não tente resolver isso sozinho.
Checklist de implementação
Aqui está a ordem que sigo em todo projeto:
- Criar conta Stripe Brasil e completar verificação
- Criar produtos e preços no Dashboard
- Implementar Stripe Checkout (hosted)
- Implementar webhook endpoint com validação de assinatura
- Processar eventos essenciais (payment_succeeded, subscription_deleted)
- Implementar Customer Portal
- Testar em modo teste com cartões de teste do Stripe
- Configurar alertas no Stripe Dashboard (falhas, disputas)
- Ativar modo live e fazer primeira transação real
- Configurar emissão de nota fiscal automatizada
Erros comuns que já vi
Não processar invoice.payment_failed: o cartão do cliente expira, a cobrança falha, e ninguém percebe. O cliente continua usando o serviço de graça. Processe esse evento e implemente uma lógica de "grace period" (3-7 dias) com notificação.
Não testar com cartões de teste: Stripe tem cartões de teste pra simular cenários (pagamento recusado, 3D Secure, erro genérico). Use todos antes de ir pra produção.
Hardcodar preço no frontend: se o preço muda no Stripe, o frontend mostra o valor antigo. Sempre busque o preço atual via API.
Confiar só no client-side: nunca valide pagamento só no frontend. O webhook é a fonte de verdade. Se o webhook não confirmou, o pagamento não aconteceu.
Se você precisa implementar Stripe no seu SaaS e quer fazer certo desde o início, fale comigo. Integração completa (checkout + assinaturas + webhooks + portal) em 2-3 semanas. Agende em andersdev.com.br.