Margin Trading Endpoints

Note

Cross-margin vs isolated margin trading

Binance offers both cross-margin trading (where all margin is in one account) and isolated margin trading (where each pair is a separate margin account). Make sure you are interacting with the right one.

Some of the API endpoints apply to the cross-margin or isolated margin accounts only. Other endpoints, such as the trade execution endpoints, are used for the cross-margin account trades by default, but you can use your isolated margin accounts by using the isIsolated or isolatedSymbol parameters. See the documentation below.

Market Data

Get cross-margin asset info

info = client.get_margin_asset(asset='BNB')

Get cross-margin symbol info

info = client.get_margin_symbol(symbol='BTCUSDT')

Get isolated margin symbol info

info = client.get_isolated_margin_symbol(symbol='BTCUSDT')

Get all isolated margin symbols

info = client.get_all_isolated_margin_symbols()

Get margin price index

info = client.get_margin_price_index(symbol='BTCUSDT')

Orders

Cross-margin vs isolated margin orders

By default, these trade execution endpoints will create an order using the cross-margin account.

To use the isolated margin account for the symbol you have specified, simply add the isIsolated='TRUE' parameter to the API calls below in this ‘Orders’ section.

Order Validation

Binance has a number of rules around symbol pair orders with validation on minimum price, quantity and total order value.

Read more about their specifics in the Filters section of the official API.

It can be helpful to format the output using the following snippet

amount = 0.000234234
precision = 5
amt_str = "{:0.0{}f}".format(amount, precision)

Fetch all margin_orders

orders = client.get_all_margin_orders(symbol='BNBBTC', limit=10)

Place a margin order

Use the create_margin_order function to have full control over creating an order

from binance.enums import *
order = client.create_margin_order(
    symbol='BNBBTC',
    side=SIDE_BUY,
    type=ORDER_TYPE_LIMIT,
    timeInForce=TIME_IN_FORCE_GTC,
    quantity=100,
    price='0.00001')

Check order status

order = client.get_margin_order(
    symbol='BNBBTC',
    orderId='orderId')

Cancel a margin order

result = client.cancel_margin_order(
    symbol='BNBBTC',
    orderId='orderId')

Get all open margin orders

orders = client.get_open_margin_orders(symbol='BNBBTC')

For isolated margin, add the isIsolated='TRUE' parameter.

Get all margin orders

orders = client.get_all_margin_orders(symbol='BNBBTC')

For isolated margin, add the isIsolated='TRUE' parameter.

Account

Get cross-margin account info

info = client.get_margin_account()

Create isolated margin account

account = client.create_isolated_margin_account(base='BTC', quote='ETH')

Get isolated margin account info

info = client.get_isolated_margin_account()

Transfer spot to cross-margin account

transaction = client.transfer_spot_to_margin(asset='BTC', amount='1.1')

Transfer cross-margin account to spot

transaction = client.transfer_margin_to_spot(asset='BTC', amount='1.1')

Transfer spot to isolated margin account

transaction = client.transfer_spot_to_isolated_margin(asset='BTC',
                                                        symbol='ETHBTC', amount='1.1')

Transfer isolated margin account to spot

transaction = client.transfer_isolated_margin_to_spot(asset='BTC',
                                                        symbol='ETHBTC', amount='1.1')

Get max transfer amount

details = client.get_max_margin_transfer(asset='BTC')

This max transfer is for the cross-margin account by default. For isolated margin records, add the isolatedSymbol=symbol_name parameter.

Trades

Get all margin trades

trades = client.get_margin_trades(symbol='BNBBTC')

For isolated margin trades, add the isIsolated='TRUE' parameter.

Loans

Create loan

transaction = client.create_margin_loan(asset='BTC', amount='1.1')

This for the cross-margin account by default. For isolated margin, add the isIsolated='TRUE' and the symbol=symbol_name parameters.

Repay loan

transaction = client.repay_margin_loan(asset='BTC', amount='1.1')

This for the cross-margin account by default. For isolated margin, add the isIsolated='TRUE' and the symbol=symbol_name parameters.

Get loan details

details = client.get_margin_loan_details(asset='BTC', txId='100001')

This for the cross-margin account by default. For isolated margin records, add the isolatedSymbol=symbol_name parameter.

Get repay details

details = client.get_margin_repay_details(asset='BTC', txId='100001')

This for the cross-margin account by default. For isolated margin records, add the isolatedSymbol=symbol_name parameter.

Get max loan amount

details = client.get_max_margin_loan(asset='BTC')

The max loan is for the cross-margin account by default. For isolated margin records, add the isolatedSymbol=symbol_name parameter.