Skip to content

PostsCaaS keys

14 min read

Master key versus sub-account key

Two credentials, two jobs. The master key runs the broker. The sub-account key acts as one end user.

On this page

If you're new to Binance Crypto-as-a-Service (CAAS / Link), one mistake shows up constantly:

using the wrong API key for the job.

CAAS is built on a simple account tree:

  • Master account = the partner's Binance account (holds the CAAS permission).
  • Sub-account = one Binance account per end user (balances, orders, deposit address).

That tree gives you two different credentials, and they are not interchangeable.

Master account API key = "run the broker"#

Use the master key for partner operations — basically everything under /sapi/v1/broker/*:

  • Create / manage sub-accounts
  • Issue, permission, IP-restrict, and delete sub-account API keys
  • Enable Futures on a sub (before you create that sub's key)
  • Move funds between master and subs (and, with the right setup, between subs)
  • Set revenue-share commission / read rebates
  • If you're on Markup: fee groups and markup reporting (also master-only)

Public docs also put external withdrawals on the master key. A sub-account cannot withdraw off-exchange. The usual pattern is: transfer sub → master, then withdraw from master.

Keep the master key on your backend only. It can create and delete accounts.

Sub-account API key = "act as one end user"#

Use the sub key for that one user's day-to-day crypto ops:

  • Spot / futures / margin trading (main /api, /fapi, /dapi APIs — not the broker API)
  • Fetch that user's deposit address and deposit history
  • Open that user's user data stream (balances, orders, fills)

Important constraints newbies miss:

  1. KYC first. You cannot create a sub API key until that sub's KYC has passed. Until then the sub is reduce-only (cut positions / withdraw paths as documented) — not a full trading account.
  2. Enable Futures (or fund margin) before creating the key. futuresTrade / marginTrade are set at key creation. Create the key too early and Futures simply won't work — you'll need a new key.
  3. No mega-stream. There is no single user-data stream for all your end users. Plan one stream per account per product family. Market data streams are different: public, no API key, one feed can serve everyone.
  4. Options aren't in the CAAS sub-account permission set (docs: options not available to CAAS sub-accounts).

Mental model in one line#

Master key builds and funds the house. Sub key lives in one room and trades there.

Mixing them is the classic integration bug: calling broker endpoints with a sub key, or trying to trade / pull a deposit address with the master key "for" a user.

Capability matrix#

Public Binance Developer Docs only. A cell says Not stated where those docs are silent. This page does not fill the gap.

Yes means the docs say this key does it. No means the docs say it does not, or that it is the wrong key. N/A means it does not apply to that key's role. Separate means a different credential family, not the master or sub-account CAAS key.

The sections below are the full reading. On a narrow window the five-column tables scroll sideways.

Definitions · FAQ short rule · A. Accounts · B. Sub keys · C. Transfers · D. Deposits and withdrawals · E. Trading · F. Fees · G. KYC SaaS · H. Streams · I. Other · Not stated

How the docs define master vs sub#

LevelWhat it is (public docs)
Master accountThe partner's own Binance account. Holds the CAAS permission and is the parent of every end-user account.
Sub-accountOne Binance account per end user, created by the partner through the API. Holds the end user's balances and orders.
Master account API keyCredential for every /sapi/v1/broker/* call (account creation, transfers, commission) and for withdrawals. Created by the partner in the Binance interface (Binance does not issue it).
Sub-account API keyCredential scoped to one sub-account — used for trading and wallet ops on behalf of that one end user (spot/futures trading APIs, deposit address, that account's user data stream). Issued via master → POST /sapi/v1/broker/subAccountApi after KYC pass.

Architecture, from the integration guide:

Your front end  →  Your backend  →  CAAS API (/sapi/v1/broker/*)     [master account API key]
                       └──────────►  Trading APIs (/api, /fapi, /dapi) [sub-account API key]

The docs call mixing the two credentials the most common integration mistake.

Short rule from the FAQ#

You needUse
Every /sapi/v1/broker/* callMaster
WithdrawalsMaster
TradingSub-account
That account's deposit addressSub-account
That account's user data streamSub-account

That is the FAQ's "Which API key do I use for which call?" The rows in A–I are the longer public-docs reading of the same split.

A. Account lifecycle (partner ops)#

#Action / capabilityMaster keySub-account keySource note
1Hold CAAS permission / be parent of end-user accountsYes (account-level; key used to call broker APIs)NoGetting started; overview
2Query broker info (GET /sapi/v1/broker/info)YesNo (broker family = master)Integration guide §5; FAQ key rule; CAAS APIs
3Create sub-account (POST /sapi/v1/broker/subAccount)YesNoIntegration guide §6; CAAS APIs, Account
4Delete sub-accountYes (Account area: "create and delete")NoCAAS APIs, Account
5List / query sub-accounts (GET /sapi/v1/broker/subAccount…)YesNoIntegration guide signing example; CAAS APIs
6Enable Futures wallet on a sub (POST /sapi/v1/broker/subAccount/futures)YesNoIntegration guide §6 step 4; FAQ restrictions
7Enable Margin wallet via dedicated enable endpointN/A — no enable endpoint; margin wallet created by transferring assets inN/AIntegration guide §6 (warning)
8Options trading for CAAS sub-accountsNo — Options are not available to CAAS sub-accountsNoIntegration guide §6

B. Sub-account API key management (always master → broker)#

#Action / capabilityMaster keySub-account keySource note
9Create sub-account API key (POST /sapi/v1/broker/subAccountApi)YesNoIntegration guide §6 step 5; Getting started order
10Set creation-time trade flags (canTrade, marginTrade, futuresTrade)Yes (at create)NoIntegration guide §6; Getting started warning (order of wallet enable vs key create)
11Choose HMAC vs Ed25519/RSA (publicKey param) for sub keyYesN/AIntegration guide §4, key types
12Change sub-key permissions (POST …/subAccountApi/permission)YesNoIntegration guide §6 step 6
13Set sub-key IP restrictions (POST …/subAccountApi/ipRestriction v2)YesNoIntegration guide §6 step 6
14Enable universal-transfer permission on a sub key (…/permission/universalTransfer)YesNoIntegration guide §§6–7
15Delete sub-account API keysYes (Account area: "issue and delete")NoCAAS APIs
16Create API key before KYC PASSBlocked (-9000 KYC not approved)N/A (key does not exist yet)Integration guide §6; FAQ; KYC overview

C. Internal fund movement (master ↔ sub / sub ↔ sub)#

#Action / capabilityMaster keySub-account keySource note
17Spot transfer master ↔ sub (POST /sapi/v1/broker/transfer)YesNoIntegration guide §7; CAAS APIs, Asset
18Futures transfer master ↔ sub (POST /sapi/v1/broker/transfer/futures)YesNoIntegration guide §7
19Universal transfer across Spot/USD-M/COIN-M or between two subs (POST /sapi/v1/broker/universalTransfer)Yes (call); requires universal-transfer permission enabled on the relevant sub key firstPermission flag only — call still master/brokerIntegration guide §7 choosing table
20Futures account transfer helper (POST /sapi/v1/broker/futures/accountTransfer)YesNoIntegration guide §7
21Query transfer history (spot/futures/universal broker GETs)YesNoIntegration guide §7
22Query sub spot/margin/futures balance summaries (broker *Summary)YesNo (use trading APIs with sub key for that account's own view — see trading)Integration guide §7; CAAS APIs, Asset
23Reach margin wallet via broker transfer fromAccountType/toAccountTypeNo — only SPOT, USDT_FUTURE, COIN_FUTUREN/AIntegration guide §7 limits
24Transfer into a non-KYC'd sub from masterNo (FAQ: master cannot deposit into a non-KYC'd sub)N/AFAQ, overview of restrictions
25Non-KYC'd sub → master (or → KYC'd sub) withdraw/transfer pathYes (broker transfers from the sub side as allowed)N/AFAQ: a non-KYC'd sub can withdraw to the master or to a KYC'd sub, not to another non-KYC'd sub

D. External deposits & withdrawals (Wallet /sapi/v1/capital/*)#

#Action / capabilityMaster keySub-account keySource note
26Get sub-account deposit address (GET /sapi/v1/capital/deposit/address)No (use sub key)YesIntegration guide §8 table; FAQ
27Sub-account deposit history (GET /sapi/v1/capital/deposit/hisrec)No (table: sub key)YesIntegration guide §8
28Read-only sub deposit history from master (GET /sapi/v1/broker/subAccount/depositHist v1/v2)YesNoIntegration guide §8
29Submit withdrawal (POST /sapi/v1/capital/withdraw/apply)YesNo — "A sub-account cannot withdraw"Integration guide §8; FAQ
30Withdrawal history (GET /sapi/v1/capital/withdraw/history)YesNo (table: master)Integration guide §8
31Per-coin network config (GET /sapi/v1/capital/config/getall)Yes ("Either")Yes ("Either")Integration guide §8
32Off-exchange path patternTransfer sub → master (broker), then withdraw with master keyCannot withdraw externallyIntegration guide §8; FAQ
33Travel-rule withdrawal (POST /sapi/v1/localentity/withdraw/apply) when the entity requires itYes (FAQ migrates from capital withdraw; entity-dependent)Not stated as sub-capable; sub cannot withdraw generallyFAQ, travel-rule questions
34Travel Rule /localentity/broker/* "submit on an end user's behalf"Partner path exists (docs point to the Travel Rule catalog)Not statedIntegration guide §8 note; overview Travel Rule row

E. Trading (main trading APIs — not /broker/*)#

#Action / capabilityMaster keySub-account keySource note
35Spot trading (/api/*) for an end userNo (wrong account)Yes — "main trading APIs, with the sub-account's own API key"CAAS APIs, "What is not in this API"; overview Spot; integration guide architecture
36USD-M futures trading (/fapi/*) for an end userNoYes (if the wallet is enabled before key create + futuresTrade)CAAS APIs; FAQ, "Why does my sub-account key not work for Futures?"
37COIN-M futures trading (/dapi/*) for an end userNoYes (same pattern)Overview, Futures; integration guide base URLs
38Margin trading for an end userNot via broker trade APIsYes if marginTrade is set at key create and the margin wallet existsIntegration guide §6
39Place trades with the master key "as" the subNo — docs require the sub's own key for tradingYesCAAS APIs; FAQ
40Read spot UID for Markup (GET /api/v3/account → uid)Not stated for master-on-subYes — KYC guide: call with that sub-account's own API keyKYC SaaS integration guide §2

F. Fees — revenue share vs Markup#

#Action / capabilityMaster keySub-account keySource note
41Set/query revenue-share commission on sub keys (spot/futures/coinFutures broker commission endpoints)YesNoIntegration guide §9; CAAS APIs, Fee
42Query rebate recent records (spot/futures)YesNoIntegration guide §9; FAQ rebates
43Markup fee groups and reporting (/sapi/v1/vip/caas/commission/*)Yes — "must belong to your master account, not to a sub-account"NoMarkup getting started; markup integration guide §1
44Combine revenue share + markupN/A — mutually exclusiveN/AMarkup overview; FAQ
45Markup product scopeSpot order book only (commercial model)N/AMarkup overview

G. KYC SaaS (gates key creation)#

#Action / capabilityMaster keySub-account keySource note
46Call KYC SaaS APIs (/bapi/ekyc/v2/... on cb.link-kycapi.com)Separate — Binance-issued bizEntityKey + secret; no X-MBX-APIKEY / CAAS signingSeparate (same)KYC SaaS integration guide §§3–5; request signing
47KYC PASS required before sub API key creationGate on broker create (master call blocked until PASS)N/AGetting started; integration guide; KYC overview
48Un-KYC'd sub capabilitiesReduce-only: cut margin/futures positions and withdraw; cannot create or permission keys; deposits restrictedIf a key somehow existed: the same service restrictions applyIntegration guide -9000 message; FAQ, overview of restrictions

H. Streams & market data#

#Action / capabilityMaster keySub-account keySource note
49Aggregated user-data stream across all end usersNo — "no single stream… all of your end users"NoUser data streams; FAQ
50Open spot / USD-M / COIN-M user data stream for master treasury activityYes (master's own key, master's events only)NoUser data streams table
51Open user data stream for one end userNoYes — that sub's key onlyUser data streams; integration guide §10
52Market data streams (prices, books, trades)N/A — no API keyN/A — no API keyMarket data streams

I. Other modules / ops notes#

#Action / capabilityMaster keySub-account keySource note
53Institutional Crypto Buy/Sell Open APISeparate developer credentials (client id, sign access token, partner public keys, IP allowlist) — not described as master/sub CAAS keysNot stated as a sub CAAS keyInstitutional Buy/Sell quick start; developer-account application
54CAAS / KYC / Markup sandboxN/A — no separate test environment (verify on production with care); Institutional Buy/Sell has QAN/AIntegration guide §12; KYC guide
55CAAS IP allowlist at onboardingNot required for CAAS itselfYou may still IP-restrict keys you createIntegration guide §2 note
56KYC SaaS / Institutional Buy/Sell IP allowlistSeparate modules enforce allowlistingN/AIntegration guide §2; KYC guide
57Keep master key on backend only; narrow sub permissions; rotate/deleteBest practice (master can create and delete accounts)Best practiceIntegration guide §13

57 capability rows, numbered 1–57, in sections A–I. The definition table and the FAQ short rule are not part of that count.

What the public docs do not state#

  1. Full exhaustive permission bit list on a master key for non-broker routes. The docs focus on broker calls, withdrawals, and streams. A general line about "all secure routes" is security text, not a CAAS permission matrix.
  2. Whether a sub key can call any /sapi/v1/broker/* endpoint. The docs say broker calls use the master key. They do not publish a negative permission dump.
  3. The exact Travel Rule key for every /localentity/* path versus every /localentity/broker/* path, beyond "a partner can submit on an end user's behalf" and the FAQ's move of withdrawal to localentity/withdraw/apply.
  4. Whether the master key can fetch a sub's deposit address on the capital endpoints. The docs prescribe the sub key for the address and for deposit history. Broker depositHist is the master read path.
  5. How Institutional Buy/Sell Open API credentials map onto master versus sub CAAS keys. The docs describe a separate developer-account credential exchange.
  6. The spot FAQ on Ed25519, HMAC, and RSA key types is not a master-versus-sub role matrix. The two topics are orthogonal.
  7. Generic sub-account product intro pages are not the CAAS broker guide. For Link/CAAS, use the CAAS integration guide and the FAQ.

Tiny checklist#

  • Master authenticates to broker info
  • Sub created → KYC PASS → wallets enabled → then sub API key
  • Sub key: narrow permissions + IP allowlist
  • Deposits: sub address · Withdrawals: master (after sub→master transfer)
  • Streams: one per account (plus public market data separately)

If you're screening CAAS as a buyer/builder, a structured diligence pass helps before you wire credentials: Getting started with Binance CaaS.

Independent personal project. Based on public Binance Developer Docs only. Not affiliated with Binance.

Sources

Public documentation of a gated product. A link is a pointer to the publisher's own page. It is not an endorsement, a partnership, or a claim that Primer Desk has access to the product.

  1. CAAS getting started

    Public integration order. Extra wallets, including futures, exist before the sub-account key is created.

  2. CAAS integration guide

    Public guide to which key signs broker calls, trading, deposits, withdrawals, and streams.

  3. CAAS APIs

    Public broker API list. Trading for an end user is on the main trading APIs, with that sub-account's own key.

  4. CAAS overview

    Public overview of the account tree: the partner's master account parents every end-user sub-account.

  5. CAAS FAQ

    Public FAQ. The short which-key table is that page's rule. The matrix says where the same docs are silent.

  6. CAAS user data streams

    Public description of per-account streams. There is no single stream for every end user.

  7. Markup getting started

    Public markup setup. Fee groups and markup reporting use the master account.

  8. Markup overview

    Public description of markup versus revenue share. The two do not run together. Markup is the spot order book.

All postsGetting started with Binance CaaSAbout this desk