Atualizado em 19/06/2026
O checkout é o ponto mais crítico de qualquer loja WooCommerce: é onde a venda acontece — ou se perde. Erros nessa etapa são especialmente perigosos porque costumam ser silenciosos. A loja parece normal, os produtos aparecem, mas o cliente não consegue pagar e simplesmente desiste. Entender os sintomas e seguir uma ordem lógica de verificação é o caminho para resolver sem mexer no escuro.
Antes de tudo: não saia atualizando ou desativando plugins na loja em produção no susto — você pode derrubar o checkout por completo. Anote a mensagem de erro exata, o meio de pagamento afetado e o que mudou por último (atualização, plugin novo, troca de tema). Sempre que possível, teste em um ambiente de homologação.
Como o problema costuma aparecer
- O botão "Finalizar compra" não responde ao clique ou fica girando sem concluir.
- O pagamento é recusado ou retorna um erro genérico, mesmo com os dados corretos.
- O redirecionamento para o gateway (Mercado Pago, PagSeguro/PagBank) falha ou volta com erro.
- O pedido fica preso em "pendente" ou "falhou", mesmo depois de o cliente ter pago.
- O cálculo de frete não aparece ou trava o avanço para o pagamento.
- Os e-mails de confirmação de pedido não chegam para o cliente nem para você.
- Mensagens como "Houve um problema ao processar o pagamento" sem mais explicações.
As causas mais comuns
- Gateway de pagamento mal configurado: credenciais/chaves erradas, conta não verificada ou opções incorretas no Mercado Pago, PagSeguro/PagBank, PIX, boleto ou cartão.
- Modo sandbox/teste ligado em produção: erro clássico — o gateway aceita "pagamentos de teste", mas recusa cobranças reais.
- Webhook / IPN não configurado: a confirmação automática do pagamento não chega à loja, então o pedido nunca sai de "pendente".
- Conflito de plugin ou do tema: um plugin ou tema mal codificado quebra o JavaScript do checkout e impede a finalização.
- Erro de JavaScript/AJAX no checkout: o avanço entre etapas depende de scripts; se um deles falha, o botão de finalizar parece "morto".
- Problema de SSL/HTTPS: certificado vencido ou conteúdo misto faz o gateway recusar a transação e o navegador alertar o cliente.
- Cache na página de carrinho/checkout: essas páginas são dinâmicas e não podem ser cacheadas; quando são, surgem erros intermitentes e dados desatualizados.
- Moeda divergente: a moeda da loja e a configurada no gateway não batem, levando à recusa do pagamento.
O que verificar (passo a passo)
- Teste com tema padrão e só os plugins essenciais. Ative um tema padrão do WordPress e desative os plugins não essenciais. Se o checkout voltar a funcionar, reative um a um para achar o conflito.
- Leia os logs em WooCommerce > Status > Logs. É onde o gateway registra a resposta real da transação. Quase sempre a causa exata está ali.
- Confira o modo do gateway: teste ou produção. Garanta que está em produção e que as credenciais correspondem a esse modo (não às de sandbox).
- Verifique o webhook/IPN. Confirme se a URL de notificação está correta no painel do gateway, para que os pedidos pagos saiam de "pendente" automaticamente.
- Confira o SSL. Certifique-se de que o certificado é válido e que toda a loja roda em HTTPS, sem conteúdo misto.
- Desative o cache no carrinho e no checkout. Garanta que essas páginas estejam excluídas de qualquer plugin ou camada de cache do servidor.
- Confira a moeda. A moeda da loja deve ser a mesma aceita pela sua conta no gateway de pagamento.
- Faça um pedido de teste real. Simule uma compra de ponta a ponta para confirmar que tudo — frete, pagamento, status e e-mail — funciona.
Ative o log para enxergar o erro real
A maioria dos erros de checkout deixa rastro. Antes de mexer em qualquer coisa, vale ligar a depuração para que o WordPress grave os erros em arquivo, em vez de só esconder a tela. No wp-config.php, acima da linha /* That's all, stop editing! */, deixe assim:
<?php
// Liga a depuracao e grava os erros em wp-content/debug.log
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // cria wp-content/debug.log
define( 'WP_DEBUG_DISPLAY', false ); // nao mostra os erros na tela do cliente
@ini_set( 'display_errors', 0 );
Com isso, reproduza o erro fazendo um pedido de teste e depois leia o arquivo wp-content/debug.log. Em paralelo, o registro específico do meio de pagamento fica em WooCommerce > Status > Logs — ali cada gateway grava a resposta real da transação (recusa, token inválido, webhook não recebido). Importante: desligue o WP_DEBUG depois de diagnosticar, para não deixar a loja escrevendo log à toa nem expor mensagens.
Sintoma, causa provável e onde checar
Use esta tabela como um mapa rápido: localize o sintoma que sua loja apresenta e vá direto ao lugar mais provável de encontrar a causa.
| Sintoma | Causa provável | Onde checar |
|---|---|---|
| Botão "Finalizar compra" não responde | Erro de JavaScript por conflito de plugin/tema ou cache no checkout | Console do navegador (F12); teste com tema padrão |
| Pagamento recusado mesmo com cartão válido | Gateway em modo teste, credenciais erradas ou moeda divergente | WooCommerce > Status > Logs; painel do gateway |
| Pedido preso em "pendente" após pagar | Webhook/IPN não chega à loja | URL de notificação no painel do gateway; logs |
| Frete não calcula ou trava o avanço | Zona de entrega ou credenciais de frete incorretas | WooCommerce > Configurações > Entrega |
| Navegador alerta "site inseguro" no checkout | SSL vencido ou conteúdo misto (HTTP dentro do HTTPS) | Cadeado do navegador; certificado na hospedagem |
| E-mails de pedido não chegam | Envio de e-mail do servidor falhando | Configurar SMTP autenticado; testar envio |
| Erro intermitente e checkout lento | Cache indevido ou servidor sobrecarregado | Exclusões de cache; ver WooCommerce lento |
Como eu diagnostico e resolvo
Com os acessos em mãos, o trabalho é metódico e seguro, para não interromper as vendas:
- Faço backup de arquivos e banco antes de qualquer alteração de risco e, quando possível, trabalho em um ambiente de homologação.
- Ativo a depuração (
WP_DEBUG) e leio os logs do WooCommerce e do servidor para encontrar a resposta real do gateway. - Isolo conflitos com tema padrão e desativação seletiva de plugins, identificando o componente que quebra o checkout.
- Reviso a configuração do gateway (modo produção, credenciais, webhook/IPN, moeda) com Mercado Pago, PagSeguro/PagBank, PIX, boleto e cartão.
- Corrijo SSL/HTTPS, ajusto as exclusões de cache de carrinho e checkout e reviso o envio de e-mails de pedido.
- Por fim, faço um pedido de teste completo e oriento como evitar a reincidência — frequentemente com um plano de manutenção.
Dica que evita a maioria dos sustos: nunca atualize WooCommerce, tema ou plugins direto na loja em produção. Tenha backups automáticos e um ambiente de testes para validar cada atualização antes — é exatamente o que entrego nos planos de manutenção.
Boa parte dos erros de pagamento e frete começa na configuração das integrações brasileiras. Se a dúvida é como ligar Mercado Pago, PIX, boleto, Correios ou Melhor Envio do jeito certo, veja o guia de frete e pagamento no Brasil. E se o checkout funciona mas arrasta de tão lento, o problema pode estar na performance da loja.
Se o problema não for só do checkout, mas a loja inteira estiver fora do ar ou instável, ou se ela estiver lenta ao ponto de causar abandono de carrinho, esses temas também têm solução. Comece sempre pelo diagnóstico geral da loja.
Perguntas frequentes
O botão "Finalizar compra" não faz nada quando o cliente clica. O que é?
Quase sempre é um erro de JavaScript no checkout, causado por conflito de plugin ou do tema, ou por um cache indevido na página de finalização. Abra o console do navegador (F12) para ver o erro e teste com um tema padrão e apenas os plugins essenciais para isolar o culpado.
Por que o pagamento é recusado mesmo com tudo certo no cartão?
Os motivos mais comuns são: o gateway (Mercado Pago, PagSeguro/PagBank etc.) ainda está em modo sandbox/teste em vez de produção, credenciais/chaves incorretas, certificado SSL com problema ou o webhook/IPN não configurado. O log em WooCommerce > Status > Logs costuma apontar a causa exata.
Os pedidos ficam presos em "pendente" ou "aguardando pagamento". É normal?
Não. Geralmente significa que a confirmação automática do pagamento (webhook/IPN) não está chegando do gateway até a sua loja. Sem esse aviso, o WooCommerce não muda o status do pedido para "processando", mesmo que o cliente tenha pago. É preciso revisar a URL de notificação e o modo de operação do gateway.
Preciso mesmo de SSL (HTTPS) para receber pagamentos?
Sim. Sem um certificado SSL válido, o checkout fica inseguro, os navegadores alertam o cliente e muitos gateways simplesmente recusam a transação. SSL deixou de ser opcional em qualquer loja que processa pagamentos.
Os e-mails de pedido não chegam para o cliente nem para mim.
É um problema separado do pagamento, mas muito comum. Costuma ser falha no envio de e-mail do servidor. A solução padrão é configurar um envio autenticado por SMTP, o que melhora bastante a entrega das confirmações de pedido na caixa de entrada.
Quanto tempo para resolver um erro de checkout?
Boa parte dos casos é resolvida em poucas horas após o diagnóstico, porque os logs do WooCommerce e o teste com tema padrão apontam a causa rapidamente. Me chame no WhatsApp (43) 99932-9697 com os detalhes e eu avalio a urgência.
O checkout funciona, mas fica lento e às vezes dá erro intermitente. O que pode ser?
Erro intermitente no checkout costuma ser cache indevido na página de finalização ou sobrecarga do servidor em horários de pico. Quando a loja inteira está pesada, o checkout sofre junto. Vale revisar as exclusões de cache e, em paralelo, investigar a lentidão geral — veja WooCommerce lento para entender as causas e soluções.
Onde ativo o log para descobrir o erro do meu gateway de pagamento?
Há dois lugares. Primeiro, em WooCommerce > Status > Logs, onde cada gateway registra a resposta real da transação. Segundo, ativando o WP_DEBUG_LOG no wp-config.php, que grava os erros de PHP em wp-content/debug.log. Os dois juntos costumam apontar a causa exata sem chute.