What is a Unified Trading Account (UTA) on Bybit?
Figures on this page are as of 2026-09. Fees, limits and margin tiers change — check the venue's own docs.
A Unified Trading Account (UTA) is Bybit’s current account model, in which the margin mode is chosen once for the whole account rather than per trading pair, and — in cross and portfolio mode — liquidation risk is assessed across the account rather than position by position.
This page is for anyone writing code against Bybit’s V5 API, or reading older Bybit tutorials and wondering why the behaviour they describe does not match their account. It covers what the account modes are, how UTA decides when to liquidate, which error codes depend on account type, and how OKX’s account modes compare.
Why this matters now
Bybit’s V5 documentation lists three account modes that “have existed”: classic, UTA 1.0 and UTA 2.0. It marks classic as “now unavailable”, and says accounts registered in 2025 or later can ignore the upgrade guide.
So a lot of published material describes an account you cannot have any more. Tutorials that switch margin mode per symbol, liquidation formulas written for classic accounts, and error explanations keyed to “classic vs unified” were all written against a model that no longer applies. The classic-account liquidation-price help articles we tried on Bybit’s site returned “This article is currently not supported on this site” — a fair signal that those formulas should not be in your code either.
How it actually works
- The account reports its mode.
unifiedMarginStatusin the Get Account Info response is1for classic,3or4for UTA 1.0, and5or6for UTA 2.0. Read it rather than assuming. - One margin mode applies to the account. UTA offers Isolated, Cross (the
default) and Portfolio Margin, set through
/v5/account/set-margin-modewithISOLATED_MARGIN,REGULAR_MARGINorPORTFOLIO_MARGIN. In Bybit’s words, “you cannot choose different margin modes for individual trading pairs”. - The margin mode decides where liquidation is decided. This is the part most summaries get wrong, so it has its own table below.
- In cross, one ratio governs everything. Bybit publishes it as
Account MMR = Total Maintenance Margin ÷ (Margin Balance − Haircut Loss + Order Loss), exposed asaccountMMRate(andaccountIMRate) inGET /v5/account/wallet-balance. - When that ratio reaches 100%, Bybit works through a fixed sequence, stopping as soon as it falls back below 100%: cancel orders that increase exposure, auto-repay liabilities, cancel all orders, close fully hedged positions, liquidate unhedged positions step by step down the risk tiers, then liquidate short options.
- Position mode is a separate setting. One-way or hedge is chosen per symbol or per settlement coin; portfolio margin supports one-way only.
Margin mode and liquidation scope under UTA
| Margin mode | API value | Liquidation is decided by | Position modes |
|---|---|---|---|
| Isolated | ISOLATED_MARGIN | Each position: mark price reaches that position’s liquidation price | One-way, hedge |
| Cross (default) | REGULAR_MARGIN | The account: Account MMR reaches 100% | One-way, hedge |
| Portfolio | PORTFOLIO_MARGIN | The account: Account MMR reaches 100% | One-way |
“UTA means account-level liquidation” is only true for cross and portfolio. Isolated under UTA still liquidates per position, and Bybit says “Liquidation of one position will not affect the other position.” What UTA changed is that you cannot run one symbol isolated and another cross at the same time — the choice is made once, for everything.
The same split shows up in the API’s liqPrice field in
GET /v5/position/list. For isolated positions Bybit calls it “the real
price”. For cross it is “an estimated price”, because risk is controlled at
the account level. For portfolio margin it is empty. A dashboard that shows
liqPrice as a hard line is only accurate in isolated mode; in cross, the
number that decides liquidation is accountMMRate. The mechanics behind both
are in how liquidation price is calculated
and why liquidation price changes.
One more change is worth knowing if you compute margin yourself. From 2 September 2025, for perpetual and expiry contracts, cross computes both initial and maintenance margin from mark price; isolated computes maintenance margin from mark price but initial margin from entry price, and the isolated liquidation price “will remain fixed”. Risk-limit tiers now follow real-time mark price plus position and order value, and Bybit warns this can cause sudden tier jumps in fast markets.
UTA vs the thing people confuse it with
The confusion is usually between account type and key or channel problems, because several Bybit codes sound like account-type errors and only two of them are.
| Code | Official text | What it tells you |
|---|---|---|
10028 | “The API can only be accessed by unified account users.” | The endpoint needs a UTA account |
100028 | “The API cannot be accessed by unified account users.” | The endpoint is not available to UTA accounts |
HTTP 404 | Cannot find path | Wrong path, or category does not match the account mode |
110026 | “Cross/isolated margin mode has not been modified.” | You asked for the mode you already have |
10003 (REST) | “API key is invalid…” | Key and environment do not match — not an account-type error |
The pair 10028 / 100028 differs by one digit and means opposite things;
read it twice. And 10028 is not 110028, which is a position-mode error:
open orders block switching the position mode.
10003 deserves the explicit correction because older explanations tie it to
account type. Bybit’s error page, as checked for this article, says a REST
10003 means the key does not match the environment’s host, and a 10003 on
the WebSocket order-entry channel means too many sessions under one UID.
Expired keys have their own codes: -2015 on spot, 33004 on derivatives. See
Bybit API key setup for the full auth-error map.
Bybit UTA vs OKX account modes
OKX solves a similar problem with a different control. Instead of one account
type with a margin-mode switch, OKX exposes four account modes as acctLv in
GET /api/v5/account/config:
acctLv | OKX mode | Cross-margin risk is assessed… |
|---|---|---|
1 | Spot mode | No perpetuals: “margin, perpetual swap, futures, or options seller trading are not supported” |
2 | Futures mode | Per margin currency — when that currency’s maintenance margin ratio reaches 100% |
3 | Multi-currency margin | Account-wide, in USD |
4 | Portfolio margin | Per risk unit, with maintenance margin from stress-test scenarios |
OKX describes isolated risk as per position and segregated from cross, so the
account mode mostly decides how wide the cross pool is. The first switch
into each OKX mode has to be made on the web or app; later switches can go
through POST /api/v5/account/set-account-level, with a maintenance-margin
check when positions are open.
The practical difference for code: on Bybit, “which margin mode am I in” is one account-wide value. On OKX, you need the account mode to know what “cross” means for a given position. In both cases, the answer lives in an API field your program can read at startup — see isolated vs cross margin for the trade-off itself.
Where the boundary should sit
- Read the account mode before trading. Check
unifiedMarginStatus(Bybit) oracctLv(OKX) at startup and refuse to run if it is not what the strategy was written for. That turns a silent behavioural mismatch into a clear error. - Treat margin-mode changes as account-wide actions. On Bybit, switching from cross to isolated changes the liquidation rules for every open position at once. It does not belong behind the same permission as placing an order, and a model should not be able to call it without a human seeing it — see MCP approval workflow design.
- Monitor the right number. In cross or portfolio mode, alert on
accountMMRate, not on the distance to each position’sliqPrice. - Do not port classic-account formulas. If a liquidation or margin calculation predates UTA, re-derive it from Bybit’s current UTA pages.
- Separate strategies that need different margin modes. Because one UTA account has one mode, a strategy that needs isolated and another that needs cross cannot share an account; see sub-accounts for automation.
FAQ
What is a Unified Trading Account on Bybit?
It is Bybit’s current account model, in which one margin mode — isolated,
cross or portfolio — applies to the whole account instead of being chosen per
trading pair. Bybit’s documentation marks the older classic account as no
longer available, so new integrations should assume UTA and confirm it by
reading unifiedMarginStatus from the account info endpoint.
Does UTA mean liquidation happens at the account level?
Only in cross and portfolio margin. In those modes Bybit liquidates when the account maintenance margin ratio reaches 100%. In isolated margin under UTA, each position still has its own liquidation price, and Bybit states that liquidating one position does not affect another.
Can I use isolated margin on one symbol and cross on another under UTA?
No. Bybit’s documentation says you cannot choose different margin modes for individual trading pairs; the mode is set for the account. If two strategies need different margin modes, they need separate accounts, such as separate sub-accounts.
What do Bybit errors 10028 and 100028 mean?
They are mirror images. 10028 says the API “can only be accessed by unified
account users”; 100028 says it “cannot be accessed by unified account users”.
Either one means the endpoint and your account type disagree. Neither is related
to 10003, which concerns key and environment mismatches or WebSocket session
counts.