Cash Out - Saques e Transferências PIX

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