Documentação API

Integre a VexoPay em sua plataforma

V

Início Rápido

Integre pagamentos PIX no seu sistema em 3 passos simples:

1
Crie sua conta

Registre-se em www.vexopay.com.br/register

2
Gere suas API Keys

Vá em API Keys e gere suas credenciais (client_id + client_secret)

3
Integre

Use as credenciais nos headers das requisições HTTP conforme documentado abaixo.

Autenticação

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

// Headers obrigatórios em todas as requisições ci: vxp_ci_xxxxxxxxxxxxxxxx // seu client_id cs: vxp_cs_xxxxxxxxxxxxxxxx // seu client_secret Content-Type: application/json

Base URL

https://www.vexopay.com.br

Taxas

2% + R$ 0,50 por transação

ValorTaxaVocê Recebe
R$ 10,00R$ 0,70R$ 9,30
R$ 50,00R$ 1,50R$ 48,50
R$ 100,00R$ 2,50R$ 97,50
R$ 500,00R$ 10,50R$ 489,50
R$ 1.000,00R$ 20,50R$ 979,50

Sem mensalidade. Sem fidelidade. Sem taxa de adesão.

Criar Cobrança PIX (Cash-in)

POST /api/gateway/pix-create

Gera uma cobrança PIX com QR Code e código copia e cola.

Parâmetros (body JSON)
CampoTipoObrigatórioDescrição
amountnumberSimValor em reais (mín: 1.00)
payerNamestringSimNome do pagador
payerDocumentstringSimCPF do pagador (apenas números)
descriptionstringNãoDescriçã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
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 de Sucesso (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...", "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 do PIX
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" } }

Webhooks

Configure a URL de webhook no seu perfil para receber notificações em tempo real quando um pagamento for confirmado.

Payload recebido no seu webhook
{ "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: // payment.completed — pagamento confirmado // payment.failed — pagamento falhou // payment.expired — QR code expirou

IP Whitelist (Opcional)

Para maior segurança, você pode restringir o uso da sua API Key a IPs específicos. Configure na página API Keys.

Como funciona
ConfiguraçãoComportamento
Sem IPsAceita requisições de qualquer IP (padrão)
Com IPsAceita apenas requisições dos IPs listados
Resposta quando IP bloqueado (403)
{ "error": "IP não autorizado (203.0.113.50). Configure seus IPs permitidos na página API Keys." }

💡 Dica: Configure IPs permitidos sempre que possível para proteger suas credenciais contra uso não autorizado.

Códigos de Erro

HTTP CodeSignificado
400Parâmetros inválidos ou ausentes
401Credenciais (ci/cs) inválidas ou ausentes
403Conta suspensa ou sem permissão
404Recurso não encontrado
405Método HTTP não permitido
429Limite de requisições excedido
500Erro interno do servidor
502Erro de comunicação com processador de pagamento