
Documentação completa para integrar soluções de pagamento com transações PIX e gerenciamento de cashouts. Construída para desenvolvedores que buscam simplicidade e robustez.
Configure sua integração em minutos com nossos exemplos práticos e guias detalhados.
Métodos HTTP padrão com corpos de requisição e resposta em JSON limpo e consistente.
Notificações em tempo real para atualizações de status de transações e cashouts.
Para começar a usar nossa API de Pagamentos, siga estes passos:
Nossa API está disponível em ambiente de produção para processar pagamentos reais.
Todas as requisições da API devem ser feitas para o seguinte endpoint base:
https://api.connectpay.vchttps://api.connectpay.vc/v1/transactions.A API utiliza autenticação por chave de API através de cabeçalhos de requisição.
api-secret: SEU_API_SECRET_AQUIcurl -X GET "https://api.connectpay.vc/v1/account-info" \
-H "api-secret: seu_api_secret_aqui" \
-H "Content-Type: application/json"const response = await fetch('https://api.connectpay.vc/v1/account-info', {
headers: {
'api-secret': 'seu_api_secret_aqui',
'Content-Type': 'application/json'
}
});Recupera informações sobre a conta associada à chave de API.
https://api.connectpay.vc/v1/account-info{
"email": "joao.silva@exemplo.com",
"name": "João Silva",
"document": "12345678901"
}| Parâmetro | Tipo | Descrição |
|---|---|---|
email | string | Endereço de email da conta |
name | string | Nome do titular da conta |
document | string | Número do documento da conta (CPF/CNPJ) |
Recupera detalhes de uma transação previamente criada usando seu ID único.
https://api.connectpay.vc/v1/transactions/{transaction_id}| Parâmetro | Tipo | Descrição |
|---|---|---|
transaction_idobrigatório | string | Identificador único da transação que deseja consultar |
curl -X GET "https://api.connectpay.vc/v1/transactions/c22dc7e1-8b10-4580-9dc4-ebf78ceca475" \
-H "api-secret: seu_api_secret_aqui" \
-H "Content-Type: application/json"{
"id": "c22dc7e1-8b10-4580-9dc4-ebf78ceca475",
"external_id": "pedido_12345",
"status": "PENDING",
"amount": 100.50,
"payment_method": "PIX",
"customer": {
"name": "João Silva",
"email": "joao.silva@exemplo.com",
"phone": "11999999999",
"document": "12345678901",
"address": {
"cep": "01234567",
"city": "São Paulo",
"state": "SP",
"number": "123",
"street": "Rua das Flores",
"complement": "Apt 45",
"neighborhood": "Centro"
}
},
"created_at": "2024-01-15T10:30:00.000Z"
}| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | Identificador único da transação |
external_id | string | Seu ID de referência externa |
status | TransactionStatus | Status atual da transação |
amount | number | Valor da transação em BRL |
payment_method | string | Método de pagamento utilizado |
customer | Customer | Objeto com informações do cliente |
created_at | string | Timestamp de criação da transação (ISO 8601) |
Cria uma nova transação de pagamento no sistema com todos os detalhes necessários.
https://api.connectpay.vc/v1/transactionsinterface CreateTransactionRequest {
external_id?: string;
total_amount: number;
payment_method: "PIX";
webhook_url?: string;
items: TransactionItem[];
ip?: string;
customer: Customer;
}
interface TransactionItem {
id: string;
title: string;
description?: string;
price: number;
quantity: number;
is_physical: boolean;
}
interface Customer {
name: string;
email: string;
phone: string;
document_type: "CPF" | "CNPJ";
document: string;
}{
"external_id": "pedido_12345",
"total_amount": 100.50,
"payment_method": "PIX",
"webhook_url": "https://sua-api.com/webhooks/transactions",
"items": [
{
"id": "item_001",
"title": "Assinatura Premium",
"description": "Assinatura mensal premium",
"price": 100.50,
"quantity": 1,
"is_physical": false
}
],
"ip": "192.168.1.1",
"customer": {
"name": "João Silva",
"email": "joao.silva@exemplo.com",
"phone": "11999999999",
"document_type": "CPF",
"document": "12345678901"
}
}| Parâmetro | Tipo | Descrição |
|---|---|---|
external_id | string | Sua referência única para esta transação |
total_amountobrigatório | number | Valor total da transação em BRL |
payment_methodobrigatório | string | Método de pagamento (atualmente apenas 'PIX') |
webhook_url | string | URL para receber notificações de mudança de status |
itemsobrigatório | TransactionItem[] | Array de itens na transação |
ip | string | Endereço IP do cliente |
customerobrigatório | Customer | Informações do cliente |
{
"id": "c22dc7e1-8b10-4580-9dc4-ebf78ceca475",
"external_id": "pedido_12345",
"status": "PENDING",
"total_value": 100.50,
"customer": {
"email": "joao.silva@exemplo.com",
"name": "João Silva"
},
"payment_method": "PIX",
"pix": {
"payload": "00020126580014br.gov.bcb.pix..."
},
"hasError": false
}pix.payload contém o código PIX que deve ser apresentado ao cliente para pagamento. Este código pode ser usado para gerar um QR Code ou ser copiado diretamente.Cria uma nova transação de cashout (saque) utilizando PIX para transferir fundos.
https://api.connectpay.vc/v1/cashoutinterface CreateCashoutRequest {
external_id?: string;
pix_key: string;
pix_type: "CPF" | "CNPJ" | "EMAIL" | "PHONE" | "RANDOM";
amount: number;
webhook_url?: string;
}{
"external_id": "saque_12345",
"pix_key": "joao.silva@exemplo.com",
"pix_type": "EMAIL",
"amount": 250.00,
"webhook_url": "https://sua-api.com/webhooks/cashouts"
}| Parâmetro | Tipo | Descrição |
|---|---|---|
external_id | string | Sua referência única para este cashout |
pix_keyobrigatório | string | Chave PIX para o destino do cashout |
pix_typeobrigatório | PixKeyType | Tipo da chave PIX sendo utilizada |
amountobrigatório | number | Valor do cashout em BRL (mínimo 0.01) |
webhook_url | string | URL para receber notificações de status do cashout |
11 dígitos numéricos
1234567890114 dígitos numéricos
12345678000195Endereço de email válido
usuario@exemplo.com+55 seguido de 10-11 dígitos
+551199999999932-36 caracteres alfanuméricos
123e4567-e12b-12d3-a456-426614174000pix_type. Chaves inválidas resultarão em erro 400.{
"success": true,
"message": "Cashout criado com sucesso",
"data": {
"withdraw_id": "bb0fb3cb-015f-4604-8532-133a78c0c3e1",
"cashout_id": "bb0fb3cb-015f-4604-8532-133a78c0c3e1",
"is_pending": true
}
}Consulta o comprovante (receipt) de um cashout específico pelo ID, retornando um HTML formatado.
https://api.connectpay.vc/v1/cashout/receipt/:cashoutId| Parâmetro | Tipo | Descrição |
|---|---|---|
api-secretobrigatório | string | Chave secreta da API do usuário |
| Parâmetro | Tipo | Descrição |
|---|---|---|
cashoutIdobrigatório | string | ID único do cashout (UUID) |
curl -X GET "https://api.connectpay.vc/v1/cashout/receipt/bb0fb3cb-015f-4604-8532-133a78c0c3e1" \
-H "api-secret: sua-api-secret-aqui" \
-H "Content-Type: application/json"<!DOCTYPE html>
<html>
<head>
<title>Comprovante de Cashout</title>
<style>
/* Estilos do comprovante */
</style>
</head>
<body>
<div class="receipt">
<h1>Comprovante de Saque</h1>
<p><strong>ID:</strong> bb0fb3cb-015f-4604-8532-133a78c0c3e1</p>
<p><strong>Valor:</strong> R$ 250.00</p>
<p><strong>Status:</strong> approved</p>
<p><strong>Data:</strong> 2024-01-15T10:30:00.000Z</p>
<!-- Mais informações do cashout -->
</div>
</body>
</html>"API Secret não fornecida"
"Você não tem permissão para acessar este cashout"
"Cashout não encontrado"
const axios = require('axios');
const API_SECRET = 'sua-api-secret-aqui';
const BASE_URL = 'https://api.example.com/v1';
async function consultarCashoutReceipt(cashoutId) {
try {
const response = await axios.get(
`${BASE_URL}/v1/cashout/receipt/${cashoutId}`,
{
headers: {
'api-secret': API_SECRET
},
responseType: 'text' // Importante: receber como texto para HTML
}
);
console.log('Receipt HTML:', response.data);
return response.data; // Retorna o HTML do comprovante
} catch (error) {
if (error.response) {
console.error('Erro:', error.response.data.message || error.response.data);
} else {
console.error('Erro na requisição:', error.message);
}
throw error;
}
}
// Uso
consultarCashoutReceipt('bb0fb3cb-015f-4604-8532-133a78c0c3e1');Cria uma nova fatura interna para cobrança entre contas.
https://api.connectpay.vc/v1/internal-invoice| Parâmetro | Tipo | Descrição |
|---|---|---|
api-secretobrigatório | string | Chave secreta da API do usuário |
Content-Typeobrigatório | string | application/json |
interface CreateInternalInvoiceRequest {
amount: number; // Obrigatório - número, mínimo 0.01, máximo 2 casas decimais
description?: string; // Opcional - string, máximo 500 caracteres
due_date?: string; // Opcional - string ISO 8601 (data futura)
webhook_url?: string; // Opcional - URL válida, máximo 500 caracteres
receiver_name?: string; // Opcional - nome fictício do beneficiário da fatura (exibido na fatura)
}{
"amount": 100.50,
"description": "Descrição",
"due_date": "2026-02-15T10:00:00Z",
"webhook_url": "https://exemplo.com/webhook",
"receiver_name": "Nome do Beneficiário"
}| Parâmetro | Tipo | Descrição |
|---|---|---|
amountobrigatório | number | Valor da cobrança (mín. 0.01, máx. 2 casas decimais) |
description | string | Descrição da fatura (máx. 500 caracteres) |
due_date | string | Data de vencimento em formato ISO 8601 (deve ser uma data futura) |
webhook_url | string | URL para receber notificações de atualização da fatura (máx. 500 caracteres) |
receiver_name | string | Nome fictício do beneficiário da fatura (exibido na fatura para o pagador) |
curl -X POST "https://api.connectpay.vc/v1/internal-invoice" \
-H "api-secret: sua-api-secret-aqui" \
-H "Content-Type: application/json" \
-d '{
"amount": 100.50,
"description": "Descrição",
"due_date": "2026-02-15T10:00:00Z",
"webhook_url": "https://exemplo.com/webhook",
"receiver_name": "Nome do Beneficiário"
}'{
"hasError": false,
"message": "Cobrança criada com sucesso",
"data": {
"id": "uuid-da-cobranca",
"code": "ABC12345",
"invoice_url": "https://dashboard.url/finance?invoice_code=ABC12345",
"invoice_qrcode_base64": "iVBORw0KG...",
"guide": "1. Acesse o painel ConnectPay\n\n2. Vá até a aba Finanças\n...",
"amount": 100.50,
"fee": 2.50,
"net_amount": 98.00,
"status": "PENDING",
"description": "Descrição",
"due_date": "2026-02-15T10:00:00Z",
"webhook_url": "https://exemplo.com/webhook",
"created_at": "2026-01-28T10:00:00Z"
}
}| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | ID único da cobrança (UUID) |
code | string | Código copia e cola para o usuúario identificar a fatura no painel |
invoice_url | string | URL para acesso à fatura no dashboard |
invoice_qrcode_base64 | string | QR Code da fatura em formato base64 |
guide | string | Guia de instruções para pagamento |
amount | number | Valor bruto da cobrança |
fee | number | Taxa calculada automaticamente |
net_amount | number | Valor líquido (amount - fee) |
status | string | Status da fatura (PENDING, PAID, CANCELLED, EXPIRED) |
description | string | Descrição da fatura |
due_date | string | Data de vencimento (ISO 8601) |
webhook_url | string | URL configurada para webhook |
created_at | string | Data e hora de criação (ISO 8601) |
Possíveis mensagens:
"API Secret não fornecida"
Possíveis mensagens:
"Usuário não encontrado"
const axios = require('axios');
const API_SECRET = 'sua-api-secret-aqui';
const BASE_URL = 'https://api.example.com/v1';
async function criarFaturaInterna(amount, description, dueDate, webhookUrl, receiverName) {
try {
const response = await axios.post(
`${BASE_URL}/internal-invoice`,
{
amount: amount,
description: description,
due_date: dueDate,
webhook_url: webhookUrl,
receiver_name: receiverName
},
{
headers: {
'api-secret': API_SECRET,
'Content-Type': 'application/json'
}
}
);
console.log('Fatura criada:', response.data);
return response.data.data;
} catch (error) {
if (error.response) {
console.error('Erro:', error.response.data.message);
} else {
console.error('Erro na requisição:', error.message);
}
throw error;
}
}
// Uso
criarFaturaInterna(100.50, "Descrição", "2026-02-15T10:00:00Z", "https://exemplo.com/webhook", "Nome do Beneficiário");Consulta os detalhes de uma fatura interna específica pelo ID.
https://api.connectpay.vc/v1/internal-invoice/:id| Parâmetro | Tipo | Descrição |
|---|---|---|
api-secretobrigatório | string | Chave secreta da API do usuário |
| Parâmetro | Tipo | Descrição |
|---|---|---|
idobrigatório | string | ID da cobrança (UUID) |
curl -X GET "https://api.connectpay.vc/v1/internal-invoice/uuid-da-cobranca" \
-H "api-secret: sua-api-secret-aqui" \
-H "Content-Type: application/json"{
"hasError": false,
"data": {
"id": "uuid-da-cobranca",
"code": "ABC12345",
"amount": 100.50,
"fee": 2.50,
"net_amount": 98.00,
"status": "PENDING",
"description": "Descrição",
"due_date": "2026-02-15T10:00:00Z",
"created_at": "2026-01-28T10:00:00Z",
"updated_at": "2026-01-28T10:00:00Z",
"is_expired": false,
"receiver": {
"name": "Nome do Recebedor",
"document": "123.456.789-00",
"receiver_type": "PF"
}
}
}| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | ID único da cobrança (UUID) |
code | string | Código copia e cola para o usuúario identificar a fatura no painel |
amount | number | Valor bruto da cobrança |
fee | number | Taxa calculada automaticamente |
net_amount | number | Valor líquido (amount - fee) |
status | string | Status da fatura (PENDING, PAID, CANCELLED, EXPIRED) |
description | string | Descrição da fatura |
due_date | string | Data de vencimento (ISO 8601) |
created_at | string | Data e hora de criação (ISO 8601) |
updated_at | string | Data e hora da última atualização (ISO 8601) |
is_expired | boolean | Indica se a fatura está expirada (true se due_date passou e status é PENDING) |
receiver | object | Informações do recebedor |
receiver.name | string | Nome do recebedor |
receiver.document | string | CPF ou CNPJ formatado |
receiver.receiver_type | string | Tipo do recebedor (PF | PJ | null) |
"API Secret não fornecida"
"Transferências internas estão desabilitadas"
Possíveis mensagens:
const axios = require('axios');
const API_SECRET = 'sua-api-secret-aqui';
const BASE_URL = 'https://api.example.com/v1';
async function buscarFaturaInterna(invoiceId) {
try {
const response = await axios.get(
`${BASE_URL}/internal-invoice/${invoiceId}`,
{
headers: {
'api-secret': API_SECRET
}
}
);
console.log('Fatura encontrada:', response.data);
return response.data.data;
} catch (error) {
if (error.response) {
console.error('Erro:', error.response.data.message);
} else {
console.error('Erro na requisição:', error.message);
}
throw error;
}
}
// Uso
buscarFaturaInterna('uuid-da-cobranca');Cria uma nova transferência interna entre contas.
https://api.connectpay.vc/v1/internal-transfer| Parâmetro | Tipo | Descrição |
|---|---|---|
api-secretobrigatório | string | Chave secreta da API do usuário |
Idempotency-Keyobrigatório | string | Chave única para garantir idempotência (obrigatório) |
Content-Typeobrigatório | string | application/json |
interface CreateInternalTransferRequest {
to_email: string;
amount: number;
idempotency_key: string;
}{
"to_email": "destinatario@example.com",
"amount": 100.50
}Idempotency-Key é obrigatório para todas as requisições. Você pode enviar o idempotency_key no body ou no header, mas é recomendado usar o header.| Parâmetro | Tipo | Descrição |
|---|---|---|
to_emailobrigatório | string | Email do destinatário (máx. 255 caracteres) |
amountobrigatório | number | Valor da transferência (mín. 0.01, máx. 2 casas decimais) |
idempotency_keyobrigatório | string | Chave única para evitar duplicações (obrigatório, pode ser enviado no header Idempotency-Key) |
curl -X POST "https://api.connectpay.vc/v1/internal-transfer" \
-H "api-secret: sua-api-secret-aqui" \
-H "Idempotency-Key: unique-key-12345" \
-H "Content-Type: application/json" \
-d '{
"to_email": "destinatario@example.com",
"amount": 100.50
}'{
"hasError": false,
"message": "Transferência interna realizada com sucesso",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"from_account_id": "user-123",
"to_account_id": "user-456",
"amount": 100.50,
"fee": 2.50,
"net_amount": 100.50,
"status": "COMPLETED",
"created_at": "2024-01-15T10:30:00.000Z"
}
}| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | ID único da transferência |
from_account_id | string | ID da conta remetente |
to_account_id | string | ID da conta destinatária |
amount | number | Valor bruto transferido |
fee | number | Taxa cobrada na transferência |
net_amount | number | Valor líquido creditado ao destinatário |
status | string | Status da transferência (COMPLETED, PENDING, FAILED) |
created_at | string | Data e hora de criação (ISO 8601) |
Possíveis mensagens:
"API Secret não fornecida"
Possíveis mensagens:
"Usuário não encontrado"
"Uma transferência já está sendo processada. Por favor, aguarde."
const axios = require('axios');
const crypto = require('crypto');
const API_SECRET = 'sua-api-secret-aqui';
const BASE_URL = 'https://api.example.com/v1';
async function criarTransferencia(toEmail, amount) {
const idempotencyKey = crypto.randomUUID();
try {
const response = await axios.post(
`${BASE_URL}/internal-transfer`,
{
to_email: toEmail,
amount: amount
},
{
headers: {
'api-secret': API_SECRET,
'Idempotency-Key': idempotencyKey,
'Content-Type': 'application/json'
}
}
);
console.log('Transferência criada:', response.data);
return response.data.data;
} catch (error) {
if (error.response) {
console.error('Erro:', error.response.data.message);
} else {
console.error('Erro na requisição:', error.message);
}
throw error;
}
}
// Uso
criarTransferencia('destinatario@example.com', 100.50);Consulta os detalhes de uma transferência interna específica pelo ID.
https://api.connectpay.vc/v1/internal-transfer/:transfer_id| Parâmetro | Tipo | Descrição |
|---|---|---|
api-secretobrigatório | string | Chave secreta da API do usuário |
| Parâmetro | Tipo | Descrição |
|---|---|---|
transfer_idobrigatório | string | ID único da transferência (UUID) |
curl -X GET "https://api.connectpay.vc/v1/internal-transfer/550e8400-e29b-41d4-a716-446655440000" \
-H "api-secret: sua-api-secret-aqui" \
-H "Content-Type: application/json"{
"hasError": false,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"from_account_id": "user-123",
"to_account_id": "user-456",
"to_account_email": "destinatario@example.com",
"amount": 100.50,
"fee": 2.50,
"net_amount": 100.50,
"status": "COMPLETED",
"metadata": {},
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-15T10:30:00.000Z"
}
}| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | ID único da transferência |
from_account_id | string | ID da conta remetente |
to_account_id | string | ID da conta destinatária |
to_account_email | string | Email da conta destinatária |
amount | number | Valor bruto transferido |
fee | number | Taxa cobrada na transferência |
net_amount | number | Valor líquido creditado ao destinatário |
status | string | Status da transferência (COMPLETED, PENDING, FAILED) |
metadata | object | Metadados adicionais da transferência |
created_at | string | Data e hora de criação (ISO 8601) |
updated_at | string | Data e hora da última atualização (ISO 8601) |
"ID da transferência é obrigatório"
"API Secret não fornecida"
"Você não tem permissão para acessar esta transferência"
Nota: Você só pode consultar transferências que você criou (onde você é o remetente).
Possíveis mensagens:
const axios = require('axios');
const API_SECRET = 'sua-api-secret-aqui';
const BASE_URL = 'https://api.example.com/v1';
async function consultarTransferencia(transferId) {
try {
const response = await axios.get(
`${BASE_URL}/internal-transfer/${transferId}`,
{
headers: {
'api-secret': API_SECRET
}
}
);
console.log('Transferência encontrada:', response.data);
return response.data.data;
} catch (error) {
if (error.response) {
console.error('Erro:', error.response.data.message);
} else {
console.error('Erro na requisição:', error.message);
}
throw error;
}
}
// Uso
consultarTransferencia('550e8400-e29b-41d4-a716-446655440000');Cria uma nova transação de depósito em criptomoedas.
https://api.connectpay.vc/v1/crypto/deposits| Parâmetro | Tipo | Descrição |
|---|---|---|
api-secretobrigatório | string | Chave secreta da API do usuário |
idempotency-key | string | Chave única para garantir idempotência (opcional) |
interface CreateCryptoDepositRequest {
asset: "BTC" | "USDT" | "USDC" | "ETH";
chain: "TRC20" | "ERC20" | "BEP20" | "BTC" | "POLYGON";
amount: string;
webhook_url?: string;
}{
"asset": "USDT",
"chain": "ERC20",
"amount": "100.50",
"webhook_url": "https://seu-servidor.com/webhook"
}| Parâmetro | Tipo | Descrição |
|---|---|---|
assetobrigatório | string | Moeda. Valores aceitos: BTC, USDT, USDC, ETH |
chainobrigatório | string | Rede blockchain. Valores aceitos: TRC20, ERC20, BEP20, BTC, POLYGON |
amountobrigatório | string | Quantidade a depositar. Número positivo maior que zero, até 18 casas decimais |
webhook_url | string | URL para receber notificações sobre atualizações da transação (máximo 255 caracteres) |
curl -X POST "https://api.connectpay.vc/v1/crypto/deposits" \
-H "api-secret: sua-api-secret-aqui" \
-H "idempotency-key: unique-key-12345" \
-H "Content-Type: application/json" \
-d '{
"asset": "USDT",
"chain": "ERC20",
"amount": "100.50",
"webhook_url": "https://seu-servidor.com/webhook"
}'{
"hasError": false,
"data": {
"transaction_id": "550e8400-e29b-41d4-a716-446655440000",
"asset": "USDT",
"chain": "ERC20",
"amount": "100.50",
"net_amount": "99.50",
"fee": "1.00",
"deposit_address": "0x742d35Cc1D1B2F48dE3D7d8c53c4E7Db0C4bC123",
"qr_code": "data:image/png;base64,iVBORw0KG...",
"expires_at": "2024-01-15T10:30:00.000Z",
"status": "PENDING_CONFIRMATION",
"created_at": "2024-01-15T09:30:00.000Z"
}
}| Parâmetro | Tipo | Descrição |
|---|---|---|
transaction_id | string | ID único da transação |
asset | string | Moeda depositada (em maiúsculas) |
chain | string | null | Rede blockchain (em maiúsculas) |
amount | string | Valor original solicitado (antes da taxa) |
net_amount | string | Valor líquido que será creditado (amount - fee) |
fee | string | Taxa da plataforma (apenas no SDK) |
deposit_address | string | Endereço para depósito |
qr_code | string | QR Code do endereço (se disponível) |
expires_at | Date | Data/hora de expiração do endereço de depósito |
status | string | Status da transação (ex: PENDING_CONFIRMATION) |
created_at | Date | Data/hora de criação da transação |
"API Secret inválida"
"Serviço não habilitado"
Cria uma nova transação de saque em criptomoedas.
https://api.connectpay.vc/v1/crypto/withdraws| Parâmetro | Tipo | Descrição |
|---|---|---|
api-secretobrigatório | string | Chave secreta da API do usuário |
idempotency-key | string | Chave única para garantir idempotência (opcional) |
interface CreateCryptoWithdrawRequest {
asset: "BTC" | "USDT" | "USDC" | "ETH";
chain: "TRC20" | "ERC20" | "BEP20" | "BTC" | "POLYGON";
amount: string;
wallet: string;
webhook_url?: string;
}{
"asset": "USDT",
"chain": "ERC20",
"amount": "50.00",
"wallet": "0x742d35Cc1D1B2F48dE3D7d8c53c4E7Db0C4bC123",
"webhook_url": "https://seu-servidor.com/webhook"
}| Parâmetro | Tipo | Descrição |
|---|---|---|
assetobrigatório | string | Moeda. Valores aceitos: BTC, USDT, USDC, ETH |
chainobrigatório | string | Rede blockchain. Valores aceitos: TRC20, ERC20, BEP20, BTC, POLYGON |
amountobrigatório | string | Quantidade a sacar. Número positivo maior que zero, até 18 casas decimais |
walletobrigatório | string | Endereço da carteira de destino |
webhook_url | string | URL para receber notificações sobre atualizações da transação (máximo 255 caracteres) |
curl -X POST "https://api.connectpay.vc/v1/crypto/withdraws" \
-H "api-secret: sua-api-secret-aqui" \
-H "idempotency-key: unique-key-12345" \
-H "Content-Type: application/json" \
-d '{
"asset": "USDT",
"chain": "ERC20",
"amount": "50.00",
"wallet": "0x742d35Cc1D1B2F48dE3D7d8c53c4E7Db0C4bC123",
"webhook_url": "https://seu-servidor.com/webhook"
}'{
"hasError": false,
"data": {
"transaction_id": "550e8400-e29b-41d4-a716-446655440000",
"asset": "USDT",
"chain": "ERC20",
"amount": "50.00",
"fee": "1.00",
"wallet": "0x742d35Cc1D1B2F48dE3D7d8c53c4E7Db0C4bC123",
"status": "PROCESSING",
"created_at": "2024-01-15T09:30:00.000Z"
}
}| Parâmetro | Tipo | Descrição |
|---|---|---|
transaction_id | string | ID único da transação |
asset | string | Moeda sacada (em maiúsculas) |
chain | string | null | Rede blockchain (em maiúsculas) |
amount | string | Valor solicitado para saque |
fee | string | Taxa da plataforma (apenas no SDK) |
wallet | string | Endereço da carteira de destino |
status | string | Status da transação (ex: PROCESSING) |
created_at | Date | Data/hora de criação da transação |
"API Secret inválida"
"Saldo insuficiente"
Lista todas as redes blockchain suportadas, agrupadas por moeda.
https://api.connectpay.vc/v1/crypto/chains| Parâmetro | Tipo | Descrição |
|---|---|---|
asset | string | Filtrar por uma moeda específica (ex: USDT, BTC, ETH) |
curl -X GET "https://api.connectpay.vc/v1/crypto/chains" \
-H "Content-Type: application/json"curl -X GET "https://api.connectpay.vc/v1/crypto/chains?asset=USDT" \
-H "Content-Type: application/json"{
"hasError": false,
"data": {
"BTC": [
{
"label": "Bitcoin",
"value": "BTC",
"description": "Rede Bitcoin"
}
],
"ETH": [
{
"label": "Ethereum",
"value": "ERC20",
"description": "Rede Ethereum (ERC20)"
}
],
"USDT": [
{
"label": "Ethereum",
"value": "ERC20",
"description": "Rede Ethereum (ERC20)"
},
{
"label": "Binance Smart Chain",
"value": "BEP20",
"description": "Rede Binance Smart Chain (BEP20)"
},
{
"label": "Polygon",
"value": "POLYGON",
"description": "Rede Polygon"
}
],
"USDC": [
{
"label": "Ethereum",
"value": "ERC20",
"description": "Rede Ethereum (ERC20)"
},
{
"label": "Binance Smart Chain",
"value": "BEP20",
"description": "Rede Binance Smart Chain (BEP20)"
},
{
"label": "Polygon",
"value": "POLYGON",
"description": "Rede Polygon"
}
]
}
}{
"hasError": false,
"data": {
"asset": "USDT",
"chains": [
{
"label": "Ethereum",
"value": "ERC20",
"description": "Rede Ethereum (ERC20)"
},
{
"label": "Binance Smart Chain",
"value": "BEP20",
"description": "Rede Binance Smart Chain (BEP20)"
},
{
"label": "Polygon",
"value": "POLYGON",
"description": "Rede Polygon"
}
]
}
}| Parâmetro | Tipo | Descrição |
|---|---|---|
label | string | Nome amigável da rede (ex: "Ethereum", "Bitcoin") |
value | string | Código interno usado nas requisições (ex: "ERC20", "BTC") |
description | string | Descrição da rede |
value da chain nas requisições de depósito e withdraw. Por exemplo, se o value for "ERC20", use "ERC20" no campo chain dos endpoints de depósito/withdraw."Asset 'INVALID' não encontrado ou não possui chains suportadas"
"Serviço não habilitado"
Receba notificações em tempo real quando o status das transações crypto mudar.
Content-Type: application/json
User-Agent: Crypto-Webhook/1.0interface CryptoWebhook {
id: string;
type: "DEPOSIT" | "WITHDRAW" | "SWAP";
asset: string;
chain: string | null;
amount: string;
deposit_address?: string | null; // apenas para DEPOSIT
wallet?: string | null; // apenas para WITHDRAW
status: "PENDING_CONFIRMATION" | "PROCESSING" | "CONFIRMED" | "FAILED" | "CANCELED";
platform_fee: string;
tx_hash?: string | null;
expires_at?: Date | null; // apenas para DEPOSIT
created_at: Date;
updated_at: Date;
confirmed_at?: Date | null;
}{
"id": "550e8400-e29b-41d4-a716-446655440000",
"type": "DEPOSIT",
"asset": "USDT",
"chain": "ERC20",
"amount": "100.50",
"deposit_address": "0x742d35Cc1D1B2F48dE3D7d8c53c4E7Db0C4bC123",
"status": "CONFIRMED",
"platform_fee": "1.00",
"tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"expires_at": "2024-01-15T10:30:00.000Z",
"created_at": "2024-01-15T09:30:00.000Z",
"updated_at": "2024-01-15T10:00:00.000Z",
"confirmed_at": "2024-01-15T10:00:00.000Z"
}{
"id": "550e8400-e29b-41d4-a716-446655440000",
"type": "WITHDRAW",
"asset": "USDT",
"chain": "ERC20",
"amount": "50.00",
"wallet": "0x742d35Cc1D1B2F48dE3D7d8c53c4E7Db0C4bC123",
"status": "CONFIRMED",
"platform_fee": "1.00",
"tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"created_at": "2024-01-15T09:30:00.000Z",
"updated_at": "2024-01-15T10:00:00.000Z",
"confirmed_at": "2024-01-15T10:00:00.000Z"
}| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | ID da transação (crypto_transaction.id) |
type | string | Tipo da transação. Valores: DEPOSIT, WITHDRAW, SWAP |
asset | string | Moeda da transação |
chain | string | null | Rede blockchain |
amount | string | Quantidade da transação |
deposit_address | string | null | Endereço de depósito (apenas para DEPOSIT) |
wallet | string | null | Endereço da carteira de destino (apenas para WITHDRAW) |
status | string | Status atual da transação (ex: PENDING_CONFIRMATION, CONFIRMED, FAILED, PROCESSING) |
platform_fee | string | Taxa da plataforma cobrada |
tx_hash | string | null | Hash da transação na blockchain (quando disponível) |
expires_at | Date | null | Data/hora de expiração do endereço de depósito (apenas para DEPOSIT) |
created_at | Date | Data/hora de criação da transação |
updated_at | Date | Data/hora da última atualização |
confirmed_at | Date | null | Data/hora de confirmação da transação (quando disponível) |
Receba notificações em tempo real quando o status das transações mudar.
interface TransactionWebhook {
id: string;
external_id: string | null;
total_amount: number;
status: "AUTHORIZED" | "PENDING" | "CHARGEBACK" | "FAILED" | "IN_DISPUTE";
payment_method: string;
}{
"id": "c22dc7e1-8b10-4580-9dc4-ebf78ceca475",
"external_id": "pedido_12345",
"total_amount": 100.50,
"status": "AUTHORIZED",
"payment_method": "PIX"
}app.post('/webhooks/transactions', (req, res) => {
const { id, external_id, total_amount, status, payment_method } = req.body;
// Processar o webhook de forma assíncrona
processTransactionWebhook({
id,
external_id,
total_amount,
status,
payment_method
});
// Responder imediatamente com 200
res.status(200).json({ received: true });
});Seja notificado quando ocorrerem mudanças de status nos cashouts.
{
"id": "f2c5f6e7-f710-437f-ad8c-44022316123e",
"external_id": "saque_12345",
"status": "approved",
"total_amount": 250.00,
"pix_key": "joao.silva@exemplo.com"
}Receba notificações em tempo real quando o status das faturas internas mudar.
Os webhooks são enviados automaticamente quando ocorrem mudanças de status:
Método: POST
Content-Type: application/json
User-Agent: Invoice-Webhook/1.0
Timeout: 10 segundosinterface InternalInvoiceWebhook {
id: string; // UUID da cobrança
code: string; // Código único de 8 caracteres
amount: number; // Valor da cobrança
status: "PENDING" | "PAID" | "CANCELLED" | "EXPIRED";
description: string; // Descrição da cobrança
due_date: string | null; // Data de vencimento (ISO 8601) ou null
created_at: string; // Data de criação (ISO 8601)
updated_at: string; // Data de atualização (ISO 8601)
}{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "ABC12345",
"amount": 100.50,
"status": "PAID",
"description": "Pagamento de serviços",
"due_date": "2026-02-15T10:00:00Z",
"created_at": "2026-01-28T10:00:00Z",
"updated_at": "2026-01-28T15:30:00Z"
}{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "ABC12345",
"amount": 100.50,
"status": "EXPIRED",
"description": "Pagamento de serviços",
"due_date": "2026-01-27T10:00:00Z",
"created_at": "2026-01-20T10:00:00Z",
"updated_at": "2026-01-28T16:00:00Z"
}app.post('/webhooks/internal-invoice', (req, res) => {
const { id, code, amount, status, description, due_date, created_at, updated_at } = req.body;
// Processar o webhook de forma assíncrona
processInternalInvoiceWebhook({
id,
code,
amount,
status,
description,
due_date,
created_at,
updated_at
});
// Responder imediatamente com 200
res.status(200).json({ received: true });
});webhook_url ao criar a faturadue_date pode ser null se não houver data de vencimento configuradaFormatos de resposta padrão e códigos de status utilizados pela API.
{
"data": {
// Dados da resposta aqui
},
"success": true
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Dados de requisição inválidos",
"details": []
},
"success": false
}Códigos de status HTTP e respostas de erro retornadas pela API.
A requisição era inválida ou não pode ser atendida. Causas comuns:
Falha na autenticação. Causas comuns:
O recurso solicitado não foi encontrado. Causas comuns:
Ocorreu um erro inesperado em nossos servidores. Tente novamente mais tarde ou entre em contato com o suporte se o problema persistir.
message com detalhes específicos sobre o problema. Use essas mensagens para diagnosticar e corrigir problemas de integração rapidamente.