Skip to content

Learn

Exchange APIs

Binance futures error -2019: MARGIN_NOT_SUFFICIEN, margin insufficient

Figures on this page are as of 2026-09. Fees, limits and margin tiers change — check the venue's own docs.

Binance USDⓈ-M futures error -2019 is printed in the official error list as MARGIN_NOT_SUFFICIEN — sic, the name is truncated in Binance’s own documentation — with the message “Margin is insufficient.”

{ "code": -2019, "msg": "Margin is insufficient." }

The truncated name is worth knowing because it is what appears in logs and library constants, and searching for the correctly spelled word will not find it. The meaning is plain: the order needs more margin than is available to it. The work is in finding out why “available” is smaller than you think.

This is a futures code. On Spot, a shortage of funds arrives under -2010 with “Account has insufficient balance for requested action.”

What this error actually means

Opening or increasing a futures position requires margin up front. How much depends on the order’s notional value and the leverage in effect: more notional needs more, higher leverage needs less. The background is in what is initial margin and what is leverage.

-2019 means that requirement is larger than the margin the order can draw on. The order was refused and nothing was placed, so there is nothing to reconcile — but retrying unchanged will fail again.

Two neighbouring codes look similar and are not:

CodeNameOfficial messageWhat it points at
-2019MARGIN_NOT_SUFFICIEN (sic)“Margin is insufficient.”Not enough available margin for this order
-2027MAX_LEVERAGE_RATIO“Exceeded the maximum allowable position at current leverage.”The position would be too large for the leverage set
-2028MIN_LEVERAGE_RATIO“Leverage is smaller than permitted: insufficient margin balance.”The leverage setting against your margin balance

-2027 is about size limits rather than money. Binance’s maintenance margin is tiered by position notional, and each bracket has its own limits; the brackets for your account are returned by GET /fapi/v1/leverageBracket, and the current tables are on Binance’s leverage and margin page. They change, so they are not quoted here.

The usual cause: the money is not where the order looks

In practice, most -2019 errors come from the difference between the balance you are thinking of and the margin actually available to this order.

1. Funds are not in the USDⓈ-M futures account. The futures account holds its own balance; Binance’s own fee and funding documentation talks about assets being transferred into it and deducted from its available balance. Money in another wallet does not count until it is moved.

2. Margin is reserved by open orders. Resting orders that would open or add to positions tie up margin. A strategy that leaves orders on the book has less available than its balance suggests.

3. The leverage is not what your code assumed. Your sizing may assume one leverage while the setting Binance holds for the position is lower. At lower leverage the same order needs more margin. Read the setting from Binance rather than from your config.

Other causes, in order of likelihood

Losses on other positions, under cross margin. In cross mode positions share collateral, and unrealised losses elsewhere reduce what a new order can use. Binance’s own liquidation formula shows other positions’ maintenance margin and unrealised PnL entering the cross calculation. See isolated vs cross margin.

Margin locked in isolated positions. Under isolated margin, margin committed to one position is its own and is not available to a new order.

A “close” that is actually an open. This one is easy to cause and hard to spot. In Hedge Mode, positionSide must be sent as LONG or SHORT, and reduceOnly cannot be sent. Closing a long means selling against positionSide=LONG; selling with positionSide=SHORT opens a new short, which needs margin. If you thought you were reducing exposure and got -2019, check the position side.

An oversized close in One-way Mode. A closing order larger than the position closes it and opens the other way for the excess — and the excess needs margin. Sending exits as reduce-only prevents this; see what is a reduce-only order.

Funding and fees have eroded the balance. Funding is deducted from the available balance in the futures account, and trading fees are charged on position value. On a position held for a long time, available margin drifts down even without a price move.

A sizing unit error. A quantity computed in the wrong unit, or from a notional far larger than intended, simply needs more margin than exists. The position size calculator is a quick sanity check on what the size should have been.

How to confirm which one you have

  1. Read the available balance of the futures account, not the total across wallets. If it is near zero, the money is elsewhere or reserved.
  2. List open orders on the futures account and add up what they reserve.
  3. Check the position mode — dualSidePosition — and the positionSide your order sent. A mismatch between intent and side explains a surprise -2019 on what was meant to be an exit.
  4. Read the leverage Binance holds for the symbol, and the brackets from GET /fapi/v1/leverageBracket.
  5. Recompute the requirement. As a first approximation, initial margin is notional divided by leverage. If that is comfortably below the available balance and you still see -2019, look harder at steps 2 and 3.

Do not fix it by raising leverage

Raising leverage lowers the margin an order needs, so it will often make -2019 go away. It also moves the liquidation price closer to entry, which is a change to the risk of the position, not to the error. Before changing leverage to get an order accepted, look at where liquidation would sit with the liquidation price calculator — or reduce the size instead.

For handler design, -2019 is a conditional error: valid request, refused under current conditions. Retrying it unchanged will fail; retrying after the condition changes may succeed. See error handling patterns for trading APIs.

FAQ

What does MARGIN_NOT_SUFFICIEN mean on Binance?

It is the name of USDⓈ-M futures error -2019, truncated in Binance’s own error documentation. The message is “Margin is insufficient.”: the order needs more margin than is available to it. Check the futures account’s available balance, margin reserved by open orders, and the leverage actually set.

Why do I get -2019 when I have enough balance?

Usually because the balance is not available to this order. Funds may be in a different wallet rather than the USDⓈ-M futures account, reserved by open orders, committed to isolated positions, or reduced by unrealised losses under cross margin. An order meant as an exit that actually opens a position will also need margin.

What is the difference between Binance -2019 and -2027?

-2019 means there is not enough available margin for the order. -2027, MAX_LEVERAGE_RATIO, means the position would exceed the maximum allowed at the current leverage, which is a size limit tied to Binance’s notional brackets. The first is about money; the second is about position size relative to leverage.

Should I increase leverage to fix Binance error -2019?

It will often clear the error, because higher leverage needs less margin, but it also moves your liquidation price closer. That is a change to the position’s risk, not a fix. Check where liquidation would sit first, and consider reducing the order size instead.