Where an OKX Balance Sits: Funding, Trading and Earn Accounts

An OKX account is one login with several balances behind it. Deposits arrive in the funding account, orders are placed from the trading account, and earn products hold their own principal. The transfer between them is a separate operation with its own limits and its own failure modes, which is why a funded account can still refuse to place an order.

CoinSoso EditorialPublished Article #00127Updated

Cover artwork: CoinSoso · AI-generated, not a photograph of a real venue, product or market capture.

Key takeaways

  • OKX reports balances per account: funding, trading, earn, with a deprecated classic balance still appearing in the same response.
  • Trading happens from the trading account and withdrawals leave the funding account, so a balance can be present and unusable for the operation you are attempting.
  • The transfer endpoint moves funds between funding and trading accounts at 2 requests per second, limited per user and currency.
  • OKX warns that a successful transfer response does not necessarily reflect the actual result, and points to the transfer-state endpoint as the confirmation.
  • Entity rules change the default: OKX documents that some entities, such as Brazil, support deposits to the trading account only.

One login, several pockets

The mental model that causes the most support tickets on OKX is a single wallet with a single number. The platform does not work that way. It reports balances per account, and the accounts have different jobs.

Read from the balance response, the pockets are:

Pocket What it is for What it cannot do
Funding Receiving deposits, sending withdrawals, subscribing to earn products Place a trade
Trading Placing orders, holding collateral, converting Send a withdrawal
Earn Holding subscribed principal and accrued rewards Be spent directly
Classic Deprecated, still reported for older accounts Anything current

A second layer sits inside the trading account: the account mode. OKX documents four modes that change how collateral is shared across positions, which is a separate subject covered in OKX account modes explained. The point here is narrower — whatever the mode, the trading account is where the order is debited from.

The transfer is the missing step

Moving funds between the funding and trading accounts is an explicit operation, not something the platform infers. In the API it is POST /api/v5/asset/transfer, with the source and destination named by codes: 6 for the funding account and 18 for the trading account.

The documented properties are worth reading closely because each one is a place where an automated process fails:

  • Permissions. Only API keys carrying the transfer privilege can call it. A key created for trading will not move funds.
  • Directions. The endpoint transfers between funding and trading, and from the master account to sub-accounts. A sub-account can transfer out to the master by default; transferring to another sub-account requires the transfer-out permission to be granted first, and both must belong to the same master.
  • Rate limit. Two requests per second, limited per user id and per currency. This is not a generous budget for a bot that sweeps balances on every fill.
  • Confirmation. OKX states that the success or failure of the request does not necessarily reflect the actual transfer result, and recommends checking the transfer state with a separate endpoint. For a reconciliation job, that means reading balances after the transfer rather than logging the response as a ledger entry.

The last point is the one that changes how a system should be built. A transfer API that returns success is reporting that the instruction was accepted. The balance is the evidence.

Reading the balance response

The verification step needs the right fields, because a balance response reports several numbers per currency and only one of them answers “can I use this”.

Field in the response What it reports
cashBal The cash balance held in that currency
availBal What is available to use
frozenBal What is frozen — committed to orders, positions or an in-flight operation
ordFrozen The portion frozen specifically by open orders

A reconciliation that reads cashBal will overstate what the account can do; one that reads availBal answers the operational question. When the two differ, the gap is usually an open order or a pending operation rather than a missing transfer, which is the single most common reason a bot reports “funds lost” after placing a resting order.

The transfer’s own record is available too. OKX’s transfer-state endpoint takes either the transfer ID returned by the transfer call or a client-supplied ID of up to 32 alphanumeric characters, and returns the amount, the currency, the from and to account codes and a state. Passing a clientId of your own — a run identifier, say — makes the lookup possible from a log line rather than from a database row, which is what makes the “confirm by state, then by balance” habit practical at scale.

Deposits, withdrawals and the direction of travel

The rules on either end of the account point in opposite directions, which is the source of most confusion:

  • A deposit arrives in the funding account, except where an entity rule says otherwise. A deposit also passes through states: OKX distinguishes “waiting for confirmation”, “credited but not yet withdrawable”, and “successful”, which is the state where the funds can actually leave. A credited-but-locked balance looks like money and behaves like a pending item.
  • A withdrawal leaves from the funding account. The withdrawal documentation says so directly, and adds that a common sub-account does not support withdrawal at all. Funds in the trading account, or locked as margin, are not available to it.
  • Regional rules override the default. OKX documents that users under some entities, Brazil named as the example, support deposit to the trading account only. That single line changes where a deposit lands, and therefore changes which transfer a bot has to perform before the funds become tradable.
  • Internal transfers are the alternative to withdrawals. For currencies that carry a memo or tag, OKX recommends an internal transfer between OKX users instead of an on-chain withdrawal, which skips the network entirely and the memo risk along with it.

The memo mechanics, for the cases where an on-chain transfer is the right choice, are set out in deposit memos and destination tags. The two-stage delay — a venue-side hold before broadcast, then block confirmations — is what withdrawal holds versus confirmations separates.

Deposit, transfer and withdrawal each touch a different account funding deposits land withdrawals leave trading orders debit here convert allowed earn subscribed from funding redeems to trading 6→18 2 req/s A number on the screen is a location, not a permission. Region can move the deposit door: some entities land in trading. Transfer response ≠ transfer result; read the balance.
Three doors, three accounts. Most "missing funds" reports are a balance in the wrong pocket rather than a lost transfer.

Converting, earning, and where the interest settles

Two adjacent products reinforce the same pattern.

Convert operates from the trading account. OKX’s convert documentation states that only assets in the trading account are supported, so a conversion of a funding-account balance requires a transfer first.

Earn products subscribe from the funding account, and the documentation for at least one of them — Stable Rewards — states that rewards and redemptions settle to the trading account by default. That default is a design decision worth knowing: the principal leaves one pocket and the redemption arrives in another, so a user who expects the balance to return where it started will read the result as a partial loss.

The comparison between earn products, including what redemption actually costs in time and fees, is covered in OKX Simple Earn versus onchain earn. The account-routing question is upstream of that: no matter which product you pick, the principal has to be in the right pocket before the subscription is accepted.

A reconciliation habit that survives all of it

Because balances live in several places and transfers are asynchronous, the only reliable check is a full read. Four habits cover most of it:

  1. Read every pocket, not the headline number. A balance response that reports one total is hiding the detail that decides what you can do.
  2. Confirm transfers by state, then by balance. The endpoint exists; the balance is the proof.
  3. Check the entity rule once per account. A deposit that lands in trading when the documentation promised funding is a regional difference, not a bug.
  4. Separate “credited” from “withdrawable”. A deposit in the confirmation stage is real money that cannot move, and a plan that assumes otherwise will look like a platform failure.

None of this is unique to OKX, but OKX publishes it more explicitly than most: the per-account balance fields, the transfer rate limit, the asynchronous-result warning and the entity exception are all in the API reference, which is the right place to read them before automating anything. The withdrawal side of the same picture — the fee charged per network and why it is fixed rather than proportional — is set out in withdrawal fees versus network fees.

Risk note. Account structure, transfer rules, rate limits, withdrawal routing and entity exceptions in this article were read from OKX’s API documentation on 2026-10-30. Banking and entity rules change; the separation between funding, trading and earn has been stable. Nothing here is investment advice.

Sources

How this was researched. Written from primary documentation and the exchange or protocol's own published material, with sources listed at the end of the article.

Primary sources for the factual claims on this page. A date appears only where a human has actually read the source; where it is missing, the check is still outstanding.

  1. OKX — API documentation: account balance by account (funding, trading, earn)(read 2026-10-30)
  2. OKX — POST /api/v5/asset/transfer (funds transfer rules and rate limit)(read 2026-10-30)
  3. OKX — withdrawal endpoint notes (withdrawals from the funding account only)(read 2026-10-30)

Frequently asked questions

Why can't I place an order when my balance shows funds?

Because the balance you are reading is probably the funding account. OKX reports account balances per pocket — funding, trading, earn and a deprecated classic balance — and orders are placed against the trading account. The funds have to be transferred before they are available to trade, and the transfer is a separate API call or a separate screen in the app.

Why is my withdrawal rejected when the trading account has money in it?

OKX's withdrawal documentation states that withdrawals are supported from the funding account only, and that a common sub-account does not support withdrawal at all. Funds sitting in the trading account, or in an earn product, are not in the account the withdrawal endpoint debits.

Does a successful transfer response mean the money moved?

Not necessarily. OKX's own note on the transfer endpoint says the success or failure of the request does not necessarily reflect the actual transfer result, and recommends confirming with the funds-transfer-state endpoint. That is a warning about asynchronous processing, and it is the reason a reconciliation should read balances rather than trust the response.

Can a sub-account send funds to another sub-account?

Only if the permission is granted. OKX states that a sub-account can transfer out to the master account by default, and that transferring to another sub-account requires the transfer-out permission to be set first, with both sub-accounts belonging to the same master account.

Do deposits always arrive in the funding account?

No. OKX documents that users under some entities, with Brazil given as the example, support deposit to the trading account only. That is a regional rule attached to the entity your account is booked under, and it changes where a deposit lands without changing anything visible in the interface.

Where to go next

Independent research. Each card shows the platform’s invite code, and its Create Account button is a referral link that may earn us a commission at no extra cost to you. Whether an account can be opened is decided by the platform at sign-up.

Binance

One of the largest global exchanges by traded volume, with a very broad product range.

20% Trading Fee Rebate

Use invite code con888 when signing up to enjoy trading fee benefits.

Download Android App

Download from the exchange's official download service. Verify the source and follow the on-screen installation instructions.

Do not install an APK from an unknown source, or one that has been modified or cannot be checked.

Read review →

OKX

A large global exchange offering spot, derivatives and a self-custody wallet.

20% Trading Fee Rebate

Enter invite code con888 when signing up to check available trading fee benefits.

Download Android App

Download from the exchange's official download service. Verify the source and follow the on-screen installation instructions.

Do not install an APK from an unknown source, or one that has been modified or cannot be checked.

Read review →