Como fazer um saque
Guia completo para realizar saques e consultar saldo de forma segura.
Este guia mostra como realizar saques para chaves PIX e consultar o saldo disponível em sua conta. Todas as operações de saque devem ser realizadas exclusivamente no backend por questões de segurança.
IMPORTANTE: A Chave de Cash-Out nunca deve ser exposta no client-side. Sempre use-a apenas em seu backend para garantir a segurança das operações financeiras.
Pré-requisitos
Antes de realizar um saque, certifique-se de ter:
- ✅ Chave de Cash-Out configurada (obtida na plataforma)
- ✅ Saldo disponível na conta
- ✅ Chave PIX válida para receber o saque
- ✅ Ambiente backend seguro para processar a requisição
Consultar Saldo
Antes de realizar um saque, consulte o saldo disponível:
Endpoint de Consulta de Saldo
curl -X GET https://api.intake.finance/v1/balances/summary \
-H "Authorization: Bearer SUA_CHAVE_DE_CASH_OUT"Resposta
{
"available_summary": "105.00",
"pending_summary": "25.00"
}Campos da resposta:
available_summary: Saldo disponível para saque (em reais)pending_summary: Saldo pendente de liberação (em reais)
O saldo é atualizado em tempo real. Sempre consulte antes de realizar saques para garantir que há saldo suficiente.
Realizar um Saque
Preparar a Requisição
Use o endpoint POST /withdraws com a Chave de Cash-Out. Os campos external_id, amount, pix_key e pix_key_type são obrigatórios:
curl -X POST https://api.intake.finance/v1/withdraws \
-H "Authorization: Bearer SUA_CHAVE_DE_CASH_OUT" \
-H "Content-Type: application/json" \
-d '{
"external_id": "saque-12345",
"amount": 5000,
"pix_key": "usuario@exemplo.com",
"pix_key_type": "email"
}'Tipos de chave PIX (pix_key_type): cpf, cnpj, email, phone, random.
Processar a Resposta
A resposta conterá as informações do saque criado:
{
"id": "wt_123456789",
"status": "created",
"total_amount": "50.00",
"net_amount": "49.00",
"fixed_fee": "1.00",
"variable_fee": "0.00"
}Status possíveis:
created: Saque criado e aguardando processamentopaid: Saque em processamentoconfirmed: Saque concluído e confirmadofailed: Saque falhoublocked: Saque bloqueado
Listar Saques
Consulte todos os saques realizados com suporte a paginação:
curl -X GET "https://api.intake.finance/v1/withdraws?page=1&page_size=20" \
-H "Authorization: Bearer SUA_CHAVE_DE_CASH_OUT"Segurança
Boas Práticas
-
Nunca exponha a Chave de Cash-Out
- Não use em código JavaScript
- Não inclua em aplicações mobile
- Não compartilhe em repositórios públicos
-
Use variáveis de ambiente
# .env CASH_OUT_KEY=sua_chave_aqui -
Valide sempre o saldo antes de sacar
const { available_summary } = await getBalanceSummary(); const availableCents = Math.round(parseFloat(available_summary) * 100); if (availableCents < requestedAmount) { throw new Error('Saldo insuficiente'); } -
Registre todas as operações
- Mantenha logs de todas as requisições de saque
- Monitore tentativas de saque falhadas
Se você suspeitar que sua Chave de Cash-Out foi comprometida, revogue-a imediatamente na plataforma e gere uma nova.
Exemplos Completos
Node.js/TypeScript
async function checkBalanceAndWithdraw(
externalId: string,
amount: number,
pixKey: string,
pixKeyType: 'cpf' | 'cnpj' | 'email' | 'phone' | 'random'
) {
const headers = {
Authorization: `Bearer ${process.env.CASH_OUT_KEY}`,
'Content-Type': 'application/json',
};
// 1. Consultar saldo
const balanceRes = await fetch(
'https://api.intake.finance/v1/balances/summary',
{ headers }
);
const { available_summary } = await balanceRes.json();
const availableCents = Math.round(parseFloat(available_summary) * 100);
// 2. Validar saldo
if (availableCents < amount) {
throw new Error('Saldo insuficiente');
}
// 3. Realizar saque
const withdrawRes = await fetch('https://api.intake.finance/v1/withdraws', {
method: 'POST',
headers,
body: JSON.stringify({
external_id: externalId,
amount,
pix_key: pixKey,
pix_key_type: pixKeyType,
}),
});
return withdrawRes.json();
}Python
import os
import requests
def check_balance_and_withdraw(external_id, amount, pix_key, pix_key_type):
token = os.getenv('CASH_OUT_KEY')
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
# 1. Consultar saldo
balance_res = requests.get(
'https://api.intake.finance/v1/balances/summary',
headers=headers
)
balance_res.raise_for_status()
summary = balance_res.json()
available_cents = round(float(summary['available_summary']) * 100)
# 2. Validar saldo
if available_cents < amount:
raise ValueError('Saldo insuficiente')
# 3. Realizar saque
withdrawal_res = requests.post(
'https://api.intake.finance/v1/withdraws',
headers=headers,
json={
'external_id': external_id,
'amount': amount,
'pix_key': pix_key,
'pix_key_type': pix_key_type,
}
)
withdrawal_res.raise_for_status()
return withdrawal_res.json()Próximos Passos
- Veja a Referência Completa de API de Saques
- Configure webhooks para receber notificações de conclusão de saques
- Aprenda sobre autenticação e segurança