Skip to content

Crypto Wallets

Todos os endpoints exigem Authorization: Bearer <token> e são escopados pelo tenant (clientId) resolvido do OAuth.

Visão geral

A API de Crypto Wallets permite gerar carteiras blockchain custodiais, receber depósitos, transferir, e consultar saldo e histórico onchain.

A criação de carteira é por família de chain: EVM, BTC, TRON, SOLANA, XRPL — uma carteira EVM (um único endereço) atende ETHEREUM, POLYGON e BSC. Já em saldo, histórico e transferência você informa a rede específica (ETHEREUM, POLYGON, BSC, BITCOIN, TRON, SOLANA, XRPL), pois os tokens vivem por rede.

Fluxos principais:

  1. Criar carteira (POST /v1/crypto/wallets) ou endereço de checkout (POST /v1/crypto/checkout/address, forward wallet que faz varredura automática).
  2. Receber depósito — o provedor notifica via webhook; o evento crypto-cash-in é reentregue ao seu webhook registrado.
  3. Consultar saldo (/balance) e histórico (/history).
  4. Transferir / saque (POST /v1/crypto/transfer).

POST /v1/crypto/wallets

Cria uma carteira custodial para a família de chain informada e a registra sob o tenant.

Headers:

HeaderValue
AuthorizationBearer <token>
Content-Typeapplication/json

Request Body:

json
{
  "network": "EVM",
  "userId": "user-123",
  "isForwardPayment": 0
}
FieldTypeRequiredDescription
networkstringYesFamília de chain: EVM | BTC | TRON | SOLANA | XRPL
userIdstringNoReferência do usuário no seu sistema (isola a carteira dentro do tenant)
isForwardPaymentintegerNo1 cria uma forward wallet (checkout) que varre os fundos recebidos

Response 200 OK:

json
{
  "message": "Wallet created",
  "data": {
    "walletId": "a1b2c3d4-0000-0000-0000-000000000000",
    "address": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432",
    "network": "EVM",
    "coin": "EVM",
    "isForwardPayment": 0
  }
}

POST /v1/crypto/checkout/address

Cria um endereço de depósito de checkout (forward wallet). Os fundos recebidos são varridos automaticamente para a carteira mestre e disparam o webhook crypto-cash-in.

Request Body:

json
{
  "network": "EVM",
  "reference": "order-9911"
}
FieldTypeRequiredDescription
networkstringYesFamília de chain: EVM | BTC | TRON | SOLANA | XRPL
referencestringNoSua referência (ex.: id do pedido)

Response 200 OK:

json
{
  "message": "Checkout address created",
  "data": {
    "address": "0x1122334455667788990011223344556677889900",
    "network": "EVM",
    "reference": "order-9911"
  }
}

GET /v1/crypto/wallets

Lista as carteiras do tenant.

Query Parameters:

ParameterTypeRequiredDescription
networkstringNoFiltra por família de chain
statusstringNoFiltra por status
limitintegerNoTamanho da página
offsetintegerNoDeslocamento

Response 200 OK:

json
{
  "message": "Success",
  "data": [
    {
      "id": "a1b2c3d4-0000-0000-0000-000000000000",
      "clientId": "tenant-1",
      "network": "EVM",
      "address": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432",
      "coin": "EVM",
      "status": "ACTIVE",
      "isForwardPayment": 0,
      "createdAt": "2026-06-06T12:00:00.000Z"
    }
  ]
}

GET /v1/crypto/wallets/{address}/balance

Saldo nativo e de tokens de uma carteira.

Query Parameters:

ParameterTypeRequiredDescription
networkstringYesRede específica: ETHEREUM | POLYGON | BSC | BITCOIN | TRON | SOLANA | XRPL
tokenAddressstringNoEndereço do contrato do token (filtra o saldo)

Response 200 OK:

json
{
  "message": "Success",
  "data": [
    {
      "address": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432",
      "asset": "MATIC",
      "decimals": 18,
      "balance": "12.5",
      "type": "native"
    },
    {
      "address": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432",
      "asset": "USDT",
      "decimals": 6,
      "balance": "1000.00",
      "tokenAddress": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f"
    }
  ]
}

GET /v1/crypto/wallets/{address}/history

Histórico de transações onchain de uma carteira.

Query Parameters:

ParameterTypeRequiredDescription
networkstringYesRede específica: ETHEREUM | POLYGON | BSC | BITCOIN | TRON | SOLANA | XRPL
pageintegerNoPágina (0-based)
pageSizeintegerNoTamanho da página (default 50)
tokenAddressstringNoFiltra por contrato de token

Response 200 OK:

json
{
  "message": "Success",
  "data": [
    {
      "chain": "polygon-mainnet",
      "hash": "0xabc123...",
      "address": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432",
      "blockNumber": 58123456,
      "amount": "1000.00",
      "transactionSubtype": "incoming",
      "counterAddress": "0x4444...",
      "timestamp": 1749200000000
    }
  ]
}

POST /v1/crypto/transfer

Submete uma transferência onchain a partir de uma carteira (cash-out).

Request Body:

json
{
  "network": "POLYGON",
  "fromAddress": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432",
  "to": "0x4444555566667777888899990000aaaabbbbcccc",
  "amount": "10.5",
  "tokenAddress": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
  "decimals": 6
}
FieldTypeRequiredDescription
networkstringYesRede específica: ETHEREUM | POLYGON | BSC | BITCOIN | TRON | SOLANA | XRPL
fromAddressstringYesEndereço de origem
tostringYesEndereço de destino
amountstringYesValor (decimal em string)
tokenAddressstringNoContrato do token (transferência de token)
decimalsintegerNoDecimais do token

Response 200 OK:

json
{
  "message": "Success",
  "data": {
    "txHash": "0xabc123..."
  }
}

Depósitos (webhook)

Os depósitos recebidos nas carteiras são entregues ao seu webhook como o evento crypto-cash-in. Registre seu webhook e veja o modelo de dados na seção Webhooks.