Documentação da API

Integração de pagamentos PIX simples e poderosa

Última atualização: 14 de Fevereiro de 2026

📖 Introdução

A DEPIX PRO API permite integrar pagamentos PIX em sua aplicação de forma rápida e segura. Nossa API RESTful utiliza JSON para comunicação e oferece webhooks para notificações em tempo real.

Principais Recursos:

URL Base:

https://api.depixpay.com/api/v1

🚀 Primeiros Passos

  1. Registre-se — Faça um POST para /api/v1/merchant/register com seu nome e endereço Liquid
  2. Salve sua API key — Ela só é exibida uma vez no momento do registro!
  3. Crie um pagamento — POST para /api/v1/payment/create com o valor desejado
  4. Exiba o QR Code — Use o qr_code (copia e cola) ou qr_image_url (imagem)
  5. Receba a confirmação — Via webhook ou polling no endpoint de status
⚠️ Importante: Todos os pagamentos são processados em tempo real em ambiente de produção. Não existe ambiente de teste separado.

🔐 Autenticação

Todas as requisições autenticadas requerem sua chave de API no header X-API-Key.

X-API-Key: dpx_1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
Segurança: Mantenha sua API Key segura. Nunca a exponha em código client-side ou repositórios públicos. Se comprometida, entre em contato para gerar uma nova.

👤 Merchant (Cadastro)

POST /api/v1/merchant/register PÚBLICO

Registra um novo merchant e retorna a API key. A key só é exibida uma vez!

Request Body:

{
  "name": "Minha Loja",
  "liquid_address": "lq1qq...",
  "webhook_url": "https://meusite.com/webhook/depix"
}
CampoObrigatórioDescrição
nameNome do merchant (2-100 chars, único)
liquid_addressEndereço Liquid Network para recebimento
webhook_urlURL padrão para webhooks (HTTP/HTTPS)

Resposta de Sucesso (201):

{
  "success": true,
  "message": "Merchant registered successfully. Save your API key - it will not be shown again.",
  "data": {
    "id": "cfd766d2-1f32-45f5-b3c4-1e236d57b1c1",
    "name": "Minha Loja",
    "liquid_address": "lq1qq...",
    "webhook_url": "https://meusite.com/webhook/depix",
    "level": 1,
    "level_name": "Beginner",
    "current_limit": 500,
    "total_confirmed": 0,
    "is_active": true,
    "created_at": "2026-01-15T12:00:00.000Z",
    "api_key": "dpx_f4feedc1b1c526c050d78c42c296e2e..."
  }
}
⚠️ ATENÇÃO: O campo api_key só aparece nesta resposta. Salve-o imediatamente!

GET /api/v1/merchant/me AUTH

Retorna informações do merchant autenticado, incluindo nível e limites atuais.

Resposta (200):

{
  "success": true,
  "data": {
    "id": "cfd766d2-...",
    "name": "Minha Loja",
    "liquid_address": "lq1qq...",
    "webhook_url": "https://meusite.com/webhook/depix",
    "level": 3,
    "level_name": "Silver",
    "current_limit": 1000,
    "total_confirmed": 750.50,
    "is_active": true,
    "created_at": "2026-01-15T12:00:00.000Z"
  }
}

PUT /api/v1/merchant/update AUTH

Atualiza dados do merchant (nome, carteira, webhook).

Request Body (todos opcionais):

{
  "name": "Novo Nome",
  "liquid_address": "lq1qq_novo_endereco...",
  "webhook_url": "https://novo-site.com/webhook"
}

💳 Pagamentos

POST /api/v1/payment/create AUTH

Cria uma nova solicitação de pagamento PIX.

Request Body:

{
  "amount": 25.50,
  "description": "Produto XYZ",
  "customer_name": "João Silva",
  "customer_cpf": "12345678901",
  "customer_email": "[email protected]",
  "customer_phone": "(11) 99999-9999",
  "customer_address": "Rua das Flores, 123, Centro, São Paulo, SP",
  "external_id": "pedido_123",
  "webhook_url": "https://seusite.com/webhook"
}

Regras de Validação:

CampoObrigatórioDescrição
amountValor em BRL. Mínimo R$ 10,00, máximo conforme nível
descriptionDescrição do pagamento (máx 200 chars)
customer_nameNome do cliente (máx 100 chars)
customer_cpfCPF (11 dígitos) ou CNPJ (14 dígitos)
customer_emailEmail válido (máx 255 chars)
customer_phoneTelefone com DDD (máx 20 chars)
customer_addressEndereço completo (máx 500 chars)
external_idSeu ID de referência (máx 50 chars)
webhook_urlOverride do webhook para este pagamento

Resposta de Sucesso (201):

{
  "success": true,
  "data": {
    "payment_id": "dep_abc123def456ghij",
    "external_id": "pedido_123",
    "amount": 25.50,
    "status": "pending",
    "qr_code": "00020126580014BR.GOV.BCB.PIX...",
    "qr_image_url": "https://response.eulen.app/api-response/...-qr.png",
    "expires_at": "2026-01-15T12:20:00.000Z",
    "created_at": "2026-01-15T12:00:00.000Z"
  }
}

Resposta de Erro (400):

{
  "success": false,
  "error": "LIMIT_EXCEEDED",
  "message": "Valor excede seu limite atual de R$ 500,00",
  "current_limit": 500.00,
  "amount_requested": 500.00
}

GET /api/v1/payment/{id}/status AUTH

Consulta o status atual de um pagamento.

Resposta (200):

{
  "success": true,
  "data": {
    "payment_id": "dep_abc123def456ghij",
    "external_id": "pedido_123",
    "amount": 25.50,
    "status": "completed",
    "customer_name": "João Silva",
    "customer_cpf": "12345678901",
    "customer_phone": "(11) 99999-9999",
    "created_at": "2026-01-15T12:00:00.000Z",
    "updated_at": "2026-01-15T12:15:30.000Z"
  }
}

GET /api/v1/payment/{id} AUTH

Obtém informações completas do pagamento, incluindo QR code e todos os dados do cliente.

Resposta (200):

{
  "success": true,
  "data": {
    "payment_id": "dep_abc123def456ghij",
    "external_id": "pedido_123",
    "amount": 25.50,
    "status": "completed",
    "customer_name": "João Silva",
    "customer_cpf": "12345678901",
    "customer_email": "[email protected]",
    "customer_phone": "(11) 99999-9999",
    "customer_address": "Rua das Flores, 123",
    "description": "Produto XYZ",
    "qr_code": "00020126580014BR.GOV.BCB.PIX...",
    "qr_image_url": "https://response.eulen.app/...-qr.png",
    "expires_at": "2026-01-15T12:20:00.000Z",
    "created_at": "2026-01-15T12:00:00.000Z",
    "updated_at": "2026-01-15T12:15:30.000Z"
  }
}

Status de Pagamento:

pendingAguardando pagamento
completedPagamento confirmado
expiredPagamento expirado (20 minutos)
cancelledPagamento cancelado
refundedPagamento reembolsado

🔔 Webhooks

Os webhooks permitem que sua aplicação receba notificações automáticas em tempo real quando o status de um pagamento muda.

Configuração

Defina a webhook_url no cadastro do merchant (padrão) ou ao criar cada pagamento (override).

Requisitos do Endpoint

Eventos Disponíveis

EventoDescrição
payment.completedPagamento confirmado com sucesso
payment.expiredPagamento expirado (após 20 minutos)
payment.refundedPagamento reembolsado

Headers da Requisição

Content-Type: application/json
X-Webhook-Event: payment.completed
X-Webhook-Timestamp: 1705328130
User-Agent: DepixPro-Webhook/1.0

Payload: payment.completed

{
  "event": "payment.completed",
  "timestamp": "2026-01-15T12:15:30-03:00",
  "data": {
    "payment_id": "dep_abc123def456ghij",
    "external_id": "pedido_123",
    "amount": 25.50,
    "status": "completed",
    "payer_name": "João Silva",
    "payer_cpf": "12345678901",
    "description": "Produto XYZ",
    "created_at": "2026-01-15 12:00:00",
    "completed_at": "2026-01-15 12:15:30"
  }
}

Payload: payment.expired

{
  "event": "payment.expired",
  "timestamp": "2026-01-15T12:20:00-03:00",
  "data": {
    "payment_id": "dep_abc123def456ghij",
    "external_id": "pedido_123",
    "amount": 25.50,
    "status": "expired",
    "created_at": "2026-01-15 12:00:00",
    "expired_at": "2026-01-15 12:20:00"
  }
}
💡 Dica: Utilize o campo external_id para identificar facilmente o pedido no seu sistema quando receber o webhook.
⚠️ Importante: Sempre valide os dados recebidos. Para pagamentos críticos, faça uma consulta adicional ao endpoint de status para confirmar.

📊 Sistema de Progressão de Limites

Os limites evoluem em 7 níveis conforme seu histórico de transações confirmadas.

NívelNomeTotal ConfirmadoLimite por QR
1InicianteR$ 0 - R$ 499,99R$ 500,00
2BronzeR$ 500 - R$ 1.499,99R$ 1.500,00
3PrataR$ 1.500 - R$ 4.999,99R$ 5.000,00
4OuroR$ 1.000 - R$ 2.999,99R$ 1.500,00
5PlatinaR$ 3.000 - R$ 4.999,99R$ 2.000,00
6DiamanteR$ 5.000 - R$ 5.999,99R$ 2.500,00
7EliteR$ 6.000+R$ 3.000,00
Como funciona:

💰 Taxas

TaxaValorDescrição
Processamento (fixa)R$ 0,99Taxa fixa por transação (Eulen)
Plataforma (split)1%Taxa sobre o valor total
Merchant recebe: valor - R$0,99 - 1%
Exemplo: Pagamento de R$ 100,00 → Merchant recebe R$ 98,01 em L-BTC na Liquid Network.

💻 Exemplos de Código

1. Registrar Merchant

cURL:

curl -X POST https://api.depixpay.com/api/v1/merchant/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Minha Loja",
    "liquid_address": "lq1qqyour_liquid_address_here",
    "webhook_url": "https://meusite.com/webhook/depix"
  }'

# ⚠️ SALVE O api_key DA RESPOSTA!

2. Criar Pagamento

JavaScript / Node.js:

const response = await fetch('https://api.depixpay.com/api/v1/payment/create', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'dpx_your_api_key_here'
  },
  body: JSON.stringify({
    amount: 25.50,
    description: 'Produto XYZ',
    customer_name: 'João Silva',
    customer_cpf: '12345678901',
    external_id: 'pedido_123'
  })
});

const data = await response.json();

if (data.success) {
  console.log('Payment ID:', data.data.payment_id);
  console.log('PIX Copia e Cola:', data.data.qr_code);
  console.log('QR Image:', data.data.qr_image_url);
  console.log('Expira em:', data.data.expires_at);
}

PHP:

<?php
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => 'https://api.depixpay.com/api/v1/payment/create',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'X-API-Key: dpx_your_api_key_here'
  ],
  CURLOPT_POSTFIELDS => json_encode([
    'amount' => 25.50,
    'description' => 'Produto XYZ',
    'customer_name' => 'João Silva',
    'customer_cpf' => '12345678901',
    'external_id' => 'pedido_123'
  ])
]);

$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);

if ($httpCode === 201) {
  $data = json_decode($response, true);
  echo "Payment ID: " . $data['data']['payment_id'] . "\n";
  echo "QR Code URL: " . $data['data']['qr_image_url'] . "\n";
} else {
  echo "Erro: " . $response;
}

Python:

import requests

response = requests.post(
    'https://api.depixpay.com/api/v1/payment/create',
    headers={
        'Content-Type': 'application/json',
        'X-API-Key': 'dpx_your_api_key_here'
    },
    json={
        'amount': 25.50,
        'description': 'Produto XYZ',
        'customer_name': 'João Silva',
        'customer_cpf': '12345678901',
        'external_id': 'pedido_123'
    }
)

data = response.json()
if data['success']:
    print(f"Payment ID: {data['data']['payment_id']}")
    print(f"QR Code: {data['data']['qr_image_url']}")
else:
    print(f"Erro: {data['error']} - {data['message']}")

3. Consultar Status

curl https://api.depixpay.com/api/v1/payment/dep_abc123/status \
  -H "X-API-Key: dpx_your_api_key_here"

4. Webhook Handler (PHP)

<?php
$payload = file_get_contents('php://input');
$data = json_decode($payload, true);

if (!$data || !isset($data['event'])) {
  http_response_code(400);
  exit('Invalid payload');
}

switch ($data['event']) {
  case 'payment.completed':
    $paymentId = $data['data']['payment_id'];
    $amount = $data['data']['amount'];
    $externalId = $data['data']['external_id'];
    
    // Atualizar pedido no seu banco de dados
    // marcarPedidoComoPago($externalId);
    
    error_log("Pagamento {$paymentId} confirmado: R\$ {$amount}");
    break;

  case 'payment.expired':
    // Cancelar pedido
    // cancelarPedido($data['data']['external_id']);
    error_log("Pagamento {$data['data']['payment_id']} expirou");
    break;

  case 'payment.refunded':
    // Processar reembolso
    error_log("Pagamento {$data['data']['payment_id']} reembolsado");
    break;
}

http_response_code(200);
echo json_encode(['received' => true]);

5. Webhook Handler (Node.js / Express)

app.post('/webhook/depix', (req, res) => {
  const { event, data } = req.body;

  switch (event) {
    case 'payment.completed':
      console.log(`Pagamento ${data.payment_id} confirmado: R$ ${data.amount}`);
      // Atualizar pedido no banco
      break;
    case 'payment.expired':
      console.log(`Pagamento ${data.payment_id} expirou`);
      // Cancelar pedido
      break;
    case 'payment.refunded':
      console.log(`Pagamento ${data.payment_id} reembolsado`);
      break;
  }

  res.json({ received: true });
});

⚠️ Códigos de Erro

CódigoErroDescrição
400INVALID_AMOUNTValor inválido ou ausente
400MIN_AMOUNTValor abaixo do mínimo (R$ 10,00)
400LIMIT_EXCEEDEDValor excede o limite do nível atual
400CPF_DAILY_LIMITLimite diário por CPF excedido
400INVALID_CPFCPF/CNPJ com formato inválido
400VALIDATIONCampo excede tamanho máximo
401UNAUTHORIZEDAPI key inválida ou ausente
404NOT_FOUNDPagamento não encontrado
409NAME_TAKENNome do merchant já existe
502PROVIDER_ERRORErro no provedor de pagamento

⏰ Expiração

Todos os pagamentos PIX expiram automaticamente em 20 minutos após a criação. Recomendamos consultar o status a cada 30 segundos enquanto aguarda pagamento.

DEPIX PRO API v1.0 · Powered by Eulen DEPIX

Settlement via Liquid Network (L-BTC) · Todos os pagamentos em tempo real