Início Rápido
Integre pagamentos PIX em 3 passos simples.
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:
Copiar
ci : vxp_ci_xxxxxxxxxxxxxxxx
cs : vxp_cs_xxxxxxxxxxxxxxxx
Content-Type : application/json
Base URL
Copiar https://www.vexopay.com.br
Criar Cobrança PIX
POST
/api/gateway/pix-create
Parâmetros (body JSON)
Campo Tipo Descrição
amount obrigatório number Valor em reais (mín: 2.00)
payerName obrigatório string Nome do pagador
payerDocument obrigatório string CPF (apenas números)
description opcional string Descrição da cobrança
cURL
JavaScript
Python
PHP
Copiar 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"
}'
Copiar 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);
console.log(data.data.copyPaste);
console.log(data.data.paymentLink);
Copiar 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' ])
Copiar $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' ];
Resposta (201)
Copiar {
"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
Copiar 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
Copiar {
"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
Status Descrição
pendingAguardando pagamento
paidPagamento confirmado
failedPagamento falhou
expiredQR Code expirou
refundedPagamento estornado
Consultar Saldo
GET
/api/gateway/balance
Copiar curl https://www.vexopay.com.br/api/gateway/balance \
-H "ci: vxp_ci_SEU_CLIENT_ID" \
-H "cs: vxp_cs_SEU_CLIENT_SECRET"
Resposta
Copiar {
"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
Campo Tipo Descrição
withdrawalMethod obrigatório string PIX, INTERNAL ou CRYPTO
amount obrigatório number Valor em reais
description opcional string Descrição da operação
PIX — parâmetros adicionais
Campo Tipo Descrição
pixKeyType obrigatório string CPF, CNPJ, EMAIL, TELEFONE, CHAVE_ALEATORIA
pixKey obrigatório string Chave PIX correspondente
INTERNAL — parâmetros adicionais
Campo Tipo Descrição
targetAccount obrigatório string Email, documento ou ID da conta destino
CRYPTO — parâmetros adicionais
Campo Tipo Descrição
wallet obrigatório string Carteira BEP20 (0x + 40 hex)
Copiar 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
Tipo Regras
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
Copiar {
"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
Evento Descriçã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
Copiar {
"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ção Comportamento
Sem IPsAceita de qualquer IP (padrão)
Com IPsAceita apenas dos IPs listados
IP bloqueado (403)
Copiar {
"error" : "IP não autorizado (203.0.113.50)"
}
Códigos de Erro
Referência de todos os códigos HTTP retornados pela API.
HTTP Significado
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