Custodian
Assets & Transactions

Assets & Transactions

Read the public token catalog (no auth), your off-chain balances per token, and your ledger history. Balance and history endpoints require authentication.

Balance type: Everything on this page except List Allowed Tokens is off-chain — your app's ledger balance at Xellar, not a live blockchain read. See Understanding Balances.

For per_app (default), there is one row per token. For per_wallet, there is one row per token and deposit walletId.

List Allowed Tokens (Public)

Returns every active allowed token and its active network. No authentication. Use this to populate token/network pickers for invoices, withdraws, and listen flows.

The payload is catalog data only: token id, code, symbol, decimals, contract address, and network id/code/type/chainId. It does not include RPC URLs, credentials, or other infrastructure fields.

GET /api/v1/tokens

Query Parameters

ParamTypeDescription
networkstringOptional. Filter by network code (for example ethereum, tron)

Response 200

{
  "data": [
    {
      "id": "tok_abc123",
      "tokenCode": "usdt-ethereum",
      "symbol": "USDT",
      "decimals": 6,
      "tokenAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
      "network": {
        "id": "net_abc123",
        "code": "ethereum",
        "type": "evm",
        "chainId": 1
      }
    }
  ]
}
FieldDescription
idAllowed token UUID
tokenCodeUnique token code (for example usdt-ethereum)
symbolDisplay symbol (for example USDT)
decimalsOn-chain decimals
tokenAddressToken contract address on that network
network.idNetwork UUID
network.codeNetwork code used elsewhere in the API (ethereum, polygon-pos, tron, …)
network.typeSigning family: evm, tron, solana, or bitcoin
network.chainIdChain id (EVM/TRON); 0 when not applicable

Inactive tokens and tokens on inactive networks are omitted.

Off-Chain Balance Fields

Each token asset has three balance buckets:

FieldDescription
pendingBalanceOff-chain. Incoming amount detected but not yet finalized into your spendable balance.
activeBalanceOff-chain. Spendable balance. Withdrawals check and deduct from this.
withholdBalanceOff-chain. Amount temporarily held while a withdrawal is in progress.

latestBalance in transaction history is also off-chain — it is a snapshot of activeBalance after each ledger entry.

List Assets

GET /api/v1/assets

Returns off-chain balances per token.

Query Parameters

ParamTypeDefaultDescription
pageint1Page number
limitint20Items per page
walletIdstringFilter to one deposit wallet (per_wallet apps)

Response 200

{
  "data": {
    "items": [
      {
        "tokenCode": "USDT",
        "network": "ethereum",
        "networkType": "evm",
        "chainId": 1,
        "tokenAddress": "0x...",
        "symbol": "USDT",
        "decimals": 6,
        "walletId": "wal_1",
        "pendingBalance": 0,
        "activeBalance": 100.5,
        "withholdBalance": 0
      }
    ],
    "total": 5,
    "page": 1,
    "limit": 20
  }
}

walletId is present on per_wallet apps and omitted on per_app.

FieldBalance typeDescription
walletIdDeposit wallet UUID (per_wallet only)
pendingBalanceOff-chainIncoming, not yet spendable
activeBalanceOff-chainSpendable balance
withholdBalanceOff-chainReserved for in-flight withdrawals

Get Asset by Token Code

GET /api/v1/assets/:tokenCode{ "data": { /* single asset */ } }

Optional query walletId — required to pick a single row when the app is per_wallet and the token has balances on more than one wallet.

Returns off-chain balance for one token. Response fields match List Assets.

CodeMeaning
404Asset/token not found

List Transaction History

GET /api/v1/transaction-histories

Returns your off-chain ledger — credits and debits that changed your balance over time.

Query Parameters

ParamTypeDescription
pageintDefault 1
limitintDefault 20
startDatestringRFC3339 or YYYY-MM-DD
endDatestringRFC3339 or YYYY-MM-DD
transactionTypestringdeposit, withdraw, withdraw_fee
methodstringcredit or debit
tokenCodestringFilter by token

Response 200

{
  "data": {
    "items": [
      {
        "id": "txn_abc123",
        "tokenCode": "USDT",
        "network": "ethereum",
        "symbol": "USDT",
        "method": "credit",
        "transactionType": "deposit",
        "amount": 100,
        "latestBalance": 100.5,
        "referenceType": "invoice",
        "referenceId": "inv_abc123",
        "createdAt": "2026-01-01T00:00:00Z"
      }
    ],
    "total": 20,
    "page": 1,
    "limit": 20
  }
}
FieldBalance typeDescription
amountOff-chainLedger credit/debit amount
latestBalanceOff-chainactiveBalance after this entry
CodeMeaning
400Invalid date range, transactionType, or method
404Token not found