Introdução
Bem-vindo à documentação da API ONYXPAG. Nossa API permite que você integre recursos de processamento de pagamentos em seu aplicativo ou site de forma rápida e segura. Com ela, você pode criar cobranças, consultar transações e receber notificações em tempo real.
Informações Gerais
- ENDPOINT:
https://api.onyxpag.com - Versão: 2.0
- Formato: JSON
- Encoding: UTF-8
- Timeout: 30 segundos
PIX Instantâneo
Gere códigos PIX com QR Code em tempo real
Segurança
Autenticação via API Key com criptografia
Webhooks
Notificações automáticas de status
Relatórios
Consulte e liste todas as transações
Saques PIX
Solicite saques do seu saldo disponível
Autenticação
A API utiliza autenticação via Basic Authentication com suas chaves de API codificadas em Base64.
Obtenha suas Chaves
Acesse o painel administrativo para obter sua chave pública (pk_) e chave privada (sk_).
Combine as Chaves
Combine as chaves no formato: chave_publica:chave_privada
Codifique em Base64
Codifique a string combinada em Base64 e envie no header Authorization.
Formato de Autenticação
// 1. Combine suas chaves
const credentials = "pk_sua_chave_publica:sk_sua_chave_privada";
// 2. Codifique em Base64
const encodedCredentials = btoa(credentials);
// 3. Use no header Authorization
const headers = {
"Authorization": `Basic ${encodedCredentials}`,
"Content-Type": "application/json"
};
Headers Obrigatórios
Authorization: Basic cGtfc3VhX2NoYXZlX3B1YmxpY2E6c2tfc3VhX2NoYXZlX3ByaXZhZGE=
Content-Type: application/json
Exemplo Prático
Se suas chaves forem:
- Chave Pública:
pk_test_123456 - Chave Privada:
sk_test_789012
A string para codificar seria: pk_test_123456:sk_test_789012
Criar Pagamento
Endpoint para criar uma nova transação PIX.
https://api.onyxpag.com
Parâmetros da Requisição
| Campo | Tipo | Descrição |
|---|---|---|
amount |
number | Valor em reais (ex: 5.00) |
payment_method |
string | Método de pagamento ("pix") |
description |
string | Descrição do pagamento |
items |
array | Lista de itens da transação (opcional) |
customer |
object | Dados do cliente (name, email, document, phone) |
metadata |
object | Dados personalizados (order_id, product_id, etc.) |
postbackUrl |
string | URL para receber notificações de webhook |
tracking |
object | Dados de rastreamento UTM (opcional) |
source_url obrigatório |
string | Obrigatório. URL (http/https) da página onde a transação foi originada (seu checkout/oferta). Identifica a procedência da transação. |
source_label |
string | Rótulo descritivo da origem, ex.: nome da oferta/produto (opcional). |
split |
object | Configuração de split de pagamento (opcional) |
Estrutura do Campo Split (Opcional)
O campo split permite dividir o valor líquido da transação entre a empresa principal e uma empresa secundária. Útil para cenários de marketplace, parcerias ou revenda.
| Campo | Tipo | Descrição |
|---|---|---|
empresa_id |
integer | ID da empresa que receberá a parcela do split |
p_split |
number | Percentual do valor líquido que a empresa secundária receberá (0-100) |
Estrutura do Campo Tracking (Opcional)
O campo tracking permite enviar dados de rastreamento de campanhas e origem do tráfego. Todos os subcampos são opcionais.
| Campo | Tipo | Descrição |
|---|---|---|
src |
string | Origem do tráfego (ex: "google", "facebook") |
utm_source |
string | Fonte da campanha (ex: "google", "newsletter") |
utm_medium |
string | Meio da campanha (ex: "cpc", "email", "social") |
utm_campaign |
string | Nome da campanha (ex: "black_friday", "lancamento") |
utm_term |
string | Termo da campanha (palavras-chave) |
utm_content |
string | Conteúdo da campanha (variação do anúncio) |
sck |
string | SCK para Goodtrack (opcional) |
client_reference_id |
string | Client Reference ID para Goodtrack (opcional) |
xcode |
string | XCode para Goodtrack (opcional) |
Estrutura do Campo Items
O campo items é opcional e permite especificar detalhes dos produtos/serviços da transação. Se não fornecido, será criado automaticamente um item com base na descrição.
| Campo | Tipo | Descrição |
|---|---|---|
title |
string | Nome do item/produto |
unitPrice |
integer | Preço unitário em centavos (500 = R$ 5,00) |
quantity |
integer | Quantidade do item |
tangible |
boolean | Se é produto físico (true) ou digital (false) |
Exemplo de Items
"items": [
{
"title": "Plano Pro",
"unitPrice": 2590,
"quantity": 1,
"tangible": false
},
{
"title": "Taxa de Setup",
"unitPrice": 500,
"quantity": 1,
"tangible": false
}
]
items não for fornecido, será criado automaticamente um item com base no campo description e valor total da transação.
Rastreamento de Campanhas
O campo tracking é completamente opcional e permite rastrear a origem das transações. Útil para:
- Medir performance de campanhas de marketing
- Identificar canais de aquisição mais efetivos
- Integrar com ferramentas de analytics (Xtracky, Utmfy, etc.)
- Otimizar investimentos em publicidade
Nota: Todos os subcampos de tracking são opcionais. Você pode enviar apenas os dados que forem relevantes para sua análise.
Origem da Transação (source_url)
Obrigatório. Envie o campo source_url com a URL da página onde a transação foi originada (a página de checkout/oferta do seu site em que o comprador iniciou o pagamento). Necessário para:
- Rastrear de qual link/oferta cada venda veio
- Segurança e conciliação (identificar a origem real de cada transação)
- Suporte mais rápido em caso de disputa ou análise
Opcionalmente, envie source_label com um nome descritivo da origem (ex.: o nome da oferta). Se sua chamada partir do navegador do comprador, o cabeçalho Origin/Referer também é capturado automaticamente.
Exemplo de Requisição (cURL)
curl -X POST "https://api.onyxpag.com" \
-H "Authorization: Basic cGtfdGVzdF8xMjM0NTY6c2tfdGVzdF83ODkwMTI=" \
-H "Content-Type: application/json" \
-d '{
"amount": 25.90,
"payment_method": "pix",
"description": "Compra de produto XYZ",
"items": [
{
"title": "Plano Pro",
"unitPrice": 2590,
"quantity": 1,
"tangible": false
}
],
"customer": {
"name": "João Silva",
"email": "joao.silva@email.com",
"document": "123.456.789-00",
"phone": "11999999999"
},
"metadata": {
"order_id": "12345",
"product_id": "789"
},
"postbackUrl": "https://seu-site.com/webhook/pagamentos",
"tracking": {
"src": "google",
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "black_friday_2024",
"utm_term": "produto_xyz",
"utm_content": "anuncio_1",
"sck": "sck_123456",
"client_reference_id": "ref_789",
"xcode": "xcode_abc"
},
"source_url": "https://sua-loja.com/checkout/oferta-xyz",
"source_label": "Oferta XYZ - Checkout"
}'
Exemplo de Requisição com Split (cURL)
curl -X POST "https://api.onyxpag.com" \
-H "Authorization: Basic cGtfdGVzdF8xMjM0NTY6c2tfdGVzdF83ODkwMTI=" \
-H "Content-Type: application/json" \
-d '{
"amount": 100.00,
"payment_method": "pix",
"description": "Venda Marketplace - Produto ABC",
"items": [
{
"title": "Produto ABC",
"unitPrice": 10000,
"quantity": 1,
"tangible": true
}
],
"customer": {
"name": "Maria Souza",
"email": "maria@email.com",
"document": "987.654.321-00",
"phone": "11988887777"
},
"metadata": {
"order_id": "98765",
"seller_id": "123"
},
"postbackUrl": "https://seu-site.com/webhook/pagamentos",
"split": {
"empresa_id": 123,
"p_split": 30
}
}'
Exemplo de Resposta
{
"success": true,
"data": {
"id": "PXB_68E6C0A14DC3D_1759953057",
"status": "pendente",
"amount": 5,
"payment_method": "pix",
"pix_code": "00020126860014br.gov.bcb.pix2564pix.bancoe2.com.br/qr/v3/at/afa55845-f3f2-4275-8b31-e4abd...",
"pix_qr_code": "iVBORw0KGgoAAAANSUhEUgAAAOwAAADsCAAAAABSuBXIAAAEn0lEQVR42u2dQXLjSAwE+f9Pcy9zmIkVUVltXw...",
"external_ref": "12345",
"created_at": "2025-10-08 19:50:57",
"expires_at": "2025-10-09 19:50:57",
"customer": {
"name": "João Silva",
"email": "joao.silva@email.com",
"document": "123.456.789-00",
"phone": "11999999999"
},
"metadata": {
"order_id": "12345",
"product_id": "789"
},
"split": {
"empresa_id": 123,
"p_split": 30,
"valor_split": null,
"valor_principal": null,
"processado": false
}
}
}
Campos de Split na Resposta
Quando o split é configurado na requisição, a resposta inclui:
empresa_id- ID da empresa secundáriap_split- Percentual configuradovalor_split- Valor do split (calculado após pagamento)valor_principal- Valor da empresa principal (calculado após pagamento)processado- Indica se o split já foi processado na compensação
Status Possíveis da Transação
| Status | Descrição |
|---|---|
| pendente | Pagamento criado e aguardando confirmação do cliente |
| pago | Pagamento confirmado e aprovado com sucesso |
| reembolsado | Pagamento foi estornado/reembolsado ao cliente |
Nota: Você receberá notificações via webhook sempre que o status da transação mudar.
Criar Pagamento com Cartão de Crédito
Endpoint para criar uma nova transação com cartão de crédito.
https://api.onyxpag.com
Parâmetros da Requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amount |
number | Sim | Valor em reais (ex: 100.00) |
payment_method |
string | Sim | Deve ser "credit_card" |
installments |
integer | Sim | Número de parcelas (1 a 12) |
description |
string | Sim | Descrição do pagamento |
customer |
object | Sim | Dados do cliente |
card |
object | Sim | Dados do cartão de crédito |
postbackUrl |
string | Não | URL para receber notificações de webhook |
metadata |
object | Não | Dados personalizados (order_id, etc.) |
Estrutura do Campo Customer
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
string | Sim | Nome completo do cliente |
email |
string | Sim | Email do cliente |
document |
string | Sim | CPF ou CNPJ válido do cliente (apenas números). O documento é validado pelo dígito verificador — um CPF/CNPJ inválido faz a cobrança ser recusada. |
phone |
string | Não | Telefone com DDD (apenas números) |
Estrutura do Campo Card
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
number |
string | Sim | Número do cartão (16 dígitos) |
holder_name |
string | Sim | Nome impresso no cartão |
expiration_month |
string | Sim | Mês de validade (01-12) |
expiration_year |
string | Sim | Ano de validade (YYYY) |
cvv |
string | Sim | Código de segurança (3 ou 4 dígitos) |
Segurança
IMPORTANTE: Os dados do cartão são processados de forma segura e não são armazenados em nossos servidores. Utilize sempre HTTPS em suas requisições.
Exemplo de Requisição
curl -X POST "https://api.onyxpag.com" \
-H "Authorization: Basic cGtfdGVzdF8xMjM0NTY6c2tfdGVzdF83ODkwMTI=" \
-H "Content-Type: application/json" \
-d '{
"amount": 100.00,
"payment_method": "credit_card",
"installments": 3,
"description": "Compra de produto",
"customer": {
"name": "João Silva",
"email": "joao@example.com",
"document": "12345678900",
"phone": "11999999999"
},
"card": {
"number": "4111111111111111",
"holder_name": "JOAO SILVA",
"expiration_month": "12",
"expiration_year": "2026",
"cvv": "123"
},
"postbackUrl": "https://seusite.com/webhook",
"metadata": {
"order_id": "12345"
}
}'
Exemplo de Resposta (Sucesso)
{
"success": true,
"data": {
"id": "CC_695C9F3731CED_1767677751",
"status": "pago",
"amount": 10,
"payment_method": "credit_card",
"card_brand": "mastercard",
"card_last_digits": "4962",
"installments": 1,
"installment_amount": 10,
"authorization_code": "TEST480561",
"nsu": "NSU203601",
"tid": "TID157592201",
"created_at": "2026-01-06 13:35:51",
"customer": {
"name": "João Silva",
"email": "joao@example.com",
"document": "12345678900",
"phone": "11999999999"
},
"metadata": {
"order_id": "12345"
}
}
}
Exemplo de Resposta (Recusada)
{
"success": false,
"error": "Pagamento recusado",
"data": {
"id": "CC_695C9F3731CED_1767677752",
"status": "recusado",
"amount": 10,
"payment_method": "credit_card",
"card_brand": "mastercard",
"card_last_digits": "4962"
}
}
Status Possíveis da Transação com Cartão
| Status | Descrição |
|---|---|
| pendente | Transação criada e em processamento |
| pago | Transação aprovada pela adquirente |
| recusado | Transação recusada pela adquirente ou por análise de risco |
| reembolsado | Transação estornada/reembolsada ao cliente |
Nota: Os status são retornados diretamente da adquirente e padronizados pela API. Você receberá notificações via webhook quando o status mudar.
Consultar Pagamento
Consulte o status de uma transação específica.
/transactions/{id}
Parâmetros da URL
| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
string | ID único da transação (formato: PXB_xxxxx) |
Exemplo de Requisição
curl -X GET "https://api.onyxpag.com/transactions/PXB_68E6C0A14DC3D_1759953057" \
-H "Authorization: Basic cGtfdGVzdF8xMjM0NTY6c2tfdGVzdF83ODkwMTI=" \
-H "Content-Type: application/json"
Exemplo de Resposta
{
"success": true,
"data": {
"id": "PXB_68E6C0A14DC3D_1759953057",
"status": "pago",
"amount": 5,
"payment_method": "pix",
"created_at": "2025-10-08 19:50:57",
"paid_at": "2025-10-08 19:51:18",
"customer": {
"name": "João Silva",
"email": "joao.silva@email.com",
"document": "123.456.789-00",
"phone": "11999999999"
},
"metadata": {
"order_id": "12345",
"product_id": "789"
}
}
}
Aguardando pagamento
Pagamento confirmado
Transação cancelada
Verificar 3DS Secure
Verifique se o 3D Secure está ativo para sua empresa. O 3DS (3D Secure) é uma camada adicional de segurança para transações com cartão de crédito.
/?verificar_3ds
Headers Obrigatórios
| Header | Valor |
|---|---|
Authorization |
Basic {base64(chave_publica:chave_privada)} |
Resposta de Sucesso (200 OK)
{
"success": true,
"data": {
"empresa_id": 1,
"empresa_nome": "Minha Empresa LTDA",
"3ds_ativo": true,
"3ds_status": "ATIVO - Transações terão autenticação 3D Secure",
"configuracao_origem": "empresa"
}
}
Resposta - Empresa sem Adquirente Configurado
{
"success": true,
"data": {
"empresa_id": 1,
"empresa_nome": "Minha Empresa LTDA",
"3ds_ativo": false,
"mensagem": "Empresa não possui adquirente de cartão configurado"
}
}
Sobre o 3D Secure
- 3ds_ativo: Indica se o 3DS está ativo (true/false)
- 3ds_status: Mensagem descritiva do status atual
- configuracao_origem: Indica se a configuração vem da "empresa" ou "global"
- A configuração da empresa tem prioridade sobre a global
Valores Possíveis
| Campo | Valores | Descrição |
|---|---|---|
3ds_ativo |
true / false | Status final do 3DS para a empresa |
3ds_status |
String descritiva | "ATIVO - Transações terão autenticação 3D Secure" ou "INATIVO - Transações sem autenticação adicional" |
configuracao_origem |
"empresa" / "global" | Indica de onde vem a configuração aplicada |
Exemplo de Requisição
cURL
curl -X GET "https://api.onyxpag.com/?verificar_3ds" \
-H "Authorization: Basic cGtfbGl2ZV9hYmMxMjM6c2tfbGl2ZV94eXo3ODk=" \
-H "Content-Type: application/json"
JavaScript
const chavePublica = 'pk_live_abc123xyz';
const chavePrivada = 'sk_live_xyz789abc';
const credentials = btoa(`${chavePublica}:${chavePrivada}`);
fetch('https://api.onyxpag.com/?verificar_3ds', {
method: 'GET',
headers: {
'Authorization': `Basic ${credentials}`,
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => {
if (data.success && data.data['3ds_ativo']) {
console.log('3D Secure está ATIVO');
console.log('Adquirente:', data.data.adquirente.nome);
} else {
console.log('3D Secure está DESATIVADO');
}
})
.catch(error => console.error('Erro:', error));
PHP
$chavePublica = 'pk_live_abc123xyz';
$chavePrivada = 'sk_live_xyz789abc';
$credentials = base64_encode("$chavePublica:$chavePrivada");
$ch = curl_init('https://api.onyxpag.com/?verificar_3ds');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Basic ' . $credentials,
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
if ($data['success'] && $data['data']['3ds_ativo']) {
echo "3D Secure ATIVO\n";
echo "Adquirente: " . $data['data']['adquirente']['nome'] . "\n";
} else {
echo "3D Secure DESATIVADO\n";
}
Códigos de Erro
Credenciais de API inválidas
{
"error": "Invalid API credentials"
}
Erro interno do servidor
{
"error": "Internal server error: [mensagem]"
}
Consultar Empresa
Consulte os dados cadastrais da sua empresa autenticada. Esta rota retorna todas as informações da empresa, incluindo as chaves de API, mas não inclui o saldo.
/?empresa
Importante
Esta rota requer autenticação via Basic Auth. As credenciais devem ser válidas e a empresa deve estar com status ativo.
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Basic {base64} | Chaves codificadas em Base64 (public_key:private_key) |
Exemplo de Requisição
curl -X GET "https://api.onyxpag.com/?empresa" \
-H "Authorization: Basic cGtfdGVzdF8xMjM0NTY6c2tfdGVzdF83ODkwMTI=" \
-H "Content-Type: application/json"
Exemplo de Resposta (200 OK)
{
"success": true,
"data": {
"id": 117,
"codigo_cliente": "EMP252073",
"nome_empresa": "Minha Empresa LTDA",
"tipo_pessoa": "juridica",
"cnpj": "12.345.678/0001-90",
"cpf": null,
"email": "contato@minhaempresa.com",
"telefone": "11999999999",
"endereco": "Rua Exemplo, 123",
"cidade": "São Paulo",
"estado": "SP",
"cep": "01234-567",
"responsavel_nome": "João Silva",
"responsavel_email": "joao@minhaempresa.com",
"responsavel_telefone": "11988888888",
"chave_publica": "pk_live_abc123xyz",
"chave_privada": "sk_live_xyz789abc",
"status": "aprovado",
"created_at": "2025-01-01 10:00:00"
}
}
Campos Retornados
| Campo | Tipo | Descrição |
|---|---|---|
id |
integer | ID único da empresa |
codigo_cliente |
string | Código único do cliente (ex: EMP252073) |
nome_empresa |
string | Nome/Razão social da empresa |
tipo_pessoa |
string | Tipo de pessoa (fisica ou juridica) |
cnpj |
string|null | CNPJ da empresa (se tipo_pessoa = juridica) |
cpf |
string|null | CPF do responsável (se tipo_pessoa = fisica) |
email |
string | Email de contato da empresa |
telefone |
string | Telefone de contato |
endereco |
string | Endereço completo |
cidade |
string | Cidade |
estado |
string | Estado (UF) |
cep |
string | CEP |
responsavel_nome |
string | Nome do responsável pela empresa |
responsavel_email |
string | Email do responsável |
responsavel_telefone |
string | Telefone do responsável |
chave_publica |
string | Chave pública da API (pk_live_...) |
chave_privada |
string | Chave privada da API (sk_live_...) |
status |
string | Status da conta (aprovado, pendente, rejeitado) |
created_at |
datetime | Data de criação da conta |
Códigos de Erro
Header Authorization ausente ou inválido
{
"error": "Authorization header missing or invalid"
}
Credenciais de API inválidas ou empresa inativa
{
"error": "Invalid API credentials"
}
Erro interno do servidor
{
"error": "Internal server error: [mensagem]"
}
Exemplos de Integração
JavaScript (Fetch API)
const chavePublica = 'pk_live_abc123xyz';
const chavePrivada = 'sk_live_xyz789abc';
const credentials = btoa(`${chavePublica}:${chavePrivada}`);
fetch('https://api.onyxpag.com/?empresa', {
method: 'GET',
headers: {
'Authorization': `Basic ${credentials}`,
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => {
console.log('Dados da empresa:', data.data);
console.log('Nome:', data.data.nome_empresa);
console.log('Email:', data.data.email);
console.log('Código Cliente:', data.data.codigo_cliente);
})
.catch(error => console.error('Erro:', error));
PHP (cURL)
$chavePublica = 'pk_live_abc123xyz';
$chavePrivada = 'sk_live_xyz789abc';
$credentials = base64_encode("$chavePublica:$chavePrivada");
$ch = curl_init('https://api.onyxpag.com/?empresa');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Basic ' . $credentials,
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$data = json_decode($response, true);
echo "Nome: " . $data['data']['nome_empresa'] . "\n";
echo "Email: " . $data['data']['email'] . "\n";
echo "Código: " . $data['data']['codigo_cliente'] . "\n";
} else {
echo "Erro: " . $response . "\n";
}
Python (Requests)
import requests
import base64
chave_publica = 'pk_live_abc123xyz'
chave_privada = 'sk_live_xyz789abc'
credentials = base64.b64encode(f'{chave_publica}:{chave_privada}'.encode()).decode()
response = requests.get(
'https://api.onyxpag.com/?empresa',
headers={
'Authorization': f'Basic {credentials}',
'Content-Type': 'application/json'
}
)
if response.status_code == 200:
data = response.json()
print(f"Nome: {data['data']['nome_empresa']}")
print(f"Email: {data['data']['email']}")
print(f"Código: {data['data']['codigo_cliente']}")
else:
print(f"Erro: {response.text}")
Casos de Uso
- Validação de Credenciais: Verificar se as chaves de API estão corretas antes de processar transações
- Exibir Informações: Mostrar dados da empresa no painel do cliente
- Sincronização: Manter dados da empresa atualizados em sistemas externos
- Auditoria: Registrar qual empresa está fazendo requisições
Segurança
Importante: Esta rota retorna as chaves de API (chave_publica e chave_privada). Certifique-se de:
- Usar HTTPS em todas as requisições
- Não expor as chaves no frontend/cliente
- Armazenar as chaves de forma segura (variáveis de ambiente, cofres de senhas)
- Fazer requisições apenas do backend/servidor
- A empresa deve ter status "aprovado" para que a rota funcione
Listar Pagamentos
Liste todas as transações da sua conta com filtros opcionais.
transactions
Parâmetros de Query (Opcionais)
| Parâmetro | Tipo | Descrição |
|---|---|---|
page |
integer | Página (padrão: 1) |
limit |
integer | Itens por página (padrão: 20, máx: 100) |
status |
string | Filtrar por status |
start_date |
string | Data inicial (YYYY-MM-DD) |
end_date |
string | Data final (YYYY-MM-DD) |
Exemplo de Requisição
curl -X GET "https://api.onyxpag.com/transactions?page=1&limit=10&status=pago" \
-H "Authorization: Basic cGtfdGVzdF8xMjM0NTY6c2tfdGVzdF83ODkwMTI=" \
-H "Content-Type: application/json"
Exemplo de Resposta
{
"success": true,
"data": {
"transactions": [
{
"id": "PXB_68E6C0A14DC3D_1759953057",
"status": "pago",
"amount": 5,
"created_at": "2025-10-08 19:50:57",
"customer": {
"name": "João Silva",
"email": "joao.silva@email.com"
}
}
],
"pagination": {
"current_page": 1,
"total_pages": 5,
"total_items": 87,
"items_per_page": 20
}
}
}
Saques PIX
Solicite saques do seu saldo disponível via PIX de forma rápida e segura.
Como Funcionam os Saques
Os saques permitem transferir o saldo disponível da sua conta para uma chave PIX de sua escolha. O processo é simples e seguro:
- Solicite o saque informando valor e chave PIX
- O valor é reservado do seu saldo disponível
- Nossa equipe analisa e processa a solicitação
- O valor é transferido para sua chave PIX
Solicitar Saque
/withdrawal
Parâmetros da Requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amount |
number | Sim | Valor do saque em reais (ex: 100.50) |
pix_key_type |
string | Sim | Tipo da chave PIX (cpf, cnpj, email, telefone, aleatoria) |
pix_key |
string | Sim | Chave PIX para recebimento do valor |
documento_responsavel_pix |
string | Condicional | Obrigatório quando pix_key_type for diferente de "cpf". CPF do responsável pela chave PIX (apenas números) |
observacoes |
string | Não | Observações sobre o saque |
- Se a chave PIX for do tipo telefone, email, cnpj ou aleatoria, você DEVE informar o campo
documento_responsavel_pixcom o CPF do titular da chave PIX - O campo
documento_responsavel_pixdeve conter apenas números (sem pontos ou traços) - Se a chave PIX for do tipo cpf, o campo
documento_responsavel_pixé opcional (será usado o próprio CPF da chave) - Esta informação é necessária para o processamento correto do PIX pelo banco
Formatos de Chave PIX
| Tipo | Formato | Exemplo |
|---|---|---|
cpf |
000.000.000-00 | 123.456.789-00 |
cnpj |
00.000.000/0000-00 | 12.345.678/0001-90 |
email |
usuario@dominio.com | joao@exemplo.com |
telefone |
(00) 00000-0000 | (11) 99999-9999 |
aleatoria |
UUID | 550e8400-e29b-41d4-a716-446655440000 |
Exemplo de Requisição com CPF (cURL)
curl -X POST "https://api.onyxpag.com/withdrawal" \
-H "Authorization: Basic cGtfdGVzdF8xMjM0NTY6c2tfdGVzdF83ODkwMTI=" \
-H "Content-Type: application/json" \
-d '{
"amount": 20.00,
"pix_key_type": "cpf",
"pix_key": "12345678900",
"observacoes": "Saque via api"
}'
Exemplo de Requisição com Telefone (cURL)
Atenção: Quando usar chave PIX do tipo telefone, email, cnpj ou aleatoria, é obrigatório informar o CPF do responsável.
curl -X POST "https://api.onyxpag.com/withdrawal" \
-H "Authorization: Basic cGtfdGVzdF8xMjM0NTY6c2tfdGVzdF83ODkwMTI=" \
-H "Content-Type: application/json" \
-d '{
"amount": 50.00,
"pix_key_type": "telefone",
"pix_key": "11999999999",
"documento_responsavel_pix": "12345678900",
"observacoes": "Saque para telefone"
}'
Exemplo de Resposta
{
"success": true,
"message": "Withdrawal request created successfully",
"data": {
"id": 123,
"amount": 20.00,
"fee_amount": 0.00,
"net_amount": 20.00,
"pix_key_type": "cpf",
"pix_key": "000.000.000-00",
"status": "pendente",
"created_at": "2025-01-07 10:30:00",
"observacoes": "Saque via api"
}
}
Consultar Saque
/withdrawal?id={id}
Exemplo de Consulta
curl -X GET "https://api.onyxpag.com/withdrawal?id=123" \
-H "Authorization: Basic cGtfdGVzdF8xMjM0NTY6c2tfdGVzdF83ODkwMTI=" \
-H "Content-Type: application/json"
Listar Saques
/withdrawal?list=true
Parâmetros de Query (Opcionais)
| Parâmetro | Tipo | Descrição |
|---|---|---|
limit |
integer | Itens por página (padrão: 50, máx: 100) |
offset |
integer | Offset para paginação (padrão: 0) |
status |
string | Filtrar por status (pendente, aprovado, cancelado) |
Status dos Saques
Aguardando análise
Aprovado para pagamento
Cancelado
- O valor solicitado é imediatamente reservado do seu saldo disponível
- Saques são processados em horário comercial (dias úteis)
- Podem ser aplicadas taxas conforme configuração da conta
- Verifique sempre os limites mínimo e máximo de saque
Resumo da Conta
/withdrawal
Retorna um resumo dos saques da sua conta:
{
"success": true,
"data": {
"total_saques": 15,
"valor_pendente": 500.00,
"valor_aprovado": 750.00,
"valor_concluido": 2350.00,
"valor_cancelado": 0.00
}
}
Webhooks e PostbackURL
Receba notificações automáticas sobre mudanças de status das transações.
Como Funcionam
Quando o status de uma transação muda, enviamos uma requisição POST para a URL configurada no campo postbackUrl.
Eventos Enviados
| Evento | Descrição | Quando é disparado |
|---|---|---|
transaction.created |
Quando uma nova transação é criada | Imediatamente após a criação da transação |
transaction.paid |
Quando uma transação é paga com sucesso | Quando o pagamento é confirmado pelo gateway |
transaction.failed |
Quando uma transação falha | Quando o pagamento é recusado ou falha por qualquer motivo |
transaction.expired |
Quando uma transação expira | Quando o prazo para pagamento é excedido |
transaction.refunded |
Quando uma transação é estornada | Quando um reembolso é processado (total ou parcial) |
Estrutura do Webhook
{
"event": "transaction.paid",
"timestamp": "2025-01-07T08:51:18-03:00",
"data": {
"transaction_id": "PXB_68E4FE71E4AF4_1759837809",
"external_id": "12345",
"amount": "25.90",
"fee_amount": "1.30",
"net_amount": "24.60",
"currency": "BRL",
"payment_method": "pix",
"status": "paid",
"created_at": "2025-01-07T08:50:11-03:00",
"updated_at": "2025-01-07T08:51:18-03:00",
"paid_at": "2025-01-07T08:51:18-03:00",
"customer": {
"name": "João Silva",
"email": "joao.silva@email.com",
"phone": "11999999999",
"document": "12345678900"
},
"items": [
{
"title": "Nome do produto",
"quantity": 1,
"unit_price": "25.90"
}
]
}
}
Validação de Webhooks
Dicas de Segurança
- Sempre valide a origem da requisição
- Use HTTPS na sua URL de webhook
- Implemente retry logic para falhas temporárias
- Responda com status 200 para confirmar recebimento
Exemplo de Implementação
<?php
// webhook.php
$input = file_get_contents('php://input');
$data = json_decode($input, true);
if ($data['event'] === 'transaction.paid') {
$transactionId = $data['data']['transaction_id'];
$amount = $data['data']['amount'];
// Processar pagamento confirmado
updateOrderStatus($transactionId, 'paid');
// Responder com sucesso
http_response_code(200);
echo json_encode(['status' => 'received']);
}
?>
Integre com IA
Cole o prompt abaixo em qualquer IA (ChatGPT, Claude, Gemini, etc.) e peça para ela gerar o código de integração completo na linguagem que você preferir.
Como usar
- Copie o prompt abaixo clicando em Copiar Prompt
- Abra o ChatGPT, Claude ou outra IA de sua preferência
- Cole o prompt e adicione ao final: "Me ajude com [sua linguagem/framework]"
- A IA irá gerar o código completo de integração para você
Prompt Completo para Gerar PIX e Consultar Transação
Qualquer Linguagem
PHP, Python, Node.js, Java, Go, C# e muito mais
Código Pronto
A IA gera código funcional pronto para usar no seu projeto
Personalizável
Peça ajustes, tratamento de erros e qualquer customização