← Voltar para Notas de entregaTutoriais

2026 Stripe não envia e-mails de recibo no modo de teste? Como desenvolvedores podem validar

Este guia ajuda você a separar recibos do Stripe, eventos de pagamento e notificações enviadas pelo seu aplicativo. Siga o fluxo de validação, identifique o que cada evidência comprova e teste o recebimento sem usar dados reais de pagamento.

Cerca de 12 minutosGuia prático

Conclusão: no modo de teste do Stripe, determinados recibos e e-mails de fatura não são enviados conforme as regras do produto; a ausência deles, sozinha, não prova que sua integração falhou. Valide separadamente o evento de pagamento, a notificação gerada pelo seu aplicativo e o recebimento em uma caixa controlada. Essa distinção é essencial quando você testa uma cobrança e espera encontrar uma mensagem no e-mail.

Este guia é para você que integra pagamentos no próprio produto e precisa validar o que acontece depois de uma transação de teste.
É voltado a desenvolvedores independentes, profissionais de QA e equipes full stack que precisam separar pagamento aprovado de e-mail efetivamente recebido.

Antes de iniciar: defina qual mensagem você está testando

“E-mail de pagamento” pode significar mensagens diferentes. Antes de criar uma cobrança no Stripe, anote qual delas você espera validar:

  • Recibo do Stripe: mensagem gerada pelo Stripe segundo as configurações e regras aplicáveis ao tipo de cobrança.
  • Fatura do Stripe: documento e comunicação relacionados ao fluxo de faturamento. O comportamento depende do modo e da operação usada para enviá-la.
  • Notificação do seu aplicativo: mensagem que o seu sistema cria, por exemplo, para confirmar um pedido ou informar que o pagamento foi aprovado.

Essas mensagens não são intercambiáveis. Receber uma notificação criada pelo seu aplicativo não prova que o Stripe enviou um recibo. Da mesma forma, não receber um e-mail do Stripe não demonstra, por si só, que o webhook ou a lógica de pedidos falhou.

Registre o ambiente usado, o endereço de destino e o resultado esperado. Se o objetivo é testar o e-mail do seu produto, a pergunta principal não é “o Stripe enviou um recibo?”, mas “meu aplicativo processou o pagamento e enviou a notificação prevista?”. Se você não separar esses objetivos antes, pode investigar o componente errado e perder tempo ajustando um webhook que está funcionando.

Também registre o nome do fluxo que está sendo testado. Uma confirmação de pedido pode ser enviada pelo seu aplicativo, enquanto o recibo ou a fatura podem seguir regras próprias do Stripe. Se o caso de teste disser apenas “verificar e-mail”, duas pessoas da equipe podem testar mensagens diferentes e registrar resultados incompatíveis.

Depois da cobrança: confira a evidência do pagamento

Primeiro, confirme no ambiente de teste do Stripe que a transação corresponde ao cenário que você tentou executar. Consulte o objeto e o evento relacionados à cobrança, em vez de depender apenas da tela final do seu aplicativo.

No objeto Event, o campo livemode informa se o evento pertence ao modo real ou ao modo de teste. A documentação descreve esse campo como booleano; use o valor registrado para confirmar o ambiente da evidência, não para inferir se algum e-mail chegou à caixa de entrada. Veja a referência oficial do objeto Event e do campo livemode.

Depois, confira o tipo do evento e a resposta do seu endpoint de webhook. Por exemplo, payment_intent.succeeded é um tipo de evento documentado pelo Stripe. A presença desse evento ajuda a demonstrar que o fluxo de pagamento chegou ao estado indicado, mas ainda não prova que seu aplicativo concluiu o processamento do pedido ou enviou uma mensagem. Consulte a lista oficial de tipos de eventos do Stripe.

Também diferencie o evento criado pelo Stripe da entrega do webhook ao seu sistema. O registro do evento e a resposta do endpoint são evidências diferentes. Verifique o histórico de eventos e a tentativa de entrega antes de concluir onde ocorreu uma falha. A documentação de Events e da entrega de eventos explica o papel desses objetos no fluxo.

Mantenha uma trilha de auditoria para cada tentativa: identificador da cobrança, evento observado, modo indicado por livemode, resultado do endpoint e identificador do pedido no seu banco de dados. Evite copiar dados pessoais reais para essa anotação. Um identificador técnico costuma ser suficiente para localizar os registros relevantes.

Por que uma cobrança aprovada no modo de teste pode não gerar recibo?

Porque o modo de teste não reproduz necessariamente o envio de todas as mensagens do modo real. A documentação do Stripe especifica limites para determinados e-mails. Por exemplo, o campo receipt_email do objeto Charge está associado ao envio de recibo, mas a documentação informa que recibos não são enviados para cobranças nesse fluxo quando elas estão em modo de teste. Consulte a referência oficial do objeto Charge para confirmar o comportamento aplicável ao campo.

O envio de faturas também tem regra própria. A documentação da API para enviar uma fatura informa que a mensagem não é enviada no modo de teste. Isso não permite concluir que todo e-mail relacionado a qualquer produto do Stripe seja sempre suprimido: a regra depende do tipo de mensagem e da operação. Confira a documentação do endpoint de envio de faturas para o caso específico que você está implementando.

A documentação de testes do Stripe também descreve limitações de e-mail em contextos específicos, incluindo o de métodos de pagamento que não usam cartão. Consulte a seção de testes de pagamentos que não usam cartão e não generalize a instrução para tipos de mensagem que ela não cobre.

Na prática, classifique o resultado desta forma:

  • Se a evidência confirma um pagamento de teste, mas o recibo específico do Stripe não aparece, verifique primeiro se o envio é esperado nesse modo. A ausência pode ser comportamento previsto.
  • Se o evento foi criado, mas seu endpoint não o processou, investigue a configuração e a resposta do webhook. Isso é diferente de um problema de entrega de e-mail.
  • Se o seu aplicativo registrou uma solicitação de envio, mas não há mensagem na caixa de entrada, investigue a cadeia de envio da aplicação e o destino. Não use o recibo do Stripe como substituto dessa verificação.

invoice.sent confirma que a mensagem chegou?

Não. O nome do evento identifica uma etapa do fluxo de fatura, não uma confirmação de que o destinatário abriu ou recebeu a mensagem na caixa de entrada. O catálogo oficial descreve invoice.sent como um evento de fatura enviada ao cliente; essa informação não é a mesma evidência que uma confirmação de entrega do provedor de e-mail ou uma mensagem encontrada pelo destinatário. Consulte a definição de invoice.sent na lista de eventos.

Trate cada registro de acordo com o que ele realmente mostra: um evento informa que uma condição ocorreu no fluxo do Stripe; um registro do seu provedor de envio pode mostrar que o seu sistema fez uma solicitação; e a inspeção da caixa de entrada confirma que a mensagem de teste foi recebida naquele destino. Não transforme uma evidência em outra.

Ferramenta de decisão: marque o que já foi comprovado

Use esta lista durante a triagem. Marque cada item somente depois de conferir o registro correspondente. A decisão ao final indica qual etapa investigar em seguida, sem presumir que a ausência de um recibo significa falha no pagamento.

  • [ ] Ambiente confirmado: verifique se o evento pertence ao modo de teste ou ao modo real usando livemode. Se o ambiente não for o esperado, corrija a configuração ou repita o teste no ambiente correto.
  • [ ] Evento de pagamento localizado: confira o tipo e o identificador do evento. Se ele não existir, investigue a criação ou o estado do pagamento; se existir, prossiga para a entrega ao seu sistema.
  • [ ] Webhook processado: verifique a tentativa de entrega e a resposta do endpoint. Se o Stripe registrou o evento, mas o seu endpoint não o processou, investigue o webhook e os registros da aplicação.
  • [ ] Pedido atualizado: confirme no seu produto que o pedido associado ao evento recebeu o estado esperado. Se o pedido não mudou, investigue a lógica de negócio antes de testar o modelo do e-mail.
  • [ ] Envio da notificação registrado: procure a tentativa feita pelo seu aplicativo, com o destinatário e o resultado registrados. Se não há tentativa, investigue a fila, o manipulador ou a condição que deveria disparar a mensagem.
  • [ ] Mensagem encontrada no destino: abra a caixa controlada e verifique assunto, conteúdo e estado informado. Se o envio foi registrado, mas a mensagem não foi localizada, investigue o destino e os registros do serviço de e-mail.
  • [ ] Tipo de mensagem identificado: determine se você espera um recibo do Stripe, uma fatura do Stripe ou uma notificação própria. Se for uma mensagem do Stripe, consulte a regra específica daquele fluxo no modo de teste antes de classificar a ausência como defeito.

Decisão: se os itens de ambiente, evento e processamento estão confirmados, mas você espera um recibo do Stripe que não é enviado nesse fluxo de teste, registre a limitação como comportamento esperado. Se falta o evento ou o processamento, investigue o pagamento ou o webhook. Se falta apenas a notificação do seu produto, siga os registros da aplicação e do serviço de envio. Se a mensagem chegou, mas o pedido está incorreto, o teste ainda não passou: valide o estado de negócio, não apenas a caixa de entrada.

Essa lista também torna o relatório de QA reproduzível. Em vez de registrar apenas “e-mail não chegou”, anote qual mensagem era esperada e qual foi a última evidência encontrada. Assim, outra pessoa consegue continuar a investigação sem repetir testes que já foram comprovados.

Durante o processamento: siga a notificação do seu aplicativo

Para separar o recibo do Stripe da mensagem do seu produto, acompanhe a cadeia do webhook até a caixa de entrada. Faça a verificação em sequência:

  • Confirme o cenário de entrada. Registre qual pagamento de teste iniciou o fluxo e qual pedido ou conta de teste deve ser atualizado. Não reutilize um pedido de produção como massa de teste.
  • Localize o evento recebido. Confira o identificador e o tipo do evento, além do modo indicado no objeto. Compare essas informações com o registro do seu endpoint.
  • Verifique o resultado do processamento. Confirme se o manipulador do evento atualizou o estado do pedido e se tratou corretamente eventos repetidos. Um webhook recebido não garante que a transação de negócio terminou como esperado.
  • Inspecione o registro de envio do aplicativo. Procure o destinatário, o assunto, o identificador da mensagem e o resultado registrado pelo serviço de e-mail que seu produto utiliza. Uma solicitação aceita para processamento não equivale, por si só, a recebimento.
  • Leia a mensagem no endereço controlado. Confira se o assunto, o conteúdo e o estado do pagamento correspondem ao pedido de teste. Verifique também se o conteúdo evita expor dados pessoais desnecessários.
  • Volte ao produto e confirme o estado final. Compare a mensagem com a tela ou o registro do pedido. A mensagem correta, sozinha, não prova que o estado interno do pedido também está correto.

Se o problema aparece antes do registro de envio, investigue o processamento do evento e as regras de negócio. Se aparece depois do registro, siga os registros do serviço de envio e confira o endereço de destino. Se a mensagem chegou, mas apresenta dados incorretos, valide a associação entre o evento, o pedido e o modelo de e-mail. Essa divisão reduz o risco de atribuir ao Stripe um erro produzido pelo seu próprio aplicativo.

Você também pode consultar o laboratório de entrega de e-mails para organizar a análise de envio e recebimento. Use-o como apoio ao diagnóstico, sem confundir o teste de uma mensagem própria com o comportamento de um recibo que o Stripe não enviou no modo de teste.

Na caixa de entrada: valide o conteúdo sem expor dados reais

Escolha um endereço de teste que você controle e que não esteja associado a uma conta pessoal ou a um cliente real. Um endereço descartável pode ser adequado para receber uma notificação temporária do seu aplicativo, desde que você confirme que ele atende ao teste e que a mensagem não será necessária para recuperar uma conta importante depois.

Compare os elementos que afetam a validação:

  • Destinatário: corresponde ao endereço usado no cenário?
  • Assunto e conteúdo: identificam corretamente o pedido de teste?
  • Estado informado: a mensagem reflete o resultado registrado pelo aplicativo?
  • Dados exibidos: há informações pessoais ou credenciais desnecessárias?
  • Evidência de recebimento: você verificou a mensagem no destino, em vez de presumir entrega pelo log de envio?

Para testar modelos, inclua apenas dados sintéticos que permitam reconhecer o cenário. Não use nome, telefone, endereço ou dados de pagamento de uma pessoa real para preencher o corpo da mensagem. Se o seu fluxo precisar mostrar dados sensíveis, use valores controlados e confirme que o ambiente e as permissões são apropriados. As orientações de limites e exposição de dados podem ajudar você a revisar o que deve ou não entrar no teste.

Não use um endereço descartável para uma conta bancária, de pagamento, governamental ou qualquer conta que exija recuperação duradoura. Para esses casos, prefira um endereço institucional ou um alias que sua equipe controle de forma permanente. A caixa de teste serve para validar uma mensagem e um fluxo temporário; não substitui um endereço confiável para comunicações futuras.

No encerramento: separe sandbox, entrega real e aprovação

Antes de encerrar a tarefa, escreva as conclusões por etapa. Por exemplo: “o pagamento de teste gerou o evento esperado”; “o aplicativo processou o evento e registrou uma solicitação de notificação”; “a mensagem do aplicativo foi localizada no endereço controlado”. Essas afirmações delimitam o que você observou. Não acrescente “o recibo do Stripe foi entregue” se não houve envio e recebimento comprovados.

O sandbox permite validar partes importantes da integração, mas não autoriza inferir o comportamento de entrega de uma caixa de entrada real. Da mesma forma, o recebimento de uma notificação própria não comprova que todas as mensagens do Stripe funcionam nesse modo. Se a validação de produção for necessária, siga o procedimento aprovado pela equipe e não faça cobranças reais sem autorização. A documentação do Stripe sobre testes e métodos de pagamento explica o uso de dados de teste e os limites de cada cenário.

Ao revisar resultados, use três rótulos distintos:

  • Pagamento e evento: o Stripe registrou o estado esperado no ambiente indicado.
  • Notificação do aplicativo: seu sistema processou o evento, criou a mensagem e registrou o envio.
  • Recebimento: você encontrou e verificou a mensagem no destino de teste.

Se um dos rótulos estiver pendente, não declare o fluxo inteiro aprovado. Essa regra evita que uma transação bem-sucedida esconda uma notificação quebrada ou que um e-mail recebido mascare um pedido com estado incorreto.

Para validar a notificação do seu próprio produto, o MsgMask pode ser uma opção de endereço temporário: você evita expor seu e-mail principal e reduz o risco de misturar mensagens de teste com comunicações de trabalho. Antes de usar, confira no MsgMask as funções atualmente disponíveis e confirme que o endereço atende ao seu cenário. Ele pode ajudar a verificar uma mensagem enviada pelo seu aplicativo; não faz o Stripe enviar recibos que as regras do modo de teste não enviam.

Crie agora uma caixa de entrada de curto prazo

Copie o endereço, acompanhe a contagem regressiva e espere no ritmo indicado neste artigo. Se a tarefa exigir recuperação de longo prazo, use um alias de encaminhamento.

Abrir email temporário