BinanceEarn: Simple Earn Management
BinanceEarn: Simple Earn Management
Details
Provides methods for subscribing, redeeming, and querying Simple Earn flexible and locked products on Binance. Inherits from BinanceBase.
Purpose and Scope
Product Discovery: List available flexible and locked earn products.
Subscriptions: Subscribe to flexible or locked products.
Redemptions: Redeem from flexible or locked positions.
Positions: Query current flexible and locked positions.
History: Retrieve subscription and redemption history records.
Usage
All methods require authentication (valid API key and secret).
These are wallet (/sapi/) endpoints, not spot (/api/) endpoints.
Endpoints Covered
| Method | Endpoint | HTTP |
| get_flexible_products | GET /sapi/v1/simple-earn/flexible/list | GET |
| get_locked_products | GET /sapi/v1/simple-earn/locked/list | GET |
| add_flexible_subscription | POST /sapi/v1/simple-earn/flexible/subscribe | POST |
| add_locked_subscription | POST /sapi/v1/simple-earn/locked/subscribe | POST |
| add_flexible_redemption | POST /sapi/v1/simple-earn/flexible/redeem | POST |
| add_locked_redemption | POST /sapi/v1/simple-earn/locked/redeem | POST |
| get_flexible_position | GET /sapi/v1/simple-earn/flexible/position | GET |
| get_locked_position | GET /sapi/v1/simple-earn/locked/position | GET |
| get_flexible_subscription_history | GET /sapi/v1/simple-earn/flexible/history/subscriptionRecord | GET |
| get_locked_subscription_history | GET /sapi/v1/simple-earn/locked/history/subscriptionRecord | GET |
| get_flexible_redemption_history | GET /sapi/v1/simple-earn/flexible/history/redemptionRecord | GET |
| get_locked_redemption_history | GET /sapi/v1/simple-earn/locked/history/redemptionRecord | GET |
Super class
binance::BinanceBase -> BinanceEarn
Methods
Inherited methods
Method get_flexible_products()
Get Flexible Products
Lists available Simple Earn flexible products, optionally filtered by asset.
Official Documentation
Binance Simple Earn Flexible List Verified: 2026-03-10
Usage
BinanceEarn$get_flexible_products(
asset = NULL,
current = NULL,
size = NULL,
recvWindow = NULL
)Arguments
assetCharacter or NULL; filter by asset (e.g.,
"USDT").currentInteger or NULL; current page (default 1, starting from 1).
sizeInteger or NULL; page size (default 10, max 100).
recvWindowInteger or NULL; max 60000.
Returns
data.table with one row per product and the following columns:
asset(character): Asset symbol (e.g.,"USDT").latest_annual_percentage_rate(character): Current annual yield rate.can_purchase(logical): Whether new subscriptions are accepted.can_redeem(logical): Whether redemptions are allowed.is_sold_out(logical): Whether the product is sold out.hot(logical): Whether the product is marked as popular.min_purchase_amount(character): Minimum subscription amount.product_id(character): Unique product identifier.subscription_start_time(numeric): Subscription start timestamp in ms.status(character): Product status (e.g.,"PURCHASING").
Method get_locked_products()
Get Locked Products
Lists available Simple Earn locked products, optionally filtered by asset.
Official Documentation
Binance Simple Earn Locked List Verified: 2026-03-10
Usage
BinanceEarn$get_locked_products(
asset = NULL,
current = NULL,
size = NULL,
recvWindow = NULL
)Arguments
assetCharacter or NULL; filter by asset (e.g.,
"BTC").currentInteger or NULL; current page (default 1, starting from 1).
sizeInteger or NULL; page size (default 10, max 100).
recvWindowInteger or NULL; max 60000.
Method add_flexible_subscription()
Subscribe to Flexible Product
Subscribes to a Simple Earn flexible product.
Official Documentation
Binance Simple Earn Flexible Subscribe Verified: 2026-03-10
Usage
BinanceEarn$add_flexible_subscription(
productId,
amount,
autoSubscribe = NULL,
sourceAccount = NULL,
recvWindow = NULL
)Arguments
productIdCharacter; the product ID to subscribe to.
amountNumeric; amount to subscribe.
autoSubscribeLogical or NULL; whether to enable auto-subscription.
sourceAccountCharacter or NULL; source wallet:
"SPOT","FUND", or"ALL". Default"SPOT".recvWindowInteger or NULL; max 60000.
Method add_locked_subscription()
Subscribe to Locked Product
Subscribes to a Simple Earn locked product.
Official Documentation
Binance Simple Earn Locked Subscribe Verified: 2026-03-10
Usage
BinanceEarn$add_locked_subscription(
projectId,
amount,
autoSubscribe = NULL,
recvWindow = NULL
)Arguments
projectIdCharacter; the project ID to subscribe to.
amountNumeric; amount to subscribe.
autoSubscribeLogical or NULL; whether to enable auto-subscription.
recvWindowInteger or NULL; max 60000.
Method add_flexible_redemption()
Redeem Flexible Product
Redeems from a Simple Earn flexible product.
Official Documentation
Binance Simple Earn Flexible Redeem Verified: 2026-03-10
Usage
BinanceEarn$add_flexible_redemption(
productId,
amount = NULL,
redeemAll = NULL,
destAccount = NULL,
recvWindow = NULL
)Arguments
productIdCharacter; the product ID to redeem from.
amountNumeric or NULL; amount to redeem. If NULL, use
redeemAll.redeemAllLogical or NULL; if TRUE, redeem entire position.
destAccountCharacter or NULL; destination wallet:
"SPOT"or"FUND". Default"SPOT".recvWindowInteger or NULL; max 60000.
Method add_locked_redemption()
Redeem Locked Product
Redeems from a Simple Earn locked product.
Official Documentation
Binance Simple Earn Locked Redeem Verified: 2026-03-10
Method get_flexible_position()
Get Flexible Position
Retrieves current flexible earn positions, optionally filtered by asset or product.
Official Documentation
Binance Simple Earn Flexible Position Verified: 2026-03-10
Usage
BinanceEarn$get_flexible_position(
asset = NULL,
productId = NULL,
current = NULL,
size = NULL,
recvWindow = NULL
)Arguments
assetCharacter or NULL; filter by asset (e.g.,
"USDT").productIdCharacter or NULL; filter by product ID.
currentInteger or NULL; current page (default 1, starting from 1).
sizeInteger or NULL; page size (default 10, max 100).
recvWindowInteger or NULL; max 60000.
Returns
data.table with one row per position and the following columns:
total_amount(character): Total amount in the position.latest_annual_percentage_rate(character): Current annual yield rate.asset(character): Asset symbol (e.g.,"USDT").can_redeem(logical): Whether redemption is allowed.product_id(character): Product identifier.auto_subscribe(logical): Whether auto-subscription is enabled.
Method get_locked_position()
Get Locked Position
Retrieves current locked earn positions, optionally filtered by asset, position ID, or project ID.
Official Documentation
Binance Simple Earn Locked Position Verified: 2026-03-10
Usage
BinanceEarn$get_locked_position(
asset = NULL,
positionId = NULL,
projectId = NULL,
current = NULL,
size = NULL,
recvWindow = NULL
)Arguments
assetCharacter or NULL; filter by asset (e.g.,
"BTC").positionIdCharacter or NULL; filter by position ID.
projectIdCharacter or NULL; filter by project ID.
currentInteger or NULL; current page (default 1, starting from 1).
sizeInteger or NULL; page size (default 10, max 100).
recvWindowInteger or NULL; max 60000.
Returns
data.table with one row per position and the following columns:
position_id(character): Position identifier.project_id(character): Project identifier.asset(character): Asset symbol.amount(character): Locked amount.purchase_time(numeric): Subscription timestamp in ms.duration(integer): Lock duration in days.accrual_days(integer): Number of days interest has accrued.reward_asset(character): Reward asset symbol.apy(character): Annual percentage yield.
Method get_flexible_subscription_history()
Get Flexible Subscription History
Retrieves subscription history for flexible earn products.
Official Documentation
Binance Simple Earn Flexible Subscription Record Verified: 2026-03-10
Usage
BinanceEarn$get_flexible_subscription_history(
productId = NULL,
purchaseId = NULL,
asset = NULL,
startTime = NULL,
endTime = NULL,
current = NULL,
size = NULL,
recvWindow = NULL
)Arguments
productIdCharacter or NULL; filter by product ID.
purchaseIdInteger or NULL; filter by purchase ID.
assetCharacter or NULL; filter by asset (e.g.,
"USDT").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).
recvWindowInteger or NULL; max 60000.
Returns
data.table with one row per subscription record and the following columns:
amount(character): Subscription amount.asset(character): Asset symbol.time(POSIXct): Subscription time.purchase_id(integer): Purchase identifier.type(character): Subscription type (e.g.,"AUTO","NORMAL").source_account(character): Source account (e.g.,"SPOT").status(character): Subscription status (e.g.,"SUCCESS").
Method get_locked_subscription_history()
Get Locked Subscription History
Retrieves subscription history for locked earn products.
Official Documentation
Binance Simple Earn Locked Subscription Record Verified: 2026-03-10
Usage
BinanceEarn$get_locked_subscription_history(
purchaseId = NULL,
asset = NULL,
startTime = NULL,
endTime = NULL,
current = NULL,
size = NULL,
recvWindow = NULL
)Arguments
purchaseIdInteger or NULL; filter by purchase ID.
assetCharacter or NULL; filter by asset (e.g.,
"BTC").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).
recvWindowInteger or NULL; max 60000.
Returns
data.table with one row per subscription record and the following columns:
amount(character): Subscription amount.asset(character): Asset symbol.time(POSIXct): Subscription time.purchase_id(integer): Purchase identifier.position_id(character): Position identifier.lock_period(integer): Lock duration in days.type(character): Subscription type.source_account(character): Source account.status(character): Subscription status.
Method get_flexible_redemption_history()
Get Flexible Redemption History
Retrieves redemption history for flexible earn products.
Official Documentation
Binance Simple Earn Flexible Redemption Record Verified: 2026-03-10
Usage
BinanceEarn$get_flexible_redemption_history(
productId = NULL,
redeemId = NULL,
asset = NULL,
startTime = NULL,
endTime = NULL,
current = NULL,
size = NULL,
recvWindow = NULL
)Arguments
productIdCharacter or NULL; filter by product ID.
redeemIdInteger or NULL; filter by redeem ID.
assetCharacter or NULL; filter by asset (e.g.,
"USDT").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).
recvWindowInteger or NULL; max 60000.
Returns
data.table with one row per redemption record and the following columns:
amount(character): Redemption amount.asset(character): Asset symbol.time(POSIXct): Redemption time.project_id(character): Product identifier.redeem_id(integer): Redemption identifier.dest_account(character): Destination account.status(character): Redemption status (e.g.,"PAID").
Method get_locked_redemption_history()
Get Locked Redemption History
Retrieves redemption history for locked earn products.
Official Documentation
Binance Simple Earn Locked Redemption Record Verified: 2026-03-10
Usage
BinanceEarn$get_locked_redemption_history(
positionId = NULL,
redeemId = NULL,
asset = NULL,
startTime = NULL,
endTime = NULL,
current = NULL,
size = NULL,
recvWindow = NULL
)Arguments
positionIdCharacter or NULL; filter by position ID.
redeemIdInteger or NULL; filter by redeem ID.
assetCharacter or NULL; filter by asset (e.g.,
"BTC").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).
recvWindowInteger or NULL; max 60000.
Returns
data.table with one row per redemption record and the following columns:
amount(character): Redemption amount.asset(character): Asset symbol.time(POSIXct): Redemption time.position_id(character): Position identifier.redeem_id(integer): Redemption identifier.deliver_date(character): Expected delivery date.status(character): Redemption status.
Examples
if (FALSE) { # \dontrun{
# Synchronous
earn <- BinanceEarn$new()
products <- earn$get_flexible_products(asset = "USDT")
print(products)
# Subscribe
result <- earn$add_flexible_subscription(productId = "USDT001", amount = 100)
print(result)
# Asynchronous
earn_async <- BinanceEarn$new(async = TRUE)
main <- coro::async(function() {
products <- await(earn_async$get_flexible_products(asset = "USDT"))
print(products)
})
main()
while (!later::loop_empty()) later::run_now()
} # }
## ------------------------------------------------
## Method `BinanceEarn$get_flexible_products`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
products <- earn$get_flexible_products(asset = "USDT")
print(products)
} # }
## ------------------------------------------------
## Method `BinanceEarn$get_locked_products`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
products <- earn$get_locked_products(asset = "BTC")
print(products)
} # }
## ------------------------------------------------
## Method `BinanceEarn$add_flexible_subscription`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
result <- earn$add_flexible_subscription(productId = "USDT001", amount = 100)
print(result)
} # }
## ------------------------------------------------
## Method `BinanceEarn$add_locked_subscription`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
result <- earn$add_locked_subscription(projectId = "BTC30d001", amount = 0.01)
print(result)
} # }
## ------------------------------------------------
## Method `BinanceEarn$add_flexible_redemption`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
result <- earn$add_flexible_redemption(productId = "USDT001", amount = 50)
print(result)
} # }
## ------------------------------------------------
## Method `BinanceEarn$add_locked_redemption`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
result <- earn$add_locked_redemption(positionId = "12345")
print(result)
} # }
## ------------------------------------------------
## Method `BinanceEarn$get_flexible_position`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
positions <- earn$get_flexible_position(asset = "USDT")
print(positions)
} # }
## ------------------------------------------------
## Method `BinanceEarn$get_locked_position`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
positions <- earn$get_locked_position(asset = "BTC")
print(positions)
} # }
## ------------------------------------------------
## Method `BinanceEarn$get_flexible_subscription_history`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
history <- earn$get_flexible_subscription_history(asset = "USDT")
print(history)
} # }
## ------------------------------------------------
## Method `BinanceEarn$get_locked_subscription_history`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
history <- earn$get_locked_subscription_history(asset = "BTC")
print(history)
} # }
## ------------------------------------------------
## Method `BinanceEarn$get_flexible_redemption_history`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
history <- earn$get_flexible_redemption_history(asset = "USDT")
print(history)
} # }
## ------------------------------------------------
## Method `BinanceEarn$get_locked_redemption_history`
## ------------------------------------------------
if (FALSE) { # \dontrun{
earn <- BinanceEarn$new()
history <- earn$get_locked_redemption_history(asset = "BTC")
print(history)
} # }