Documentação API

Integre a VexoPay em sua plataforma

META
R$ 0
0%
R$ 1K
Notificações
Carregando...
V
...

Início Rápido

Integre pagamentos PIX em 3 passos simples.

1
Crie sua conta

Registre-se em vexopay.com.br/register

2
Gere suas API Keys

Vá em API Keys e gere suas credenciais

3
Integre

Use ci e cs nos headers das requisições

Autenticação

Todas as requisições exigem as credenciais nos headers:

// Headers obrigatórios ci: vxp_ci_xxxxxxxxxxxxxxxx // client_id cs: vxp_cs_xxxxxxxxxxxxxxxx // client_secret Content-Type: application/json
Base URL
https://www.vexopay.com.br

Criar Cobrança PIX

POST /api/gateway/pix-create

Parâmetros (body JSON)
CampoTipoDescrição
amount obrigatórionumberValor em reais (mín: 2.00)
payerName obrigatóriostringNome do pagador
payerDocument obrigatóriostringCPF (apenas números)
description opcionalstringDescrição da cobrança
curl -X POST https://www.vexopay.com.br/api/gateway/pix-create \ -H "Content-Type: application/json" \ -H "ci: vxp_ci_SEU_CLIENT_ID" \ -H "cs: vxp_cs_SEU_CLIENT_SECRET" \ -d '{ "amount": 50.00, "payerName": "João Silva", "payerDocument": "12345678909", "description": "Assinatura mensal" }'
const response = await fetch('https://www.vexopay.com.br/api/gateway/pix-create', { method: 'POST', headers: { 'Content-Type': 'application/json', 'ci': 'vxp_ci_SEU_CLIENT_ID', 'cs': 'vxp_cs_SEU_CLIENT_SECRET', }, body: JSON.stringify({ amount: 50.00, payerName: 'João Silva', payerDocument: '12345678909', description: 'Assinatura mensal', }), }); const data = await response.json(); console.log(data.data.qrCodeBase64); // QR Code em Base64 console.log(data.data.copyPaste); // Código copia e cola console.log(data.data.paymentLink); // Checkout hospedado (quando disponivel)
import requests response = requests.post( 'https://www.vexopay.com.br/api/gateway/pix-create', headers={ 'ci': 'vxp_ci_SEU_CLIENT_ID', 'cs': 'vxp_cs_SEU_CLIENT_SECRET', }, json={ 'amount': 50.00, 'payerName': 'João Silva', 'payerDocument': '12345678909', } ) data = response.json() print(data['data']['copyPaste']) # Código PIX
$ch = curl_init('https://www.vexopay.com.br/api/gateway/pix-create'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'ci: vxp_ci_SEU_CLIENT_ID', 'cs: vxp_cs_SEU_CLIENT_SECRET', ], CURLOPT_POSTFIELDS => json_encode([ 'amount' => 50.00, 'payerName' => 'João Silva', 'payerDocument' => '12345678909', ]), ]); $response = curl_exec($ch); $data = json_decode($response, true); echo $data['data']['copyPaste']; // Código PIX
Resposta (201)
{ "success": true, "data": { "transactionId": "vxp_abc123def456...", "amount": 50.00, "fee": 1.50, "netAmount": 48.50, "status": "pending", "qrCodeBase64": "data:image/png;base64,...", "qrCodeUrl": "https://...", "copyPaste": "00020126...", "paymentLink": "https://...", "expiresAt": "2025-12-31T23:59:59Z" } }

Consultar Status

GET /api/gateway/pix-status?transactionId=vxp_xxx

curl https://www.vexopay.com.br/api/gateway/pix-status?transactionId=vxp_abc123 \ -H "ci: vxp_ci_SEU_CLIENT_ID" \ -H "cs: vxp_cs_SEU_CLIENT_SECRET"
Resposta
{ "success": true, "data": { "transactionId": "vxp_abc123...", "type": "pix_in", "amount": 50.00, "fee": 1.50, "netAmount": 48.50, "status": "paid", "payerName": "João Silva", "createdAt": "2025-01-15T14:30:00Z" } }
Possíveis Status
StatusDescrição
pendingAguardando pagamento
paidPagamento confirmado
failedPagamento falhou
expiredQR Code expirou
refundedPagamento estornado

Consultar Saldo

GET /api/gateway/balance

curl https://www.vexopay.com.br/api/gateway/balance \ -H "ci: vxp_ci_SEU_CLIENT_ID" \ -H "cs: vxp_cs_SEU_CLIENT_SECRET"
Resposta
{ "success": true, "data": { "balance": 1250.00, "totalReceived": 5000.00, "totalWithdrawn": 3500.00, "totalFees": 250.00, "transactionsCount": 42, "currency": "BRL" } }

Observação importante

Os campos payerName e payerDocument na criação do PIX não precisam ser verídicos. Eles servem apenas para preencher a cobrança. Os dados reais do pagador são capturados automaticamente após a confirmação do pagamento.

Solicitar Saque (Cash-out)

POST /api/merchant/cashout

Dois modos: sessão do painel (CSRF + PIN) ou server-to-server (ci/cs nos headers).

Parâmetros base
CampoTipoDescrição
withdrawalMethod obrigatóriostringPIX, INTERNAL ou CRYPTO
amount obrigatórionumberValor em reais
description opcionalstringDescrição da operação
PIX — parâmetros adicionais
CampoTipoDescrição
pixKeyType obrigatóriostringCPF, CNPJ, EMAIL, TELEFONE, CHAVE_ALEATORIA
pixKey obrigatóriostringChave PIX correspondente
INTERNAL — parâmetros adicionais
CampoTipoDescrição
targetAccount obrigatóriostringEmail, documento ou ID da conta destino
CRYPTO — parâmetros adicionais
CampoTipoDescrição
wallet obrigatóriostringCarteira BEP20 (0x + 40 hex)
curl -X POST https://www.vexopay.com.br/api/merchant/cashout \ -H "Content-Type: application/json" \ -H "ci: vxp_ci_SEU_CLIENT_ID" \ -H "cs: vxp_cs_SEU_CLIENT_SECRET" \ -d '{ "withdrawalMethod": "PIX", "amount": 100.00, "pixKeyType": "CPF", "pixKey": "12345678909" }'
Regras
TipoRegras
PIXMínimo dinâmico: maior entre R$ 1,00 e (taxa fixa + R$ 0,01)
INTERNALSem taxa. Liquidação imediata entre contas VexoPay
CRYPTOMínimo R$ 20 / Máximo R$ 3.000. Taxa plataforma + rede

Webhooks

Receba notificações em tempo real quando um pagamento for confirmado. Configure a URL no seu perfil.

Payload recebido
{ "event": "payment.completed", "data": { "transactionId": "vxp_abc123...", "amount": 50.00, "fee": 1.50, "netAmount": 48.50, "status": "paid", "payerName": "João Silva", "paidAt": "2025-01-15T14:35:00Z" } }
Eventos possíveis
EventoDescrição
payment.completedPagamento confirmado
payment.failedPagamento falhou
payment.expiredQR Code expirou

Taxas Crypto

GET /api/merchant/crypto-fees

Retorna taxa de plataforma, taxa de rede e cotação de referência.

Resposta
{ "success": true, "data": { "quote": { "brlPerUSD": 5.25, "networkFee": 3 }, "fees": { "platformFeePercentage": 3, "networkFee": 3 } } }

IP Whitelist

Restrinja o uso da API Key a IPs específicos. Configure na página API Keys.

ConfiguraçãoComportamento
Sem IPsAceita de qualquer IP (padrão)
Com IPsAceita apenas dos IPs listados
IP bloqueado (403)
{ "error": "IP não autorizado (203.0.113.50)" }

Códigos de Erro

Referência de todos os códigos HTTP retornados pela API.

HTTPSignificado
400Parâmetros inválidos ou ausentes
401Credenciais (ci/cs) inválidas
403Conta suspensa ou IP bloqueado
404Recurso não encontrado
409Conflito de estado
428Reautenticação obrigatória (PIN)
429Rate limit excedido
500Erro interno do servidor
502Erro com processador de pagamento