> ## Documentation Index
> Fetch the complete documentation index at: https://docs.safefypay.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Sandbox

> Teste sua integração sem pagamentos reais

O ambiente **Sandbox** permite testar todo o fluxo de pagamentos sem precisar fazer transações reais.

## Como funciona

Na Safefy, **não existe URL separada** para Sandbox e Production. O ambiente é determinado pelo tipo de **credencial de API** que você utiliza.

| Tipo de Credencial | Ambiente | Comportamento                        |
| ------------------ | -------- | ------------------------------------ |
| **Sandbox**        | Testes   | Pagamentos simulados, saldo fictício |
| **Production**     | Real     | Transações PIX reais                 |

**URL da API:** `https://api-payment.safefypay.com.br`

<Info>
  A mesma URL é usada para ambos os ambientes. O que muda é a credencial utilizada na autenticação.
</Info>

***

## Criando credenciais

No painel da Safefy, você pode criar credenciais para cada ambiente:

<Steps>
  <Step title="Acesse o painel">
    Entre em [app.safefypay.com.br](https://app.safefypay.com.br) e selecione sua organização.
  </Step>

  <Step title="Vá até Credenciais">
    No menu lateral, acesse a seção de credenciais de API.
  </Step>

  <Step title="Crie a credencial">
    Escolha o tipo **Sandbox** para testes ou **Production** para transações reais.
  </Step>

  <Step title="Guarde o Client Secret">
    O Client Secret é exibido apenas uma vez. Guarde-o em local seguro.
  </Step>
</Steps>

***

## Simulando pagamentos

Em Sandbox, você pode simular diferentes status de transação usando o endpoint de simulação:

```bash theme={null}
curl -X POST https://api-payment.safefypay.com.br/v1/transactions/{id}/simulate \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{ "action": "complete" }'
```

### Ações disponíveis

| Ação       | Status atual | Novo status | Descrição                   |
| ---------- | ------------ | ----------- | --------------------------- |
| `complete` | `Pending`    | `Completed` | Simula pagamento confirmado |
| `expire`   | `Pending`    | `Expired`   | Simula expiração            |
| `fail`     | `Pending`    | `Failed`    | Simula falha                |
| `refund`   | `Completed`  | `Refunded`  | Simula estorno              |

<Warning>
  O endpoint de simulação só funciona com credenciais **Sandbox**. Em Production, os pagamentos são processados automaticamente pelo sistema PIX.
</Warning>

***

## Fluxo de teste completo

<Steps>
  <Step title="Crie uma transação">
    Use credenciais Sandbox para criar uma transação PIX.
  </Step>

  <Step title="Exiba o QR Code">
    Mostre o qrCode ou copyAndPaste na sua interface.
  </Step>

  <Step title="Simule o pagamento">
    Use o endpoint /simulate com action: complete.
  </Step>

  <Step title="Receba o webhook">
    Sua callbackUrl receberá o evento transaction.completed.
  </Step>

  <Step title="Valide o fluxo">
    Verifique se sua aplicação liberou o produto/serviço corretamente.
  </Step>
</Steps>

***

## Simulando saques

Você também pode simular o processamento de saques:

```bash theme={null}
curl -X POST https://api-payment.safefypay.com.br/v1/cashouts/{id}/simulate \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{ "action": "Complete" }'
```

| Ação       | Descrição                |
| ---------- | ------------------------ |
| `Complete` | Simula saque concluído   |
| `Fail`     | Simula falha no saque    |
| `Reject`   | Simula rejeição do saque |

***

## Dados de teste

Em Sandbox, você pode usar qualquer dado válido para criar transações e clientes:

```json theme={null}
{
  "name": "João da Silva Teste",
  "email": "joao@teste.com",
  "document": "12345678901",
  "documentType": "CPF"
}
```

***

## Indo para Production

Quando sua integração estiver pronta:

1. Crie uma credencial de **Production** no painel
2. Substitua o Client ID e Client Secret no seu sistema
3. Remova chamadas ao endpoint /simulate
4. Teste com transacoes de baixo valor primeiro

<Card title="Criar transacao de teste" icon="play" href="/api-reference/transactions/create">
  Experimente criar uma transação no playground.
</Card>
