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

# Saques

> Tirar o saldo por PIX, LTC ou USDT sem sair do código. Inclui o turbo, que é irreversível.

Um endpoint só, `POST /v1/payouts`, com três destinos possíveis. O que muda é o `method`.

<Columns cols={3}>
  <Card title="PIX" icon="bolt">
    Cai como pendente e passa por aprovação. Com `turbo`, sai na hora.
  </Card>

  <Card title="LTC" icon="bitcoin">
    Debita o saldo em Litecoin e envia após aprovação.
  </Card>

  <Card title="USDT" icon="dollar-sign">
    Converte BRL e entrega USDT na rede BEP20 em segundos.
  </Card>
</Columns>

<Warning>
  **Limite de 10 saques por hora, por chave de API.** O turbo tem um teto próprio de 5 por
  hora, que corre por dentro desse.
</Warning>

## Saque PIX

```bash theme={null}
curl -X POST https://api.purincash.com/v1/payouts \
  -H "Authorization: Bearer $PURINCASH_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "pix",
    "amount": 100.00,
    "walletAddress": "loja@exemplo.com"
  }'
```

```json Resposta 201 theme={null}
{
  "id": "SAQ-API-A1B2C3D4",
  "code": "SAQ-API-A1B2C3D4",
  "method": "pix",
  "amount": 100.00,
  "status": "pending",
  "sandbox": false
}
```

<ParamField body="method" type="string" required>
  `pix`, `ltc` ou `usd`.
</ParamField>

<ParamField body="amount" type="number" required>
  Valor em reais. Mínimo de R\$ 5,00, máximo de R\$ 999.999,99, sempre limitado ao
  `withdrawable` da [carteira](/guias/carteira).
</ParamField>

<ParamField body="walletAddress" type="string" required>
  Chave PIX, endereço LTC ou endereço USDT BEP20, conforme o `method`.
</ParamField>

<ParamField body="cryptoAmount" type="number">
  Quantidade em LTC. Obrigatório quando `method` é `ltc`.
</ParamField>

<ParamField body="turbo" type="boolean" default="false">
  Só com `method: "pix"`. Envia o PIX na hora, sem fila de aprovação.
</ParamField>

<Info>
  A chave PIX precisa estar verificada no painel antes do primeiro saque. Sem isso a
  resposta é `403`.
</Info>

## Saque LTC

```bash theme={null}
curl -X POST https://api.purincash.com/v1/payouts \
  -H "Authorization: Bearer $PURINCASH_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "ltc",
    "amount": 100.00,
    "cryptoAmount": 0.5,
    "walletAddress": "ltc1q..."
  }'
```

O `cryptoAmount` é obrigatório aqui e precisa ser maior que zero. O saldo debitado é o
`cryptoBalanceLtc` da carteira, não o saldo em reais.

## Saque turbo

Com `"turbo": true`, o PIX é enviado dentro da própria requisição. É o mesmo caminho do
botão de saque turbo do painel.

```bash theme={null}
curl -X POST https://api.purincash.com/v1/payouts \
  -H "Authorization: Bearer $PURINCASH_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "pix",
    "amount": 100.00,
    "walletAddress": "loja@exemplo.com",
    "turbo": true
  }'
```

```json Resposta 201 theme={null}
{
  "id": "TURBO-A1B2C3D4",
  "code": "TURBO-A1B2C3D4",
  "method": "pix_turbo",
  "amount": 100.00,
  "fee": 1.00,
  "netAmount": 99.00,
  "status": "completed",
  "txId": "...",
  "recipientName": "NOME DO RECEBEDOR",
  "turbo": true,
  "sandbox": false
}
```

<Warning>
  **O turbo é irreversível.** O dinheiro sai no mesmo request e não existe cancelamento
  depois. Quem tem a sua chave de API consegue mandar dinheiro pra fora sem passar por
  nenhuma aprovação. Guarde a chave como você guardaria a senha do painel.
</Warning>

Regras do turbo:

| Regra        | Detalhe                                                                                 |
| ------------ | --------------------------------------------------------------------------------------- |
| Método       | Só `pix`. Com `ltc` ou `usd` devolve `400`                                              |
| Valor        | R\$ 5,00 a R\$ 5.000,00 por saque                                                       |
| Limite       | 5 por hora, dentro do limite geral de 10                                                |
| Taxa         | Cobrada da loja (padrão R\$ 1,00) e descontada do envio. Veja `netAmount`               |
| Concorrência | Um por vez. Com outro em processamento, devolve `409`                                   |
| Recusa       | Turbo recusado **não** vira saque pendente. O request falha e você repete sem o `turbo` |

Sem o campo `turbo`, nada muda: o saque continua caindo como `pending` para aprovação.

## Saque em USDT

Converte o saldo em reais e envia USDT na rede BEP20 na hora.

```bash theme={null}
curl -X POST https://api.purincash.com/v1/payouts \
  -H "Authorization: Bearer $PURINCASH_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "usd",
    "amount": 100.00,
    "walletAddress": "0xAbC1230000000000000000000000000000000000",
    "confirmNotCoinbase": true
  }'
```

```json Resposta 201 theme={null}
{
  "success": true,
  "withdrawal": {
    "id": "665f1a2b3c4d5e6f7a8b9c0d",
    "code": "SAQ-U-1A2B3C4D5E6F7A8B",
    "amountBRL": 100.00,
    "receiveUSDT": 17.42,
    "rateBRLPerUSDT": 5.74,
    "status": "processando",
    "estimatedTime": "menos de 30 segundos"
  }
}
```

<Warning>
  `confirmNotCoinbase: true` é obrigatório. Depósito da Coinbase não aceita USDT BEP20, e
  o valor enviado para lá é perdido, sem recuperação. A confirmação existe para você parar
  e conferir a rede do endereço antes de mandar.
</Warning>

<Info>
  Por segurança contra fraude, o saque em USDT só é liberado depois que a loja fizer o
  primeiro saque em PIX. Antes disso a resposta é `403`.
</Info>

## Status

<ResponseField name="pending" type="PIX comum">
  Aguardando aprovação.
</ResponseField>

<ResponseField name="completed" type="todos">
  Pago.
</ResponseField>

<ResponseField name="denied" type="todos">
  Negado. O valor volta para o saldo.
</ResponseField>

<ResponseField name="processing" type="turbo e USDT">
  O pagamento foi enviado e a confirmação ainda não voltou. **O dinheiro já saiu.** Não
  repita o request.
</ResponseField>

## Erros e o que fazer

| Código | Situação                                                                                 | O que fazer                                                 |
| ------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| `400`  | Saldo insuficiente, valor fora da faixa, endereço inválido, `confirmNotCoinbase` ausente | Corrija e reenvie                                           |
| `403`  | Chave PIX não verificada, ou USDT antes do primeiro saque PIX                            | Resolva no painel                                           |
| `409`  | Já existe um saque turbo em processamento                                                | Espere e tente de novo                                      |
| `429`  | Passou de 10 por hora, ou 5 no turbo                                                     | Espere a janela virar                                       |
| `502`  | O banco recusou. O saldo é devolvido (`"refunded": true`)                                | Pode reenviar                                               |
| `503`  | Saque em cripto indisponível no momento                                                  | Tente mais tarde                                            |
| `202`  | Sem resposta do banco no turbo                                                           | **Não repita.** O PIX pode ter saído e um admin vai revisar |

<Warning>
  `202` e `processing` são os dois casos em que reenviar o request paga duas vezes.
  Trate ambos como sucesso provisório e reconcilie por `GET /v1/payouts`.
</Warning>

## Listando

```bash theme={null}
curl "https://api.purincash.com/v1/payouts?limit=20&status=pendente" \
  -H "Authorization: Bearer $PURINCASH_KEY"
```

```json theme={null}
{
  "payouts": [
    {
      "id": "SAQ-API-A1B2C3D4",
      "code": "SAQ-API-A1B2C3D4",
      "method": "pix",
      "amount": 100.00,
      "cryptoAmount": null,
      "walletAddress": "12345***",
      "status": "pendente",
      "createdAt": "2026-04-27T12:00:00.000Z"
    }
  ]
}
```

<Note>
  `walletAddress` volta sempre mascarado, com os primeiros caracteres e `***`. Dado
  sensível (CPF, chave PIX completa) não aparece em resposta nem em log.
</Note>

Cada mudança de status também dispara um [webhook de saque](/webhooks/saques).
