First request

Create a separate wallet for a treasury, strategy, or customer balance. This request needs a bearer key and a unique idempotency key.

POST /v1/wallets
curl https://starswap.cc/api/v1/wallets \
  -X POST \
  -H "Authorization: Bearer $STARSWAP_API_KEY" \
  -H "Idempotency-Key: wallet-$(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"Treasury"}'

Response

The new wallet includes chain-qualified EVM and Solana addresses with an independent stablecoin balance.

200 OK
{
  "id": "wlt_treasury",
  "ownerAccountId": "usr_example",
  "depositRecipientId": "1234567890",
  "kind": "subwallet",
  "name": "Treasury",
  "state": "active",
  "addresses": [
    {
      "family": "evm",
      "address": "0x7A18d4F951B0134436A1b17854F171Aa05E0F32b"
    },
    {
      "family": "solana",
      "address": "HAgk14JpMQLgt6rVgv7cBQFJWFto5Dqxi472uT3DKpqk"
    }
  ],
  "balance": {
    "availableMicros": "0",
    "reservedMicros": "0",
    "gasReservedMicros": "0",
    "pendingSettlementMicros": "0"
  },
  "createdAt": "2026-08-07T09:24:00.000Z"
}

pendingSettlementMicros is confirmed EVM sell value that is already part of the wallet's account value but is not spendable until its vault deposit reaches the chain's required finality.

Save the wallet id. Trading, transfers, portfolio reads, exports, and settlement tickets use it explicitly.

The identifiers and addresses above are illustrative. depositRecipientId is the wallet's onchain vault-deposit identifier. Read its actual value from the wallet response when building a deposit transaction.