> ## 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.

# Ethereum (USDT/USDC)

> BitGo Custody Support for Ethereum ERC-20 Stablecoins and Treasury Multisig

EmaalCoin provisions **Ethereum** wallets and sends **USDT**/**USDC** over ERC-20 when **BitGo custody** is enabled. Self-custody Ethereum wallets remain available where configured; BitGo is required for platform-managed treasury multisig on EVM.

## Enable on the Server

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

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

BITGO_ETH_COIN=teth          # or eth on mainnet
BITGO_ETH_USDT_TOKEN=usdt
BITGO_ETH_USDC_TOKEN=usdc
BITGO_ETH_TOKEN_DECIMALS=6
```

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

## 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": "ethereum"`).

Set **`"provision_all_networks": true`** when you want **ethereum**, **tron**, and **solana** wallets in one call. 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 Ethereum wallets can also be created via `POST /api/v1/auth/wallets` with `"network": "ethereum"`.

## Multisig (Treasury/B2B)

BitGo treasury multisig supports **`network: ethereum`** with multisig type **`bitgo_evm`**. B2B transfers from BitGo-managed multisig wallets route through BitGo `sendcoins` (same as `bitgo_tron` and `bitgo_sol`). Self-custody Gnosis Safe collaborative signing remains available for non-BitGo Ethereum multisig. See **Multisig (Treasury/B2B)**.

## Transfers

P2P and B2B transfer endpoints accept `"network": "ethereum"` and `"asset": "USDT"` or `"USDC"`. Sends route through BitGo `sendcoins` when the wallet is BitGo-managed.

Ethereum addresses are `0x…` (hex). Pricing and on/off-ramp flows commonly infer Ethereum from a `0x` destination when network is not set explicitly.

## Verify BitGo First

Before production traffic, confirm in BitGo testnet:

1. Create a `teth` custodial wallet
2. Receive ERC-20 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.
