Documentação da API
Bem-vindo à documentação oficial da Vexpay. Nossa API RESTful permite que você integre pagamentos instantâneos, gerencie carteiras e realize splits financeiros de forma simples e segura.
https://app.vexpay.com.br/v2
Todas as requisições devem ser feitas via HTTPS. Requisições HTTP inseguras serão rejeitadas.
Autenticação
A segurança da API utiliza o padrão OAuth 2.0 Client Credentials. Isso significa que você precisa trocar suas credenciais fixas (`Client ID` e `Client Secret`) por um `access_token` temporário.
Client Secret no Frontend (HTML/JS). Esta chamada deve ser feita sempre pelo seu Backend.
Parâmetros (Header)
| Campo | Valor | Descrição |
|---|---|---|
| Authorization | Basic ... | Base64 de CLIENT_ID:CLIENT_SECRET |
| Content-Type | application/json | Formato do corpo |
curl -X POST https://app.vexpay.com.br/v2/oauth/token \
-u "CLIENT_ID:CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{"grant_type": "client_credentials"}'Resposta de Sucesso
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJ...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "*"
}
Criar Cobrança (Pix In)
Gera um QR Code dinâmico (Copia e Cola) para recebimento imediato. Ideal para checkouts de e-commerce e depósitos em carteira.
Parâmetros do Corpo (JSON)
| Campo | Tipo | Regra | Descrição |
|---|---|---|---|
amount |
Float | Obrigatório | Valor da transação. Ex: 150.50 |
payer |
Objeto | Obrigatório | Dados do pagador. Contém name e document (CPF/CNPJ). |
external_id |
String | Opcional | Seu ID de controle (ex: ID do pedido no seu banco). Usado para idempotência. |
postbackUrl |
String | Recomendado | URL onde você receberá o Webhook de confirmação. Se não enviado, usa a URL padrão do painel. |
curl -X POST https://app.vexpay.com.br/v2/pix/qrcode \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"amount": 150.00,
"external_id": "PEDIDO_123",
"payer": { "name": "Carlos", "document": "12345678900" },
"postbackUrl": "https://seu-site.com/webhook"
}'Resposta (201 Created)
{
"success": true,
"transactionId": "e0281273-...",
"qrcode": "00020126580014br.gov.bcb.pix0136123e4567-e89b-12d3-a456-426614174000...",
"imagemQrcode": "https://chart.googleapis.com/...",
"status": "PENDING"
}
Split de Pagamento (Marketplace)
O recurso de Split permite dividir o valor de uma venda entre múltiplos recebedores no momento exato do pagamento. Isso é fundamental para Marketplaces.
Basta adicionar o array split no payload de criação do Pix.
Estrutura do Objeto Split
| Campo | Tipo | Descrição |
|---|---|---|
email | String | E-mail do parceiro cadastrado na Vexpay. |
percentage | Int | Porcentagem do valor total (ex: 10 para 10%). |
fixed_amount | Float | Valor fixo em reais (ex: 5.00). |
curl -X POST https://app.vexpay.com.br/v2/pix/qrcode \
-H "Authorization: Bearer {TOKEN}" \
-d '{
"amount": 100.00,
"payer": { ... },
"split": [
{ "email": "parceiro@loja.com", "percentage": 10 },
{ "email": "marketing@agencia.com", "fixed_amount": 5.00 }
]
}'Webhooks (Notificações)
Não fique consultando o status a todo momento (Polling). Use Webhooks para ser notificado assim que o pagamento for confirmado.
Enviaremos uma requisição POST para a postbackUrl informada na criação da cobrança.
Payload Recebido
{
"event": "pix.received",
"data": {
"transactionId": "e0281273-9812...",
"external_id": "PEDIDO_123",
"amount": 150.00,
"status": "PAID",
"paid_at": "2026-01-28 15:30:00"
}
}
Como processar (Exemplo Seguro)
// Exemplo do JSON que você vai receber no seu POSTRespostas e Erros
Utilizamos códigos HTTP convencionais para indicar sucesso ou falha.
| Código | Status | Significado |
|---|---|---|
| 200 | OK | Sucesso padrão. |
| 201 | Created | Recurso criado (ex: QR Code gerado). |
| 400 | Bad Request | Erro nos dados enviados (ex: CPF inválido). |
| 401 | Unauthorized | Token inválido ou expirado. |
| 403 | Forbidden | Sua conta não tem permissão para esta ação. |
| 422 | Unprocessable | Erro de validação de negócio (ex: Saldo insuficiente). |
| 500 | Server Error | Erro interno. Tente novamente mais tarde. |