GeminiGemini
Demo environmentGet API key
  • Overview
  • Crypto Trading
  • Prediction Markets
  • Perpetuals
  • Stocks
  • API Reference
  • SDKs & Tools
Changelog
Gemini logoGemini logo

© 2026 Gemini Space Station, Inc.

Overview
Spot
    OverviewGet started
    Orders API
    Market Data API
    Fund Management API
      Crypto Fund Management
      Cash & Fiat Management
      Balances & Account Transfers
        Get Available BalancesGet Notional BalancesTransfer Between AccountsList Past TransfersGet Transaction HistoryList Custody Fee Transfers
    Instant Orders API
    WebSocket API
    FIX API
Margin
    Overview
    Margin REST API
      Get Margin Account SummaryGet Margin Interest RatesPreview Margin Order Impact
Staking
    Overview
    Staking REST API
      List Staking BalancesStake Crypto FundsUnstake Crypto FundsList Staking Event HistoryList Staking RatesList Staking Rewards
Clearing
    Clearing REST API
      Clearing Orders
      Broker & Trade Operations

Transfer Between Accounts

TradingFund ManagementTransfer Between Accounts

Transfer Between Accounts

POSThttps://api.gemini.com/v1/account/transfer/{currency}

Executes an internal transfer between any two accounts within your Master Group. Exchange-to-exchange transfers have no blockchain activity; all other combinations result in blockchain movement.

Note

Gemini Custody withdrawals occur during the daily custody run. Custody-to-Exchange transfers receive pre-credit. Custody accounts request withdrawals to approved addresses and require approved IP controls.

Custody accounts do not support fiat transfers. Fiat transfers between non-derivative and derivatives accounts are prohibited.

POSTv1/account/transfer/btc
curl --request POST \
  --url https://api.gemini.com/v1/account/transfer/btc \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "request": "/v1/account/transfer/btc",
  "nonce": "<nonce>",
  "sourceAccount": "primary",
  "targetAccount": "my-secondary-account",
  "amount": "1.0"
}
'

Roles

The API key you use to access this endpoint must be a Master level key with the Fund Manager role assigned. See Roles for more information.

Headers

X-GEMINI-APIKEYstring·required
Your API key
X-GEMINI-SIGNATUREstring·required
HEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring·required
Base64-encoded JSON payload
Content-Typestring
Default: text/plain
Content-Lengthstring
Default: 0
Cache-Controlstring
Default: no-cache

Path Parameters

currencystring·required
Either a fiat currency, e.g. usd or gbp, or a supported crypto-currency, e.g. gusd, btc, eth, aave, etc.

Request Body

requeststring·required
The string `/v1/account/transfer/:currency` where `:currency` is replaced with either `usd` or a supported crypto-currency, e.g. `gusd`, `btc`, `eth`, `aave`, etc. See [Symbols and minimums](/market-data/symbols-and-minimums).
nonceTimestampType | integer·required
timestampExample: 1495127793000
sourceAccountstring·required
Nickname of the account you are transferring from. Use the [Get Accounts endpoint](/rest/account-administration#list-accounts-in-group) to get all account names in the group.
targetAccountstring·required
Nickname of the account you are transferring to. Use the [Get Accounts endpoint](/rest/account-administration#list-accounts-in-group) to get all account names in the group.
amountstring·required
Quoted decimal amount to withdraw
clientTransferIdstring
A unique identifier for the internal transfer, in uuid4 format
withdrawalIdstring
Unique ID of the requested withdrawal.
Example request body
{
  "request": "/v1/account/transfer/btc",
  "nonce": "<nonce>",
  "sourceAccount": "primary",
  "targetAccount": "my-secondary-account",
  "amount": "1.0"
}

Responses

JSON response

fromAccountstring
Source account where funds are sent from
toAccountstring
Target account to receive funds in the internal transfer
amountstring
Quantity of assets being transferred
feestring
Fee taken for the transfer. Exchange account to exchange account transfers will always be free and will not be deducted from the free monthly transfer amount for that account.
currencystring
Display Name. Can be `Bitcoin`, `Ether`, `Zcash`, `Litecoin`, `Dollar`, etc.
withdrawalIdstring
_Excludes_ exchange to exchange. Unique ID of the requested withdrawal
uuidstring
_Only_ for exchange to exchange. Unique ID of the completed transfer
messagestring
Message describing result of withdrawal. Will inform of success, failure, or pending blockchain transaction.
txHashstring
_Only for Ethereum network transfers. Excludes exchange to exchange transfers_. Transaction hash for ethereum network transfer.
Example Responses
{
  "fromAccount": "my-account",
  "toAccount": "my-other-account",
  "amount": "1",
  "currency": "Bitcoin",
  "uuid": "9c153d64-83ba-4532-a159-ebe3f6797766",
  "message": "Success, transfer completed."
}
PreviousRemove Approved AddressNextGet Transaction History