Skip to main content
Creating a wallet is asynchronous. POST /v2/wallets returns immediately with status: "creating". 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. Stellar deposits require a separate one-time setup after the wallet becomes active.

Create a portfolio wallet

Place each yield source under its catalog allocationGroup from GET /v2/wallets/yield-sources. 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 with a minimal creating envelope (no deposit addresses, zero balances). 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; overall address setup can still be provisioning. See Address readiness. This example shows the addresses already available:

Sandbox ready response

Sandbox returns the same wallet shape with explicit testnet keys for its two supported USDC chains:

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.