Documentação da API Voltar ao painel

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.

1

Obtenha suas Chaves

Acesse o painel administrativo para obter sua chave pública (pk_) e chave privada (sk_).

2

Combine as Chaves

Combine as chaves no formato: chave_publica:chave_privada

3

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
Importante: Mantenha suas chaves seguras! A chave privada (sk_) nunca deve ser exposta no frontend ou em repositórios públicos.

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.

POST 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
  }
]
Importante: Se o campo 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ária
  • p_split - Percentual configurado
  • valor_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.

POST 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.

GET /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"
    }
  }
}
pendente

Aguardando pagamento

cancelado

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.

GET /?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

401 Unauthorized

Credenciais de API inválidas

{
  "error": "Invalid API credentials"
}
500 Internal Server Error

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.

GET /?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

401 Unauthorized

Header Authorization ausente ou inválido

{
  "error": "Authorization header missing or invalid"
}
401 Unauthorized

Credenciais de API inválidas ou empresa inativa

{
  "error": "Invalid API credentials"
}
500 Internal Server Error

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.

GET 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

POST /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
Importante sobre CPF:
  • Se a chave PIX for do tipo telefone, email, cnpj ou aleatoria, você DEVE informar o campo documento_responsavel_pix com o CPF do titular da chave PIX
  • O campo documento_responsavel_pix deve 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

GET /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

GET /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

pendente

Aguardando análise

aprovado

Aprovado para pagamento

cancelado

Cancelado

Importante:
  • 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

GET /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

Prompt para IA — Integração Onyxpag
Você é um especialista em integração de APIs de pagamento. Preciso integrar a API Onyxpag Hub na minha aplicação.

## Informações da API

Base URL: https://api.onyxpag.com
Autenticação: Basic Auth — combinar chave_publica:chave_privada e codificar em Base64
Content-Type: application/json

---

## 1. GERAR PIX

Método: POST https://api.onyxpag.com

Headers:
  Authorization: Basic {base64(chave_publica:chave_privada)}
  Content-Type: application/json

Body (JSON):
{
  "amount": 25.90,
  "payment_method": "pix",
  "source_url": "https://sua-loja.com/checkout/oferta-xyz",
  "description": "Descrição do pagamento",
  "items": [
    {
      "title": "Nome do Produto",
      "unitPrice": 2590,
      "quantity": 1,
      "tangible": false
    }
  ],
  "customer": {
    "name": "Nome do Cliente",
    "email": "cliente@email.com",
    "document": "000.000.000-00",
    "phone": "11999999999"
  },
  "postbackUrl": "https://seu-site.com/webhook",
  "metadata": {
    "order_id": "pedido_123"
  }
}

IMPORTANTE — o campo "source_url" é OBRIGATÓRIO: URL (http/https) da página onde a transação foi originada (o checkout/oferta do cliente). Serve para identificar a procedência da venda (segurança, conciliação e suporte em disputas). O código gerado DEVE sempre enviar a URL real da página de checkout em "source_url" — nunca deixe fixo/vazio. Opcionalmente, envie também "source_label" (string) descrevendo a oferta/produto.

Resposta de Sucesso (HTTP 201):
{
  "success": true,
  "data": {
    "id": "PXB_68E4FE71E4AF4_1759837809",
    "status": "pendente",
    "amount": "25.90",
    "payment_method": "pix",
    "pix_code": "00020126570014br.gov.bcb.pix...",
    "pix_qr_code": "data:image/png;base64,...",
    "external_ref": "pedido_123",
    "created_at": "2025-01-07 08:50:11",
    "expires_at": "2025-01-08 08:50:11"
  }
}

---

## 2. CONSULTAR TRANSAÇÃO PIX (verificar se foi pago)

Método: GET https://api.onyxpag.com?id={transaction_id}

Headers:
  Authorization: Basic {base64(chave_publica:chave_privada)}

Resposta de Sucesso:
{
  "success": true,
  "data": {
    "id": "PXB_68E4FE71E4AF4_1759837809",
    "status": "pago",
    "amount": "25.90",
    "payment_method": "pix",
    "customer": {
      "name": "Nome do Cliente",
      "email": "cliente@email.com"
    },
    "created_at": "2025-01-07 08:50:11",
    "paid_at": "2025-01-07 08:51:18"
  }
}

Status possíveis da transação:
  - "pendente"  → Aguardando pagamento
  - "pago"      → Pagamento confirmado
  - "expirado"  → PIX expirou sem pagamento
  - "cancelado" → Transação cancelada

---

## 3. WEBHOOK (Notificação automática quando pago)

Ao enviar "postbackUrl" na criação do PIX, o servidor notificará via POST quando o pagamento for confirmado:

{
  "event": "transaction.paid",
  "timestamp": "2025-01-07T08:51:18-03:00",
  "data": {
    "transaction_id": "PXB_68E4FE71E4AF4_1759837809",
    "external_id": "seu_order_id",
    "status": "paid",
    "amount": "25.90",
    "payment_method": "pix",
    "customer": {
      "name": "Nome do Cliente",
      "email": "cliente@email.com",
      "phone": "11999999999",
      "document": "12345678900"
    },
    "items": [
      { "title": "Nome do produto", "quantity": 1, "unit_price": "25.90" }
    ]
  }
}

---

Com base nessas informações, me ajude a implementar a integração completa em: [INFORME AQUI SUA LINGUAGEM/FRAMEWORK, ex: PHP, Node.js, Python, React, etc.]

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