Visão Geral
Todos os endpoints da API estão sob o prefixo /api/v1. Toda requisição deve enviar Content-Type: application/json e a chave de autenticação no header X-Api-Key.
- Taxa Eulen: 1,0% (mín. R$ 1,00) por destinatário.
- Comissão da plataforma: 1,5% (mín. 1 DePix).
Autenticação
Envie a chave de API no header X-Api-Key em todas as requisições. Alternativamente, use Authorization: Bearer <chave>.
X-Api-Key: sua_chave_secreta_aquiAuthorization: Bearer sua_chave_secreta_aquiEXTERNAL_API_KEYS, no formato chave1:NomePlataforma,chave2:OutraPlataforma. Solicite sua chave ao administrador.Criar Pedido
Cria um novo pedido de pagamento com um ou mais destinatários Pix. Retorna o endereço Liquid para depósito do DePix e todos os valores calculados.
Parâmetros do body
recipientsarrayrequiredLista de destinatários Pix. Mínimo 1, máximo 25.
recipients[].typestringrequiredTipo da chave Pix. Valores aceitos: "cpf", "cnpj", "email", "telefone", "aleatoria".
recipients[].keystringrequiredChave Pix do destinatário (será validada e criptografada no servidor).
recipients[].taxNumberstringoptionalCPF/CNPJ do recebedor. Obrigatório para chaves "email", "telefone" e "aleatoria". Para chaves "cpf" e "cnpj", o servidor reaproveita o próprio valor da key e este campo pode ser omitido.
recipients[].amountnumberrequiredValor em reais que o destinatário receberá no Pix (valor base). Ex: 100.00 para R$100,00. Mínimo R$10,00.
Exemplos de requisição
POST /api/v1/orders
Content-Type: application/json
X-Api-Key: sua_chave_aqui
{
"recipients": [
{
"type": "cpf",
"key": "123.456.789-00",
"amount": 100.00
}
]
}{
"recipients": [
{ "type": "cpf", "key": "123.456.789-00", "amount": 500.00 },
{ "type": "email", "key": "joao@email.com", "taxNumber": "123.456.789-00", "amount": 250.00 },
{ "type": "aleatoria","key": "6e9f7a05-...", "taxNumber": "12.345.678/0001-90", "amount": 100.00 }
]
}Resposta de sucesso — 200
{
"order": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2026-03-23T14:30:00.000Z",
"updatedAt": "2026-03-23T14:30:00.000Z",
"status": "awaiting_deposit",
"source": {
"type": "api",
"apiKeyLabel": "MinhaPlatforma"
},
"totals": {
"totalPixInCents": 10000,
"estimatedHpmFeeInCents": 100,
"operationalFeeInCents": 150,
"totalToCollectInCents": 10250
},
"deposit": {
"address": "lq1qqwd0c9x3u5s9n5rg9q7xge8f4rkns12345...",
"assetLabel": "DePix",
"expectedAmountInCents": 10250,
"expectedAmountInBaseUnits": 10250,
"qrDataUri": "data:image/png;base64,...",
"receivedAmountInCents": 0,
"receivedAmountInBaseUnits": 0,
"fundedAt": null,
"lastCheckedAt": null
},
"recipients": [
{
"id": "recipient-1",
"pixKeyMasked": "***.456.789-**",
"pixKeyType": "cpf",
"payoutAmountInCents": 10000,
"estimatedFeeInCents": 100,
"status": "queued",
"error": null,
"createdAt": "2026-03-23T14:30:00.000Z",
"completedAt": null,
"hpm": {
"depositAmountInCents": null,
"payoutAmountInCents": 10000,
"status": null,
"expiration": null,
"receiptUrl": null,
"receipt": null
},
"payout": { "txid": null, "sentAt": null }
}
],
"capabilities": { "hpmEnabled": true }
},
"orderToken": "Ts3xKp9mN2..."
}Campos importantes da resposta
order.idstringUUID único do pedido. Use para consultar o status.
order.statusstringStatus inicial sempre será "awaiting_deposit".
order.totals.totalPixInCentsnumberSoma dos valores base de todos os destinatários (em centavos).
order.totals.estimatedHpmFeeInCentsnumberTaxa HPM/Eulen total estimada (fixa, imutável). Em centavos.
order.totals.operationalFeeInCentsnumberComissão da plataforma que ficará retida na carteira intermediária. Em centavos.
order.totals.totalToCollectInCentsnumberTotal de DePix que o usuário deve depositar no endereço abaixo. Em centavos.
order.deposit.addressstringEndereço Liquid para depósito do DePix.
order.deposit.expectedAmountInCentsnumberValor exato a depositar em centavos (= totalToCollectInCents).
order.deposit.qrDataUristringQR Code em base64 para exibir ao usuário.
orderTokenstringToken de acesso ao pedido. Guarde para uso como alternativa de autenticação via X-Order-Token.
Consultar Pedido
Retorna o estado atualizado de um pedido. Cada chamada dispara internamente a reconciliação de depósito e de confirmações Eulen — use polling a cada 15–30 segundos enquanto aguarda o depósito ou a confirmação dos pagamentos.
404.GET order.recipients[].hpm.receiptUrl usando a mesma X-Api-Key do pedido.Resposta de sucesso — 200 (pedido concluído)
{
"order": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"totals": { ... },
"deposit": {
"receivedAmountInCents": 10250,
"fundedAt": "2026-03-23T14:32:10.000Z",
...
},
"processing": {
"startedAt": "2026-03-23T14:32:11.000Z",
"finishedAt": "2026-03-23T14:33:45.000Z",
"broadcastAmountInCents": 10100,
"actualPlatformRetainedInCents": 150,
...
},
"recipients": [
{
"id": "recipient-1",
"status": "completed",
"completedAt": "2026-03-23T14:33:45.000Z",
"hpm": {
"depositAmountInCents": 10100,
"payoutAmountInCents": 10000,
"status": "sent",
"receiptUrl": "/api/v1/orders/550e8400-e29b-41d4-a716-446655440000/recipients/recipient-1/receipt",
"receipt": {
"available": true,
"status": "stored",
"archivedAt": "2026-03-23T14:33:46.000Z",
"contentType": "application/pdf",
"sizeBytes": 38124,
"sha256": "b7f2..."
}
},
"payout": { "txid": "a1b2c3d4...", "sentAt": "2026-03-23T14:33:20.000Z" }
}
]
}
}Campos importantes na fase de processamento
order.processing.broadcastAmountInCentsnumberValor total já enviado ao Eulen (em centavos).
order.processing.actualPlatformRetainedInCentsnumberValor efetivamente retido na carteira intermediária (comissão realizada).
order.recipients[].statusstringStatus individual de cada destinatário: "queued" → "quoted" → "funding_sent" → "completed" | "failed".
order.recipients[].hpm.receiptUrlstringURL estável da própria API para baixar o PDF arquivado. Requer a mesma X-Api-Key do pedido.
order.recipients[].hpm.receiptobjectMetadata do comprovante arquivado: disponibilidade, hash, tamanho, MIME type e data de arquivamento.
order.recipients[].payout.txidstringID da transação Liquid enviada ao Eulen.
Status do Pedido
Fluxo típico: awaiting_deposit → processing_payouts → awaiting_hpm_confirmation → completed
Status dos destinatários (recipients[].status)
Tipos de Chave Pix
| type | Descrição | Exemplo de key |
|---|---|---|
cpf | CPF (11 dígitos) | 123.456.789-00 ou 12345678900 |
cnpj | CNPJ (14 dígitos) | 12.345.678/0001-99 |
email | pagamento@empresa.com.br | |
telefone | Celular com DDI +55 | +5511999887766 |
aleatoria | Chave aleatória (UUID) | 6e9f7a05-1234-4abc-8def-000102030405 |
Erros
Todas as respostas de erro seguem o formato:
{
"error": "Chave de API invalida."
}| HTTP | Causa |
|---|---|
400 | Dados inválidos no body (tipo de chave, valor, formato) |
401 | API key ausente ou inválida |
404 | Pedido não encontrado ou pertencente a outra plataforma |
405 | Método HTTP não permitido |
413 | Body da requisição excede o limite (padrão: 32 KB) |
429 | Limite de requisições excedido — aguarde e tente novamente |
500 | Erro interno do servidor |
502 | Falha na comunicação com a Eulen ou a rede Liquid |
503 | Servidor mal configurado (variáveis de ambiente ausentes) |
O módulo Swap permite converter DePix diretamente para criptoativos como SOL, BTC, ETH, USDC e outros — tudo via API, com autenticação por X-Api-Key. O fluxo é: listar ativos → obter cotação → criar conversão → monitorar status.
/api/v1/swap/quote é estimada — o valor final depende das taxas de mercado no momento em que a conversão for processada. A taxa da plataforma é descontada sobre o valor bruto depositado.Listar Ativos Disponíveis
Retorna a lista de criptoativos disponíveis para conversão e suas redes suportadas. Use o parâmetro scope=all para listar todos os ativos (em vez dos populares).
Parâmetros de query (opcionais)
scopestringoptionalFiltra o conjunto de ativos retornados. "popular" (padrão) — ativos mais usados. "all" — todos os ativos suportados pela BTSE.
Exemplo
GET /api/v1/swap/assets
X-Api-Key: sua_chave_aqui
// Resposta
{
"assets": [
{ "symbol": "SOL", "name": "Solana", "networks": ["SOLANA", "SPL"] },
{ "symbol": "BTC", "name": "Bitcoin", "networks": ["BITCOIN"] },
{ "symbol": "ETH", "name": "Ethereum", "networks": ["ETHEREUM", "ARBITRUM", "BASE"] },
{ "symbol": "USDC", "name": "USD Coin", "networks": ["SOLANA", "ETHEREUM", "BASE"] },
{ "symbol": "USDT", "name": "Tether", "networks": ["TRX", "ETHEREUM", "SOLANA"] }
],
"scope": "popular"
}Campos da resposta
assetsarrayLista de ativos disponíveis.
assets[].symbolstringTicker do ativo (ex: SOL, BTC).
assets[].namestringNome completo do ativo.
assets[].networksarrayRedes disponíveis para saque (ex: SOLANA, BITCOIN).
scopestringEscopo aplicado: "popular" ou "all".
Obter Cotação
Retorna as taxas de câmbio atuais e, opcionalmente, calcula todos os valores da conversão para um montante específico. Útil para exibir ao usuário antes de criar a ordem.
Parâmetros de query
destAssetstringrequiredTicker do ativo de destino (ex: SOL, BTC, ETH, USDC).
destNetworkstringrequiredRede de saque (ex: SOLANA, BITCOIN, ETHEREUM). Deve ser uma das redes retornadas em /swap/assets.
amountInCentsnumberoptionalValor em centavos de DePix para calcular a conversão estimada. Omita para obter apenas as taxas.
Exemplo
GET /api/v1/swap/quote?destAsset=SOL&destNetwork=SOLANA&amountInCents=10000
X-Api-Key: sua_chave_aqui{
"sourceAsset": "DEPIX",
"destAsset": "SOL",
"destNetwork": "SOLANA",
"availableNetworks": ["SOLANA", "SPL"],
"usdtBrlRate": 5.87,
"usdtBrlRateBase": 5.75,
"destAssetUsdtRate": 148.32,
"platformFeeRate": 0.01,
"platformMinFeeInCents": 100,
"swapMinAmountInCents": 1000,
"swapMaxAmountInCents": 50000000,
"destWithdrawFee": 0.002,
"destWithdrawMin": 0.0345,
"amountInCents": 10000,
"platformFeeInCents": 100,
"netAmountInCents": 9900,
"usdtAmount": 1.6867,
"estimatedDestAmount": 0.011279,
"disclaimer": "Cotacao estimada. O valor final pode variar conforme as condicoes de mercado no momento da conversao."
}Campos da resposta
usdtBrlRatenumberTaxa DePix/USDT aplicada (com spread). Quantos reais por 1 USDT.
destAssetUsdtRatenumberPreço do ativo de destino em USDT (1 SOL = X USDT).
platformFeeRatenumberTaxa percentual da plataforma (ex: 0.01 = 1%).
platformMinFeeInCentsnumberTaxa mínima da plataforma em centavos.
swapMinAmountInCentsnumberValor mínimo aceito para criar uma conversão (em centavos).
swapMaxAmountInCentsnumberValor máximo aceito para criar uma conversão (em centavos).
destWithdrawFeenumberTaxa de saque da BTSE para a rede informada (em unidades do ativo destino).
destWithdrawMinnumberSaldo mínimo necessário para saque (inclui buffer de 15%).
platformFeeInCentsnumberTaxa da plataforma calculada para amountInCents (null se não informado).
netAmountInCentsnumberValor líquido após desconto da taxa da plataforma (em centavos).
usdtAmountnumberEquivalente em USDT do valor líquido.
estimatedDestAmountnumberQuantidade estimada do ativo de destino que será recebida, já descontada a taxa de saque.
Criar Conversão
Cria uma nova ordem de conversão DePix → cripto. Retorna o endereço Liquid para depósito do DePix e o token de acesso da ordem.
destAddress) é criptografado e nunca é retornado nas consultas posteriores — apenas uma versão mascarada. Guarde-o antes de criar a ordem.Parâmetros do body
amountInCentsnumberrequiredValor em centavos de DePix a converter. Deve estar dentro dos limites retornados pelo endpoint de cotação.
destAssetstringrequiredTicker do ativo de destino (ex: SOL, BTC, ETH). Deve ser um ativo suportado.
destNetworkstringrequiredRede de saque (ex: SOLANA, BITCOIN, ETHEREUM). Deve ser válida para o ativo informado.
destAddressstringrequiredEndereço da carteira de destino na rede informada. Validado por regex conforme a rede.
Exemplo
POST /api/v1/swap
Content-Type: application/json
X-Api-Key: sua_chave_aqui
{
"amountInCents": 10000,
"destAsset": "SOL",
"destNetwork": "SOLANA",
"destAddress": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"
}{
"swapOrder": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2026-03-31T10:00:00.000Z",
"updatedAt": "2026-03-31T10:00:00.000Z",
"status": "pending",
"source": { "type": "api" },
"quote": {
"amountInCents": 10000,
"destAsset": "SOL",
"destNetwork": "SOLANA",
"usdtBrlRate": 5.87,
"destAssetUsdtRate": 148.32,
"estimatedDestAmount": 0.011279,
"platformFeeInCents": 100,
"platformFeeRate": 0.01,
"netAmountInCents": 9900,
"usdtAmount": 1.6867,
"quotedAt": "2026-03-31T10:00:00.000Z",
"disclaimer": "Cotacao estimada..."
},
"deposit": {
"address": "lq1qqwd0c9x3u5s9n5rg9q7xge8f4rkns12345...",
"assetId": "ce091c998b83c78bb71a632313ba3...",
"assetLabel": "DePix",
"expectedAmountInCents": 10000,
"expectedAmountInBaseUnits": 10000,
"receivedAmountInCents": 0,
"receivedAmountInBaseUnits": 0,
"fundedAt": null,
"lastCheckedAt": null
},
"destination": {
"destAsset": "SOL",
"destNetwork": "SOLANA",
"destAddressMasked": "9WzDXw...AWWM"
},
"sideswap": { "swapTxid": null, "swappedAt": null, "usdtReceivedSat": null },
"btse": { "usdtConfirmedAt": null, "convertedAmount": null, "withdrawalSentAt": null },
"processing": {
"startedAt": null,
"finishedAt": null,
"lastAttemptAt": null,
"nextAttemptAt": null,
"phase": null
}
},
"swapToken": "Ts3xKp9mN2bVqFzR..."
}Campos importantes da resposta
swapOrder.idstringUUID único da conversão. Use para consultar o status.
swapOrder.statusstringStatus inicial sempre será "pending".
swapOrder.deposit.addressstringEndereço Liquid para depósito do DePix.
swapOrder.deposit.expectedAmountInCentsnumberValor exato a depositar em centavos (= amountInCents).
swapOrder.quote.estimatedDestAmountnumberQuantidade estimada do ativo de destino. O valor real pode variar conforme o mercado.
swapTokenstringToken de acesso à ordem. Guarde para referência.
Consultar Conversão
Retorna o estado atual de uma conversão. Faça polling a cada 15–30 segundos enquanto o status for não-terminal (não for completed, failed ou expired).
404.Exemplo
GET /api/v1/swap/550e8400-e29b-41d4-a716-446655440000
X-Api-Key: sua_chave_aqui
// Resposta — status: completed
{
"swapOrder": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"quote": { ... },
"deposit": {
"receivedAmountInCents": 10000,
"fundedAt": "2026-03-31T10:02:15.000Z",
...
},
"sideswap": {
"swapTxid": "a1b2c3d4e5f6...",
"swappedAt": "2026-03-31T10:03:00.000Z",
"usdtReceivedSat": 168670000
},
"btse": {
"usdtConfirmedAt": "2026-03-31T10:04:00.000Z",
"convertedAmount": 0.011279,
"withdrawalSentAt": "2026-03-31T10:05:30.000Z"
},
"processing": {
"startedAt": "2026-03-31T10:02:16.000Z",
"finishedAt": "2026-03-31T10:06:00.000Z",
"phase": "done"
}
}
}Campos de progresso
swapOrder.deposit.receivedAmountInCentsnumberValor de DePix já recebido no endereço de depósito.
swapOrder.deposit.fundedAtstringTimestamp em que o depósito foi detectado (null até confirmação).
swapOrder.sideswap.swapTxidstringTXID da conversão DePix→USDT no SideSwap.
swapOrder.sideswap.usdtReceivedSatnumberUSDT recebido em satoshis (8 casas decimais).
swapOrder.btse.usdtConfirmedAtstringTimestamp de confirmação do USDT na BTSE.
swapOrder.btse.convertedAmountnumberQuantidade de ativo de destino obtida na conversão (valor final).
swapOrder.btse.withdrawalSentAtstringTimestamp em que o saque foi enviado ao endereço de destino.
Status da Conversão
Fluxo típico: pending → swapping_depix_to_usdt → sending_usdt_to_btse → waiting_btse_deposit → converting → withdrawing → completed
DePixfy API v1 — Taxas Eulen padrão: 1,0% (mín. R$ 1,00) · Comissão padrão: 1,5% (mín. 1 DePix)