Skip to main content
Sandbox é um ambiente de teste completo: os mesmos endpoints, os mesmos objetos e os mesmos webhooks da produção — só que sem dinheiro real. Dados criados com uma chave ch_test_... ficam separados de produção e retornam livemode: false. Duas coisas tornam o sandbox o caminho mais seguro para validar a integração: isolamento financeiro, porque nenhuma transação movimenta dinheiro real, e resultados determinísticos, porque e-mails de teste controlam sucesso, expiração ou permanência em pending para PIX e boleto.
O sandbox funciona de ponta a ponta antes mesmo da ativação da organização. Enquanto o cadastro está em análise, você já cria payment links, checkout sessions e payment intents de teste, paga com os dados de teste e recebe os webhooks — a integração inteira pode ficar pronta em paralelo. A ativação só é exigida para receber pagamentos reais no ambiente live.

As peças e o papel de cada uma

Ative o sandbox no dashboard

1

Abra o menu da sua conta

Por que essa etapa existe: o ambiente não fica numa página separada de configurações — ele vive dentro do menu do seu usuário, sempre visível.No rodapé da barra lateral do dashboard, clique no seu avatar (nome e e-mail) para abrir Minha conta.
2

Clique em Alternar para Sandbox

Por que essa etapa existe: é a ação que troca o ambiente — sem precisar criar uma chave nova nem fazer login de novo.
Menu Minha conta aberto com o item Alternar para Sandbox destacado

O item 'Alternar para Sandbox' fica dentro do menu Minha conta, no rodapé da barra lateral.

O mesmo toggle troca o ambiente do dashboard inteiro: pagamentos, produtos, clientes, tudo passa a mostrar dados de teste (livemode: false) até você sair. O item vira Sair do sandbox para reverter quando quiser — a troca é sempre livre, inclusive antes da ativação. Contas que ainda não ativaram já começam no sandbox por padrão.
3

Confirme pelo banner amarelo

Por que essa etapa existe: é a garantia visual de que você não vai processar nada de verdade por engano.Um banner fixo aparece no topo de toda página enquanto o sandbox estiver ativo:
Banner amarelo: Você está em ambiente sandbox. Nenhuma transação real será processada.

Banner fixo no topo do dashboard enquanto o ambiente de sandbox está ativo.

Esse banner é o seu lembrete: se ele sumiu, você está de volta ao ambiente live — e qualquer pagamento processa de verdade.

Crie uma chave de teste

O toggle acima muda o dashboard; para chamar a API você precisa de uma chave ch_test_.... No dashboard, abra Developers → Chaves de API, clique em Nova chave e selecione o ambiente test. Detalhes em API keys.
Você pode criar a chave e validar a integração inteira enquanto o cadastro é analisado — o sandbox não exige ativação. Só o ambiente live exige a organização ativa para confirmar pagamentos.

Antes de testar pagamentos

Você precisa de duas coisas prontas — as duas saem de Aceitar seu primeiro pagamento:
  1. Uma página de pagamento (a url de um payment link ou de uma checkout session), com cartão, PIX e boleto habilitados.
  2. Um receiver de webhook tratando checkout.session.completed, checkout.session.async.payment.succeeded e checkout.session.async.payment.failed.

Teste cada método de pagamento

1

Cartão: confirmação na hora (síncrona)

Por que essa etapa existe: é a linha de base — o caminho mais simples, sem esperar nenhum evento assíncrono. Todo o resto deste guia compara PIX e boleto contra esse comportamento.Abra a url do seu link, preencha os dados e pague com o cartão de teste 4242 4242 4242 4242 (qualquer CVC de 3 dígitos, qualquer validade futura):
Página de pagamento hospedada com as abas Cartão, PIX e Boleto, formulário de cartão preenchido

Formulário de cartão na página de pagamento hospedada, com as abas Cartão, PIX e Boleto.

A aprovação é síncrona: acontece ali, durante o checkout. Segundos depois, seu endpoint recebe o checkout.session.completed já pago:
payment_status: "paid" — pode entregar. Repare que não existe um segundo evento aqui: com cartão, um único checkout.session.completed já basta.
Quer testar uma recusa em vez de uma aprovação? A lista completa de cartões de teste (recusa por saldo, cartão vencido, CVC inválido etc.) está em Sandbox → Simular cartões.
2

PIX: confirmação por evento (assíncrona)

Por que essa etapa existe: é o primeiro caso em que “checkout concluído” e “dinheiro confirmado” são dois momentos diferentes — o ponto central deste guia.Abra o link de novo e escolha a aba PIX. O comprador recebe um QR code — e o checkout termina antes do pagamento acontecer:
Página de pagamento hospedada mostrando QR code PIX gerado, com instruções de pagamento

PIX gerado na página hospedada: QR code, instruções e o código copia-e-cola.

Seu endpoint recebe o checkout.session.completed com:
É isso que “assíncrono” significa: concluir o checkout e pagar são dois momentos diferentes. Use succeed_delayed@meusite.com como e-mail do cliente. O QR code nasce com o pagamento em pending e, após cerca de 3 minutos, chega o checkout.session.async.payment.succeeded com payment_status: "paid" e payment_data.payment_method: "pix" — o sinal para entregar.Para testar a resposta imediata sem esperar, use succeed_immediately@meusite.com. Para manter o QR pendente sem uma transição automática de teste, use pending@meusite.com.No checkout hospedado em sandbox, a barra amarela do topo também oferece Simular pagamento e Simular expiração depois que o QR ou boleto é criado. Use os botões para testes manuais rápidos; use os e-mails acima em testes automatizados.
3

Boleto: mesmo fluxo, prazo maior

Por que essa etapa existe: confirma que boleto segue exatamente o mesmo desenho do PIX — só muda o relógio, não o código do seu receiver.A aba Boleto segue o mesmo caminho do PIX: o comprador recebe um boleto com código de barras (o checkout exige CPF/CNPJ e endereço nesse método):
Página de pagamento hospedada mostrando boleto gerado, com código de barras e linha digitável

Boleto gerado na página hospedada: código de barras, linha digitável e link para o PDF.

O checkout.session.completed chega unpaid, e a confirmação vem depois por checkout.session.async.payment.succeeded. Use o mesmo succeed_delayed@meusite.com; a diferença em produção é o relógio, pois a compensação de um boleto pago leva normalmente 1–2 dias úteis. CPF/CNPJ e endereço continuam obrigatórios e precisam ser válidos. Detalhes do método em Boleto.
4

Simule expiração

Por que essa etapa existe: nem todo PIX ou boleto termina em sucesso — o comprador desiste, o boleto vence. Testar isso evita pedidos presos em “pendente” para sempre.Use expire_delayed@meusite.com para começar em pending e receber checkout.session.async.payment.failed cerca de 3 minutos depois. Use expire_immediately@meusite.com quando quiser que a confirmação já retorne o payment_intent como canceled.Esses resultados percorrem o mesmo processamento financeiro e os mesmos webhooks do ambiente live; o e-mail só escolhe o evento que o processador de teste vai produzir.

Síncrono vs. assíncrono, lado a lado

Regra de ouro: entregue o produto quando payment_status virar "paid" — nunca quando o comprador voltar para a página de sucesso. Em PIX e boleto, ele volta antes de pagar, e pode nunca pagar. O redirect é UX; o webhook é a verdade.

Ir para produção

Sandbox e produção usam o mesmo código — só o ambiente muda:
  1. Confirme a ativação da organização. O sandbox funciona sem ela, mas o ambiente live recusa a confirmação de pagamento (organization_not_activated) até activation_status chegar a active. Revise também os dados do negócio e a conta para saques — veja KYC.
  2. Saia do sandbox no mesmo menu (Minha conta → Sair do sandbox) e crie uma chave live (ch_live_...). Dados de teste não migram: recrie produto, preço e link com a chave live.
  3. Cadastre o endpoint de webhook no ambiente live. Endpoints e secrets são separados por ambiente.

Próximos passos

Aceitar seu primeiro pagamento

Produto, link de pagamento e o receiver de webhook que este guia reaproveita.

API keys

Ambientes live vs. test, escopos e rotação de chaves.

Sandbox

Cartões e e-mails especiais para todos os cenários de pagamento.

Entrega de webhooks

Assinatura, retries, idempotência e reentrega manual — o contrato completo.