> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crypto.westminister.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Solana (USDT/USDC)

> BitGo custody support for Solana SPL stablecoins and treasury multisig

EmaalCoin provisions **Solana** wallets and sends **USDT**/**USDC** over SPL when **BitGo custody** is enabled. Self-custody Solana key generation is **not** supported.

## Enable on the Server

Set in `.env` (after confirming BitGo Solana on your enterprise):

```env theme={null}
FF_SOLANA_ENABLED=true
CUSTODY_PROVIDER=bitgo

BITGO_SOL_COIN=tsol          # or sol on mainnet
BITGO_SOL_USDT_TOKEN=usdt
BITGO_SOL_USDC_TOKEN=usdc
BITGO_SOL_TOKEN_DECIMALS=6

SOLANA_NETWORK=devnet        # informational/future RPC watcher
SOLANA_RPC_URL=https://api.devnet.solana.com
```

Existing BitGo flags (`FF_BITGO_NEW_WALLETS`, `FF_BITGO_TRANSFERS_P2P`, `FF_BITGO_TRANSFERS_B2B`, `FF_BITGO_BALANCE_READS`, webhooks) apply to Solana wallets the same way as TRON and Ethereum.

## User Onboarding

New users receive three default wallets:

* **Ethereum Wallet** (`network: ethereum`)
* **TRON Wallet** (`network: tron`)
* **Solana Wallet** (`network: solana`)

Each wallet has ledger rows for **native** (ETH/TRX/SOL), **USDT**, and **USDC**.

## Wallet Provisioning

`POST /api/v1/auth/wallets/for-owner` creates a wallet on the **`network`** you pass (e.g. `"network": "solana"` for an existing user who needs a Solana address).

Set **`"provision_all_networks": true`** when you want **ethereum**, **tron**, and **solana** wallets in one call (e.g. a new vendor spending-wallet set). The `network` field selects which wallet is primary in the response (`wallet` + `balances`). The full set is returned in **`wallets`** when **`provision_all_networks`** is true.

Additional Solana wallets can also be created via `POST /api/v1/auth/wallets` with `"network": "solana"`.

## Multisig (Treasury/B2B)

BitGo treasury multisig supports **`network: solana`** with multisig type **`bitgo_sol`**. B2B transfers from BitGo-managed multisig wallets route through BitGo `sendcoins` (same as `bitgo_evm` and `bitgo_tron`). Self-custody Gnosis/TRON native multisig remains ETH/TRON only.

## Transfers

P2P and B2B transfer endpoints accept `"network": "solana"` and `"asset": "USDT"` or `"USDC"`. Sends route through BitGo `sendcoins` the same as other chains.

**Important:** always pass **`network` explicitly** for Solana. The API does **not** infer Solana from a base58 address (TRON also uses base58).

## Not in V1

* Self-custody Solana wallets or SPL signing
* Escrow watcher SPL deposit detection (off-ramp escrow on Solana)
* On-ramp address inference from destination address alone

## Verify BitGo First

Before production traffic, confirm in BitGo testnet:

1. Create a `tsol` custodial wallet
2. Receive SPL USDC/USDT
3. Send to a second address
4. Webhook + reconciler update transfer status

Document the exact coin and token strings from your BitGo enterprise — they can differ by environment.
