GeminiGemini
SandboxGet API key
  • Crypto Trading
  • Prediction Markets
Changelog
Gemini Crypto Exchange LogoGemini Crypto Exchange Logo

© 2026 Gemini Space Station, Inc.

REST APIs
    Orders
    Market Data
    Derivatives
    Margin Trading
    Staking
    Clearing
    Instant Orders
    Fund Management
      Get Available BalancesGet Notional BalancesList Deposit AddressesCreate New Deposit AddressList Past TransfersList Custody Fee TransfersWithdraw Crypto FundsGet Gas Fee EstimationAdd BankAdd Bank (CAD)List Payment MethodsList Approved AddressesCreate New Approved AddressRemove Approved AddressTransfer Between AccountsGet Transaction History
WebSocket
    AuthenticationMessage Format
    Streams
      Book TickerL2 Partial DepthL2 Differential DepthTrade StreamOrder EventsBalance Updates
    Playground
      Overviewconninfopingtimesubscribeunsubscribelist_subscriptionsdepthorder.placeorder.cancelorder.cancel_allorder.cancel_session
Agentic
FIX

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
Last modified on May 5, 2026