BinanceTransfer: Universal Transfer Management
BinanceTransfer: Universal Transfer Management
Details
Provides methods for initiating and querying universal transfers between wallet types on Binance. Inherits from BinanceBase.
Purpose and Scope
Transfer Initiation: Move assets between spot, margin, futures, and funding wallets using the universal transfer endpoint.
Transfer History: Query transfer records with pagination support.
Usage
All methods require authentication (valid API key and secret).
These are wallet (/sapi/) endpoints, not spot (/api/) endpoints.
Endpoints Covered
| Method | Endpoint | HTTP |
| add_transfer | POST /sapi/v1/asset/transfer | POST |
| get_transfer_history | GET /sapi/v1/asset/transfer | GET |
Transfer Types
MAIN_UMFUTURE: Spot to USDM FuturesMAIN_CMFUTURE: Spot to COINM FuturesMAIN_MARGIN: Spot to Cross MarginUMFUTURE_MAIN: USDM Futures to SpotUMFUTURE_MARGIN: USDM Futures to Cross MarginCMFUTURE_MAIN: COINM Futures to SpotMARGIN_MAIN: Cross Margin to SpotMARGIN_UMFUTURE: Cross Margin to USDM FuturesMAIN_FUNDING: Spot to FundingFUNDING_MAIN: Funding to SpotFUNDING_UMFUTURE: Funding to USDM FuturesUMFUTURE_FUNDING: USDM Futures to FundingMARGIN_FUNDING: Cross Margin to FundingFUNDING_MARGIN: Funding to Cross MarginFUNDING_CMFUTURE: Funding to COINM FuturesCMFUTURE_FUNDING: COINM Futures to FundingMAIN_ISOLATED_MARGIN: Spot to Isolated MarginISOLATED_MARGIN_MAIN: Isolated Margin to Spot
Super class
binance::BinanceBase -> BinanceTransfer
Methods
Inherited methods
Method add_transfer()
Initiate a Universal Transfer
Transfers assets between wallet types (spot, margin, futures, funding).
Official Documentation
Binance Universal Transfer Verified: 2026-03-10
Usage
BinanceTransfer$add_transfer(
type,
asset,
amount,
fromSymbol = NULL,
toSymbol = NULL,
recvWindow = NULL
)Arguments
typeCharacter; transfer type. One of
"MAIN_UMFUTURE","MAIN_CMFUTURE","MAIN_MARGIN","UMFUTURE_MAIN","UMFUTURE_MARGIN","CMFUTURE_MAIN","MARGIN_MAIN","MARGIN_UMFUTURE","MAIN_FUNDING","FUNDING_MAIN","FUNDING_UMFUTURE","UMFUTURE_FUNDING","MARGIN_FUNDING","FUNDING_MARGIN","FUNDING_CMFUTURE","CMFUTURE_FUNDING","MAIN_ISOLATED_MARGIN","ISOLATED_MARGIN_MAIN".assetCharacter; asset to transfer (e.g.,
"USDT").amountNumeric; amount to transfer.
fromSymbolCharacter or NULL; mandatory when
typeinvolves isolated margin (e.g.,"BNBUSDT").toSymbolCharacter or NULL; mandatory when
typeinvolves isolated margin (e.g.,"BNBUSDT").recvWindowInteger or NULL; max 60000.
Method get_transfer_history()
Query Universal Transfer History
Retrieves transfer history for a given transfer type, with optional time range and pagination.
Official Documentation
Binance Universal Transfer Verified: 2026-03-10
Usage
BinanceTransfer$get_transfer_history(
type,
startTime = NULL,
endTime = NULL,
current = NULL,
size = NULL,
fromSymbol = NULL,
toSymbol = NULL,
recvWindow = NULL
)Arguments
typeCharacter; transfer type. Same options as
add_transfer().startTimeInteger or NULL; start timestamp in milliseconds.
endTimeInteger or NULL; end timestamp in milliseconds.
currentInteger or NULL; current page (default 1, starting from 1).
sizeInteger or NULL; page size (default 10, max 100).
fromSymbolCharacter or NULL; must be sent when
typeinvolves isolated margin.toSymbolCharacter or NULL; must be sent when
typeinvolves isolated margin.recvWindowInteger or NULL; max 60000.
Returns
data.table with one row per transfer and the following columns:
asset(character): Transferred asset (e.g.,"USDT").amount(character): Amount transferred.type(character): Transfer type (e.g.,"MAIN_UMFUTURE").status(character): Transfer status ("CONFIRMED","FAILED","PENDING").tran_id(numeric): Unique transfer identifier.timestamp(POSIXct): Transfer time converted from milliseconds.
Examples
if (FALSE) { # \dontrun{
# Synchronous
transfer <- BinanceTransfer$new()
result <- transfer$add_transfer(
type = "MAIN_UMFUTURE", asset = "USDT", amount = 100
)
print(result)
# Asynchronous
transfer_async <- BinanceTransfer$new(async = TRUE)
main <- coro::async(function() {
result <- await(transfer_async$add_transfer(
type = "MAIN_UMFUTURE", asset = "USDT", amount = 100
))
print(result)
})
main()
while (!later::loop_empty()) later::run_now()
} # }
## ------------------------------------------------
## Method `BinanceTransfer$add_transfer`
## ------------------------------------------------
if (FALSE) { # \dontrun{
transfer <- BinanceTransfer$new()
result <- transfer$add_transfer(
type = "MAIN_UMFUTURE", asset = "USDT", amount = 100
)
print(result)
} # }
## ------------------------------------------------
## Method `BinanceTransfer$get_transfer_history`
## ------------------------------------------------
if (FALSE) { # \dontrun{
transfer <- BinanceTransfer$new()
history <- transfer$get_transfer_history(type = "MAIN_UMFUTURE")
print(history)
} # }