Skip to content

Learn

Exchange APIs

Bybit API error 110007: available balance is insufficient

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

Bybit V5 returns retCode: 110007, documented as “Available balance is insufficient”. The order you sent needs more margin than the account currently has available — which is not the same as the balance in the wallet. The fix: make the order smaller, or free up available balance (cancel resting orders you no longer want, or add funds), and size future orders from the available figure rather than the wallet total.

The live message may not match the documented one. CCXT’s Bybit integration records a live retMsg of “ab not enough for new order” for this code and maps it to its InsufficientFunds error. If that is the text in your logs, this is the page.

This page is for anyone whose order is refused while the account looks funded. It covers what “available” means here, what quietly uses it up, and how to treat the error in automated code.

What this error actually means

A new derivatives order has to be backed by initial margin, and that margin has to come from balance that is not already committed. 110007 says the uncommitted part is too small for this order.

Bybit’s help centre gives the structure of initial margin for an isolated USDT perpetual position, in its trading-rules worked example:

IM          = Position Value ÷ Leverage + Fee to Close
Fee to Close (long) = Size × Entry × (1 − 1 ÷ Leverage) × Taker Fee Rate
                      (short: 1 + 1 ÷ Leverage)

Two details from the same source matter for sizing. Under cross margin, initial margin is computed from the mark price; under isolated, from the entry price. And the order’s own trading fee is “deducted from the account balance, and it doesn’t affect the initial margin of the order” — so the fee still has to come from somewhere.

Bybit also lists near-identical siblings:

CodeMeaning (Bybit’s wording)
110007“Available balance is insufficient”
110012“Insufficient available balance.”
110044“Available margin is insufficient.”
110004“Wallet balance is insufficient”
110045“Wallet balance is insufficient.”

We did not find Bybit documentation explaining the internal distinction between these — why 110007 rather than 110012, for instance. This page is about 110007 specifically; handle the siblings by their own codes and do not assume they are interchangeable.

The usual cause: the order is too large for what is free

The arithmetic is simple and the mistake is common: code sizes the order from the wallet balance, but margin is drawn from available balance. The gap between them is everything already committed. The position size calculator works from the amount you are prepared to risk; this error is about a separate constraint — the margin the resulting order needs must fit in what is free.

A quick sanity check before sending, as an illustration only: a position value of 5,000 USDT at 10x needs roughly 500 USDT of initial margin plus the fee to close, and the opening fee on top. If available balance is 450 USDT, the order will be refused regardless of what the wallet shows.

Other causes, in order of likelihood

1. Resting orders are holding margin. As a general rule on derivatives venues, open orders reserve balance for the positions they would open. Bybit’s risk-limit tier also now follows position plus order value at real-time mark price. A forgotten ladder of limit orders can hold a large share of the account.

2. Cross-margin positions are sharing the pool. Under a Unified Trading Account the margin mode is account-wide, not per symbol, and cross (the default) is assessed at account level. In our reading, losses on other open positions reduce what is available for a new one, even on an unrelated symbol.

3. Funding came out of the balance. Bybit deducts funding payments from available balance first. A position paying funding steadily reduces what is free — see how to calculate funding payments.

4. A quantity in the wrong unit or scale. An order that is a thousand times larger than intended fails here before it fails anywhere else. Check the quantity against the instrument’s contract definition — see symbol filters and minimum order size.

5. A larger position moved into a higher risk-limit tier. Each symbol has tiers with their own maintenance margin rate and maximum leverage, and position value is measured at mark price. A large order can land in a tier with a lower leverage cap than the one you assumed, so it needs more margin than your estimate.

6. The wrong environment. Testnet balances are separate and can be reset. An order sized from a mainnet balance and sent to testnet, or the reverse, fails here.

How to confirm which one you have

  1. Read the account, not your cache. GET /v5/account/wallet-balance returns the account’s balances and its accountIMRate and accountMMRate. Compare the available figure with what the order needs.
  2. List open orders across symbols. If a meaningful amount is reserved by orders you do not recognise, that is cause 1.
  3. Recompute the order’s margin with the IM structure above, using your account’s actual fee rate from GET /v5/account/fee-rate rather than a remembered number.
  4. Log the quantity and notional you sent. A notional far above your intent is cause 4.

Handling it in code

110007 is a conditional refusal: Bybit answered, and the order was not placed. The same order will be refused again until something changes.

  • Do not retry in a loop. It will never succeed on its own and it spends rate limit. See error handling patterns.
  • Match on retCode, not retMsg. The documented text and the observed text differ — “Available balance is insufficient” versus “ab not enough for new order” — so a string match is fragile.
  • Recompute, then decide. If the strategy resizes automatically, it should size from freshly read available balance, and log that it did.
  • Do not reach for higher leverage to make the order fit. It lowers the margin required, and it also moves the liquidation price closer — see how leverage changes liquidation distance. That is a risk decision, not an error fix.

FAQ

What does Bybit error 110007 mean?

It means the order needs more available balance than the account has free. Bybit documents it as “Available balance is insufficient”; CCXT records the live message as “ab not enough for new order”. Available balance generally excludes margin already committed to positions and open orders, so it can be much smaller than the wallet balance.

Why do I get 110007 when my wallet balance is enough?

Because margin is drawn from available balance, not the wallet total. Resting orders reserve margin, cross-margin positions share one pool, and funding is deducted from available balance first. Read the account with GET /v5/account/wallet-balance and cancel open orders you no longer need.

Is Bybit error 110007 the same as 110012 or 110004?

They read alike but are separate codes. 110012 is “Insufficient available balance.”; 110004 and 110045 are “Wallet balance is insufficient”. We did not find Bybit documentation explaining the internal distinction, so handle each by its own code rather than assuming they are interchangeable.

Should I increase leverage to fix error 110007?

Higher leverage reduces the initial margin an order needs, so it can make the order fit. It also moves the liquidation price closer to entry. Treat that as a separate risk decision; the direct fixes are a smaller order or more free balance.