# Gerar credencial (/docs/pix-processamento/sandbox/credencial)

<QuickLinks>
  <QuickLink href="/docs/pix-processamento/sandbox" title="Sandbox" />

  <QuickLink href="/docs/pix-processamento/sandbox/cenarios" title="Cenários de teste" />

  <QuickLink href="/docs/pix-processamento/sandbox/webhooks" title="Webhooks no sandbox" />

  <QuickLink href="/docs/pix-processamento/authentication" title="Autenticação" />
</QuickLinks>

A credencial de sandbox nasce de um e-mail e um código de 6 dígitos. Não há cadastro nem aprovação.

<Flow>
  <FlowNode title="E-mail" subtitle="sem cadastro" />

  <FlowArrow label="código de 6 dígitos" />

  <FlowNode title="Verificação" subtitle="10 min, 5 tentativas" />

  <FlowArrow label="POST /sandbox/credentials/verify" />

  <FlowNode title="sbx_..." subtitle="24 horas" />
</Flow>

## Gerar pelo formulário [#gerar-pelo-formulário]

<SandboxCredential
  labels="{
  emailLabel: &#x22;E-mail&#x22;,
  emailPlaceholder: &#x22;dev@sualoja.com.br&#x22;,
  requestCode: &#x22;Receber código&#x22;,
  sending: &#x22;Enviando...&#x22;,
  codeSent: &#x22;Código enviado para {email}. Vale 10 minutos e aceita 5 tentativas.&#x22;,
  codeLabel: &#x22;Código de 6 dígitos&#x22;,
  codePlaceholder: &#x22;000000&#x22;,
  generateCredential: &#x22;Gerar credencial&#x22;,
  generating: &#x22;Gerando...&#x22;,
  changeEmail: &#x22;Usar outro e-mail&#x22;,
  tokenTitle: &#x22;Sua credencial de sandbox&#x22;,
  tokenWarning: &#x22;Copie agora. O token não será mostrado de novo e vale por 24 horas.&#x22;,
  copy: &#x22;Copiar&#x22;,
  copied: &#x22;Copiado!&#x22;,
  copyFailed: &#x22;Falha ao copiar&#x22;,
  curlsTitle: &#x22;Primeiras chamadas&#x22;,
  curlWebhook: &#x22;Cadastrar webhook&#x22;,
  curlCharge: &#x22;Criar cobrança&#x22;,
  curlLookup: &#x22;Consultar cobrança&#x22;,
  webhookUrlPlaceholder: &#x22;https://sua-app.com.br/webhook&#x22;,
  captchaLoading: &#x22;Carregando reCAPTCHA...&#x22;,
  captchaError: &#x22;Não foi possível carregar o reCAPTCHA. Recarregue a página.&#x22;,
  captchaRequired: &#x22;Marque o reCAPTCHA antes de pedir o código.&#x22;,
  networkError: &#x22;Não foi possível falar com o sandbox. Verifique a conexão e tente de novo.&#x22;,
  unexpectedError: &#x22;O sandbox respondeu um erro sem mensagem.&#x22;,
  retryAfter: &#x22;Tente de novo em {seconds} segundo(s).&#x22;,
  requestIdLabel: &#x22;requestId&#x22;,
}"
/>

O código chega por e-mail, vale 10 minutos e aceita 5 tentativas. Cada e-mail pode pedir até 3 códigos por hora. A credencial nasce com os escopos `DEPOSIT` e `WITHDRAW`, saldo de R$ 10.000,00 e tarifa zero. Envie `Authorization: Bearer sbx_...` nas chamadas autenticadas, como em [Autenticação](/docs/pix-processamento/authentication). As duas rotas pré-credencial não levam token: `POST /sandbox/credentials` (pedido do código, protegido por reCAPTCHA) e `POST /sandbox/credentials/verify` (troca do código pela credencial).

<Callout type="warn">
  O token aparece uma única vez. Guarde como guardaria o de produção: em variável de ambiente, fora do repositório.
</Callout>

## Trocar o código por curl [#trocar-o-código-por-curl]

O pedido do código (`POST /sandbox/credentials`) exige o token do reCAPTCHA, por isso ele é feito pelo formulário acima. A troca do código pela credencial pode ser feita por curl:

```bash
curl -X POST https://pix.sandbox.payzu.dev/sandbox/credentials/verify \
  -H "Content-Type: application/json" \
  -d '{"email":"dev@sualoja.com.br","code":"418302"}'
```

```json
{
  "id": "cmh211yjm03ohs601kf7672du",
  "token": "sbx_5f3a9c2e...",
  "status": "ACTIVE",
  "permissions": ["DEPOSIT", "WITHDRAW"],
  "createdAt": "2026-08-23T12:00:00.000Z",
  "updatedAt": "2026-08-23T12:00:00.000Z"
}
```

Guarde o `token` em `SANDBOX_TOKEN` para os próximos passos: [Cenários de teste](/docs/pix-processamento/sandbox/cenarios) e [Webhooks no sandbox](/docs/pix-processamento/sandbox/webhooks).