📄 Documentação API

DEPIX PAY - API de Pagamentos PIX

Base URL

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

Todas as requisições devem usar HTTPS. HTTP não é suportado.

🔐 Autenticação

Todas as requisições devem incluir sua API Key no header:

Authorization: Bearer dpx_sua_api_key_aqui

Sua API Key é gerada no momento do cadastro. Guarde-a em segurança — ela não pode ser recuperada.

⚠️ Nunca exponha sua API Key em código frontend. Use sempre server-side.

📊 Limites (Compliance Eulen)

O DEPIX PAY segue as diretrizes de compliance da Eulen/Banco Central:

Limite Valor Descrição
Por transação R$ 5.000 Limite máximo do QR Code dinâmico (imposição bancária)
Primeira compra (CPF novo) R$ 500 Proteção contra fraudes MED. Após 1ª compra confirmada, limite aumenta.
Limite diário por CPF R$ 6.000 Soma de todas as transações do CPF no dia
Limite diário do merchant R$ 500 / R$ 3.000 R$ 500/dia sem email verificado; R$ 3.000/dia após verificar o email
🔐 Identificação do pagador (obrigatória): toda cobrança precisa de customer_cpf (ou euid). É exigência da Eulen para prevenção a fraudes — pagamentos de outra titularidade são devolvidos.
✉️ Verifique seu email: sem verificação você não consegue criar cobranças e a conta é arquivada após 24h. Verificar libera R$ 3.000/dia.

Erros de Limite

Código Descrição
SINGLE_TX_LIMIT Valor excede R$ 5.000 por transação
FIRST_PURCHASE_LIMIT CPF novo, primeira compra limitada a R$ 500
CPF_DAILY_LIMIT CPF atingiu limite diário de R$ 6.000

⏱️ QR Delay — Proteção Antifraude

Por orientação oficial da Eulen (provedora do DePix) e como medida de proteção contra fraudes, todo merchant recém-cadastrado começa com um delay de D+5 (120 horas) entre a confirmação do pagamento Pix e a conversão para DePix. Conforme o merchant constrói reputação com pagamentos confirmados, o delay pode ser reduzido pela nossa equipe.

⚠️ Importante: O QR Delay não afeta o pagamento Pix — seu cliente paga e recebe a confirmação normalmente. O delay aplica-se apenas à liquidação em DePix na sua wallet Liquid.

Como funciona

  1. Você cria a cobrança via POST /payment/create normalmente — sem precisar passar nenhum parâmetro extra.
  2. O cliente paga o QR Code Pix instantaneamente.
  3. O pagamento entra em status delayed aguardando a janela de proteção (D+5 por padrão).
  4. Você recebe um webhook payment.delayed assim que o Pix é confirmado pela Eulen.
  5. Após o delay expirar, o DePix é liberado na sua wallet e o status muda para completed com webhook payment.completed.

Tabela de delays por reputação

Estágio do Merchant Delay padrão Equivalente
Novo (sem histórico)120hD+5
Reputação inicial72hD+3
Reputação consolidada48hD+2
Histórico positivo extenso24hD+1
Parceiros verificados (whitelist, sob análise)1hMínimo
⚠️ Piso de 1 hora (exigência Eulen): desde 30/06/2026 a Eulen aboliu a liquidação imediata — o mínimo é 1 hora. Nenhuma cobrança é liquidada em DePix instantaneamente.
🛡️ Proteção adicional por pagador: a primeira compra de um pagador ainda sem histórico confirmado na plataforma tem um piso de 48h de delay, independente da reputação da sua loja (não se aplica a lojas whitelist). É uma defesa contra MED de pagadores novos.
💡 Para solicitar redução do seu delay, envie histórico de operações para @depixoficial no Telegram após acumular pagamentos confirmados.

Consultando seu delay atual

O delay configurado para sua conta aparece em GET /merchant/me:

{
  "success": true,
  "data": {
    "id": "...",
    "name": "Sua Loja",
    "level_name": "Nível 1",
    "qr_delay_hours": 120,
    "qr_delay_label": "D+5",
    ...
  }
}

Resposta do /payment/create com delay ativo

Quando o delay está ativo, a resposta da criação do pagamento inclui qr_delay_hours e settlement_info:

{
  "success": true,
  "data": {
    "payment_id": "dep_abc123xyz",
    "amount": 100.00,
    "status": "pending",
    "qr_code": "00020126...",
    "qr_delay_hours": 120,
    "settlement_info": "Após o pagamento Pix, a liquidação em DePix ocorrerá em 120h (D+5) — proteção antifraude/MED.",
    "expires_at": "2026-02-15T20:00:00Z",
    "created_at": "2026-02-15T19:40:00Z"
  }
}

Webhook payment.delayed

Quando o Pix é confirmado e o pagamento entra em janela de delay:

{
  "event": "payment.delayed",
  "payment_id": "dep_abc123xyz",
  "amount": 100.00,
  "status": "delayed",
  "qr_delay_hours": 120,
  "delay_ends_at": "2026-02-20T19:45:00Z"
}
🚫 Atenção: O delay não pode ser alterado depois que o QR Code é gerado. O valor aplicado é o que estava configurado na sua conta no momento da criação da cobrança.

Por que o D+5? MED — Mecanismo Especial de Devolução

O MED é um mecanismo do Banco Central que permite ao pagador solicitar devolução de um Pix em casos de fraude (golpe). Como o DePix é convertido após esta janela, o delay protege:

💳 Pagamentos

POST /payment/create

Cria um novo pagamento PIX e retorna o QR Code.

Parâmetros

Campo Tipo Status Descrição
amount number Obrigatório Valor em reais (ex: 100.00). Mínimo R$ 10.
customer_cpf string Obrigatório* Identificação do pagador (exigência Eulen, prevenção a fraudes). CPF (11 díg.) ou CNPJ (14 díg.). *Pode ser substituído por euid.
euid string Alternativa Identidade Eulen do pagador. Envie euid OU customer_cpf. Pagamentos de outra titularidade são devolvidos.
customer_name string Recomendado Nome do pagador (max 100 chars)
customer_email string Opcional Email do pagador
description string Opcional Descrição do pagamento (max 200 chars)
external_id string Opcional Seu ID interno para referência
webhook_url string Opcional URL para receber notificações deste pagamento

Exemplo Request

curl -X POST https://api.depixpay.com/api/v1/payment/create \
  -H "Authorization: Bearer dpx_sua_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 100.00,
    "customer_name": "João Silva",
    "customer_cpf": "12345678901",
    "description": "Pedido #123"
  }'

Exemplo Response (201)

{
  "success": true,
  "data": {
    "payment_id": "dep_abc123xyz",
    "amount": 100.00,
    "status": "pending",
    "qr_code": "00020126...",
    "qr_image_url": "https://response.eulen.app/...",
    "expires_at": "2026-02-15T20:00:00Z",
    "created_at": "2026-02-15T19:40:00Z"
  }
}

GET /payment/{payment_id}/status

Consulta o status de um pagamento.

Status possíveis

Status Descrição
pendingAguardando pagamento
delayedPix pago, aguardando janela antifraude (ver QR Delay)
completedPago, janela cumprida e DePix liberado
expiredQR Code expirou (20 min)
cancelledCancelado
refundedEstornado (MED)

GET /payments

Lista os últimos 50 pagamentos do merchant.

🏧 Saque (DEPIX → PIX)

Converta seu saldo em DEPIX de volta para reais via PIX. Modelo não-custodial: a API cria o saque e devolve um endereço Liquid; você envia o DEPIX da sua própria carteira para esse endereço e, após a confirmação on-chain, o PIX cai na sua chave. A plataforma nunca custodia seus fundos. Requer conta ativada (euid + CPF/CNPJ verificados).

POST /withdraw

Cria uma solicitação de saque. Informe exatamente um valor — o outro é calculado automaticamente (taxa da Eulen já embutida).

Parâmetros

CampoTipoStatusDescrição
pixKey string Obrigatório Chave PIX de destino. Pode ser de qualquer tipo (email, telefone, aleatória, CPF/CNPJ), mas deve estar registrada no mesmo CPF/CNPJ da sua conta — chave de outra titularidade é recusada automaticamente pelo banco.
payoutAmountInCents number Obrigatório* Valor a receber em reais (cents). *Informe este OU depositAmountInCents.
depositAmountInCents number Alternativa Valor de DEPIX a enviar (cents), mutuamente exclusivo com o de cima.

Resposta

{
  "success": true,
  "data": {
    "withdrawal_id": "wd_abc123def456ghij",
    "status": "unsent",
    "deposit_address": "lq1qq0z...seu-endereco-de-envio",
    "deposit_amount_cents": 5050,
    "payout_amount_cents": 5000
  },
  "notice": "Envie 50.50 DEPIX da sua carteira para deposit_address..."
}
⚠️ Nunca envie DEPIX após a expiração do endereço — os fundos são perdidos.

GET /withdraw/{id}

Consulta o status de um saque (reconciliado com a Eulen em tempo real).

GET /withdraw/list

Lista seus saques (mais recentes primeiro).

Status do Saque

StatusDescrição
unsentAguardando você enviar o DEPIX
sendingDEPIX recebido — processando o PIX
sentPIX enviado com sucesso
canceledSaque cancelado
refundedDEPIX devolvido
errorErro no processamento

🔔 Webhooks

Quando um pagamento muda de status, enviamos um POST para a URL configurada:

Payload do Webhook

{
  "event": "payment.completed",
  "payment_id": "dep_abc123xyz",
  "external_id": "pedido_123",
  "amount": 100.00,
  "status": "completed",
  "customer_name": "João Silva",
  "customer_cpf": "12345678901",
  "completed_at": "2026-02-15T19:45:00Z"
}

Eventos

Evento Descrição
payment.delayedPix confirmado, entrou em janela de proteção antifraude
payment.completedDePix liberado na wallet do merchant
payment.expiredQR Code expirou sem pagamento
💡 Responda com HTTP 200 para confirmar recebimento. Tentamos até 3 vezes em caso de falha.

❌ Códigos de Erro

Código HTTP Descrição
UNAUTHORIZED401API Key inválida ou ausente
EMAIL_NOT_VERIFIED403Verifique seu email antes de criar cobranças
ACTIVATION_REQUIRED403Conta não ativada: faça o 1º pagamento de R$ 10 de uma conta de sua titularidade (mesmo CPF/CNPJ) para capturar seu EUID. Toda cobrança posterior carrega esse merchantId. No painel: "Ativar conta"
PAYER_IDENTIFICATION_REQUIRED400Falta identificação do pagador: envie customer_cpf ou euid (exigência Eulen)
INVALID_LIQUID_ADDRESS400Endereço Liquid do merchant inválido — corrija antes de receber
INVALID_AMOUNT400Valor inválido
MIN_AMOUNT400Valor abaixo do mínimo (R$ 10)
SINGLE_TX_LIMIT400Valor excede R$ 5.000/transação
FIRST_PURCHASE_LIMIT400CPF novo: máx R$ 500 (verificado) / R$ 100 (não verificado) na 1ª compra
CPF_DAILY_LIMIT400CPF atingiu limite diário (R$ 6.000)
MERCHANT_DAILY_LIMIT400Limite diário do merchant atingido (R$ 500 não verif. / R$ 3.000 verif.)
RATE_LIMIT_EXCEEDED429Muitas cobranças por hora — aguarde
INVALID_CPF400CPF/CNPJ inválido
NOT_FOUND404Pagamento não encontrado
PROVIDER_ERROR502Erro no provedor PIX

Exemplo de Erro

{
  "success": false,
  "error": "CPF_DAILY_LIMIT",
  "message": "Limite diário de R$ 6.000,00 por CPF atingido",
  "daily_limit": 6000,
  "daily_used": 5500,
  "remaining": 500
}