Skip to content

Get Deposit Address

Retrieves the deposit address for a portfolio's vault on a specific blockchain. This endpoint is useful for getting the vault address where users should send their deposits.

Endpoint

Portfolio API: GET https://ddp.definitive.fi/v2/portfolio/address/{chain}

Organization API: Replace /v2/portfolio/ with /v2/organization/portfolios/{portfolioId}/. See Portfolio vs. Organization API.

Path Parameters

ParameterTypeRequiredDescription
chainstringYesBlockchain network (see Supported Networks for full list)

Query Parameters

ParameterTypeRequiredDescription
walletAddressstringYesUser wallet address for the chain

Examples

const ethAddress = await AuthHelpers.signAndSend({
  path: "/v2/portfolio/address/ethereum",
  method: "GET",
  queryParams: {
    walletAddress: "0x742d35Cc6634C0532925a3b8D400eE6a0b8CBd6",
  },
  apiKey: process.env.API_KEY,
  apiSecret: process.env.API_SECRET,
});

For Solana, use the solana chain and a Solana wallet address:

const solanaAddress = await AuthHelpers.signAndSend({
  path: "/v2/portfolio/address/solana",
  method: "GET",
  queryParams: {
    walletAddress: "GszaaaaaaaaaaaaaaaaaaaaaaaaVcx",
  },
  apiKey: process.env.API_KEY,
  apiSecret: process.env.API_SECRET,
});

Response

{
  vaultId: "00000000-0000-0000-0000-000000000002",
  address: "0x1234567890abcdef1234567890abcdef12345678"
}

Response Fields

FieldTypeDescription
vaultIdstringUUID of the vault associated with the address
addressstringThe deposit address where funds should be sent

Notes

  • Vault Creation: If a vault doesn't exist for the specified chain, it will be created automatically
  • Address Format: The returned address is the actual blockchain address where deposits should be sent
  • Chain Compatibility: The walletAddress parameter must be a valid address format for the specified chain
  • Authentication: Requests must be signed and include the correct headers. See Request Authorization for details

Integration with Deposit Flow

  1. Get Deposit Address: Call this endpoint to retrieve the vault address
  2. Send Funds: Users send their assets to the returned address
  3. Process Deposit: For depositing native EVM assets (e.g. ETH/BNB/MATIC/AVAX), Organization API users should call the Refresh Balance endpoint after depositing. All other assets will be automatically detected and credited to the portfolio.

Example Integration

// Step 1: Get the deposit address
const addressResponse = await AuthHelpers.signAndSend({
  path: "/v2/portfolio/address/ethereum",
  method: "GET",
  queryParams: {
    walletAddress: "0x742d35Cc6634C0532925a3b8D400eE6a0b8CBd6",
  },
  apiKey: process.env.API_KEY,
  apiSecret: process.env.API_SECRET,
});
 
const vaultAddress = addressResponse.address;
 
// Step 2: User sends funds to vaultAddress
// (This happens outside the API - user sends ETH/tokens to the address)
 
// Step 3: Assets will be automatically detected and credited to the portfolio.
// For native EVM assets (e.g. ETH/BNB/MATIC/AVAX), call "Refresh Balance"
// and wait 1-2 seconds for portfolio to update.

Common Pitfalls & Tips

  • walletAddress format: Ensure the wallet address matches the expected format for the specified chain
  • Vaults are auto-created: If a vault doesn't exist, it will be created automatically
  • Address reuse: The same address can be used for multiple deposits to the same vault
  • Chain-specific addresses: Each chain has different address formats (EVM vs Solana)