Esta documentação fornece todas as informações necessárias para realizar saques e transferências PIX através da API do Vexa Pay. Você aprenderá os pré-requisitos, como fazer requisições de saque e interpretar as respostas da API.
Visão Geral
O endpoint de Cash Out permite realizar transferências PIX para qualquer chave PIX cadastrada no sistema. Esta funcionalidade é essencial para operações de saque, pagamento a fornecedores, transferências entre contas e outras operações financeiras.
Endpoint: /api/v1/cash-out
Metado:POST
Autenticação:Bearer Token Requer token OAuth válido (Bearer Token)
Content-Type: application/json
Pré-requisitos
Antes de realizar operações de Cash Out, você precisa garantir que:
- Credenciais de API ativas: Possuir Client ID, Client Secret e API Key válidos
- Token de acesso válido: Obter um token OAuth através do endpoint
/api/v1/oauth - Saldo suficiente: Ter saldo disponível na carteira para cobrir o valor da transferência + taxas
- Conta ativa: Sua conta deve estar ativa e sem restrições
O que é Necessário
Para realizar uma transferência PIX, você precisa fornecer as seguintes informações:
Campos Obrigatórios
name (string)
Nome completo do beneficiário (máximo 255 caracteres)
pix_key (string)
Chave PIX do destinatário (CPF, email, telefone ou chave aleatória)
pix_key_type (number)
Tipo da chave PIX alinhado à A55: 1=CPF, 8=CNPJ, 2=EMAIL, 3=PHONE, 4=RANDOM
beneficiary_type (number)
Tipo de beneficiário: 1 = Pessoa Física, 2 = Pessoa Jurídica
account_type (number)
Tipo de conta: 1 = Conta Corrente, 2 = Poupança
amount (string)
Valor da transferência em formato string exemplo: 100.50
cpf (string)
CPF do beneficiário (apenas números, 11 dígitos)
Campos Opcionais
description (string)
Descrição da transferência (opcional)
favorite (boolean)
Marcar como favorito para futuras transferências (opcional, padrão: false)
O que é Importante para o Funcionamento
2. Saldo Disponível
Verifique sempre o saldo disponível antes de realizar a transferência. O sistema verificará automaticamente se há saldo suficiente para cobrir o valor + taxas. Transações sem saldo suficiente serão rejeitadas.
3. Formato do Valor
O valor deve ser enviado como string no formato decimal exemplo: 100.50. Use ponto (.) como separador decimal. Valores mínimos e máximos podem variar conforme as políticas da plataforma.
4. Validação da Chave PIX
A chave PIX deve ser válida e corresponder ao tipo especificado em pix_key_type. Chaves inválidas resultarão em erro na requisição.
5. Token de Acesso Válido
O token OAuth expira em 15 minutos. Implemente renovação automática do token para evitar falhas nas requisições. Sempre verifique se o token está válido antes de fazer requisições.
6. Taxas e Custos
Transações PIX podem ter taxas associadas. Consulte a resposta da API para verificar o valor da taxa cobrada. O valor total debitado será: valor da transferência + taxa.
Como Utilizar o Endpoint
/api/v1/cash-out
Realiza uma transferência PIX para uma chave PIX específica
Headers:
Authorization: Bearer <seu-access-token> Content-Type: application/json
Body (JSON):
{
"name": "Maria Santos",
"pix_key": "12345678900",
"pix_key_type": 1,
"beneficiary_type": 1,
"account_type": 1,
"amount": "100.50",
"cpf": "12345678900",
"description": "Transferência para cliente",
"favorite": false
}Tipos de Chave PIX (pix_key_type) — alinhados à A55:
• 1 = CPF → A55 CPF
• 8 = CNPJ → A55 CNPJ
• 2 = Email → A55 EMAIL
• 3 = Telefone → A55 PHONE
• 4 = Chave Aleatória → A55 RANDOM
Tipos de Beneficiário (beneficiary_type):
• 1 = Pessoa Física
• 2 = Pessoa Jurídica
Tipos de Conta (account_type):
• 1 = Conta Corrente
• 2 = Poupança
Resposta de Sucesso (200):
{
"transactionId": "550e8400-e29b-41d4-a716-446655440000",
"status": "PROCESSING",
"amount": 100.50,
"fee": 2.50,
"totalDebited": 103.00,
"createdAt": "2024-01-15T17:30:00.000Z",
"beneficiary": {
"name": "Maria Santos",
"pixKey": "12345678900",
"pixKeyType": "CPF"
}
}Exemplo Completo de Requisição
Abaixo está um exemplo completo em JavaScript/Node.js de como realizar uma transferência PIX:
// Exemplo de transferência PIX (Cash Out)
const axios = require('axios');
const BASE_URL = 'https://api.vexapagamentos.com.br/api/v1';
const ACCESS_TOKEN = 'seu-access-token-aqui';
async function realizarTransferenciaPIX() {
try {
const response = await axios.post(
`${BASE_URL}/api/v1/cash-out`,
{
name: "Maria Santos",
pix_key: "12345678900",
pix_key_type: 1, // CPF
beneficiary_type: 1, // Pessoa Física
account_type: 1, // Conta Corrente
amount: "100.50",
cpf: "12345678900",
description: "Transferência para cliente",
favorite: false
},
{
headers: {
'Authorization': `Bearer ${ACCESS_TOKEN}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error: any) {
console.error('Erro ao realizar transferência:', error.message);
throw error;
}
}
// Executar transferência
realizarTransferenciaPIX();Exemplo com cURL
curl -X POST https://api.vexapagamentos.com.br/api/v1/cash-out \
-H "Authorization: Bearer seu-access-token-aqui" \
-H "Content-Type: application/json" \
-d '{
"name": "Maria Santos",
"pix_key": "12345678900",
"pix_key_type": 1,
"beneficiary_type": 1,
"account_type": 1,
"amount": "100.50",
"cpf": "12345678900",
"description": "Transferência para cliente",
"favorite": false
}'Possíveis Erros
Status 400 - Bad Request
Erros de validação ou formato incorreto:
{
"message": [
"pix_key must be a valid PIX key",
"amount must be a valid number"
],
"error": "Bad Request",
"statusCode": 400
}Status 401 - Unauthorized
Erros de autenticação:
{
"message": "Unauthorized",
"statusCode": 401
}Status 402 - Payment Required
Saldo insuficiente:
{
"message": "Saldo insuficiente para realizar a transferência",
"error": "Payment Required",
"statusCode": 402
}Status 404 - Not Found
Credenciais não encontradas:
{
"message": "Credenciais não encontradas",
"error": "Not Found",
"statusCode": 404
}Status 500 - Internal Server Error
Erro no processamento do servidor:
{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}Boas Práticas e Recomendações
- Validação prévia: Sempre valide os dados antes de enviar a requisição (formato do CPF, chave PIX, valor mínimo/máximo)
- Verificação de saldo: Consulte o saldo disponível antes de realizar transferências para evitar erros
- Logs e auditoria: Mantenha logs de todas as transferências realizadas para auditoria e rastreabilidade
- Webhooks: Configure webhooks para receber notificações em tempo real sobre o status das transferências
- Validação de chave PIX: Valide o formato da chave PIX antes de enviar, conforme o tipo especificado
- Limites de transação: Respeite os limites de transação configurados na plataforma
- Idempotência: Use identificadores únicos para evitar transferências duplicadas
Validações Importantes
Antes de enviar a requisição, certifique-se de:
- O CPF está no formato correto (11 dígitos, apenas números)
- A chave PIX corresponde ao tipo especificado em pix_key_type
- O valor está no formato string com ponto decimal exemplo: 100.50
- O saldo disponível é suficiente para cobrir valor + taxas
- O token de acesso está válido e não expirou
- Os tipos numéricos (pix_key_type, beneficiary_type, account_type) estão corretos
Integração com Webhooks
Para receber notificações em tempo real sobre o status das transferências, configure webhooks. Isso permite que sua aplicação seja notificada automaticamente quando uma transferência for concluída, falhar ou mudar de status.
Eventos disponíveis para Cash Out:
• cashout.processing - Transferência iniciada
• cashout.completed - Transferência concluída
• cashout.failed - Transferência falhou
• cashout.cancelled - Transferência cancelada
Suporte e Recursos Adicionais
Para mais informações sobre outros endpoints e funcionalidades:
- Cash In: Documentação sobre geração de QR Codes PIX para recebimento
- Extrato: Como consultar histórico de transações e status de transferências
- Saldo: Como consultar saldo disponível antes de realizar transferências
- Webhooks: Configuração de notificações em tempo real
- Autenticação: Guia completo sobre OAuth e geração de tokens