Skip to main content
POST /v2/wallets returns the wallet immediately. Its status is creating while initial setup is in progress, or idle when a prepared wallet is available. Poll GET /v2/wallets/{id} for wallet activation and use only deposit addresses returned for the intended network. Address readiness is independent of wallet activity status. EVM, Solana, TRON, and Stellar address setup proceeds automatically. See Stellar integration for Stellar funding and approval behavior.

Create a portfolio wallet

Place each yield source under its catalog allocationGroup from GET /v2/wallets/assets. Use cash to keep funds uninvested in that group; omitted groups start at 100% cash. See Allocation groups for network compatibility and How Auto Rebalancing Works to choose automatic or manual allocation. The request above uses RWA sources available in the production catalog. Both production and sandbox expose ground-jaaa-usdt-vault under usdt. Sandbox also exposes token-specific JTRSY rows when returned by its live catalog: ground-jtrsy-usdc-vault belongs under usdc, and ground-jtrsy-usdt-vault belongs under usdt. Always use the live environment-specific catalog rather than assuming a row is active. A first POST with a new requestId returns 200 OK. A wallet still being created has no deposit addresses and zero balances; its configured targets can already appear as zero-value positions. A prepared wallet can return immediately with its ready addresses. An idempotent replay with the same requestId and an identical payload returns 200 OK with the wallet’s current state. Reusing a requestId with a divergent payload (different label or allocations) returns 409 request_id_conflict — use a fresh requestId for a genuinely new wallet. See Idempotency for the full comparison rules.

Creating response

Polling for activation

Poll GET /v2/wallets/{id} every 1-2 seconds until the wallet becomes active or fails. The example below waits for activation; before funding, also check address readiness for the intended network:
See Polling for more on the poll pattern.

Ready response

Once status === "idle", the wallet is active. Fund only a network whose address has appeared in depositAddresses. Other networks may still be preparing their addresses. See Address readiness. This example shows the addresses already available:

Sandbox ready response

This sandbox example uses a cash strategy and shows all four automatically prepared deposit networks: Ethereum Sepolia, Solana Devnet, TRON Shasta, and Stellar Testnet. During provisioning, only ready network addresses appear:

Key fields

Failed response

If wallet setup fails terminally, GET /v2/wallets/{id} returns:
Failed wallets cannot be recovered by retrying the same requestId. Create a new wallet with a fresh requestId and contact support if the failure reason is unclear.

Rebalancing

Portfolio wallets are best-effort targets. Over time, or after deposits and withdrawals, holdings drift from target allocations. The system rebalances to bring positions back toward the strategy targets. Deposits first appear as cash and are then deployed into the configured yield sources.

Sandbox notes

Use the network-specific testnet address returned by your wallet and the supported test asset for that network. See Supported Chains for Ethereum Sepolia, Solana Devnet, Stellar Testnet, and TRON Shasta funding.