> For the complete documentation index, see [llms.txt](https://docs.native.org/native-dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.native.org/native-dev/build-with-native/native-core/concepts/account-types.md).

# Account Types

The two kinds of Native Core trading account — spot (balance) and credit — and which API surface reads each.

Native Core has two kinds of trading account. Every owner is exactly one of them, and each has a different read surface and a different risk gate at order time.

|                      | **Spot account** (balance)                                                                                                                                                                                    | **Credit account**                                                                                                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Provisioning         | Created automatically on **first deposit**, or by someone else calling [`activateFor`](/native-dev/build-with-native/native-core/reference/post-trade.md#activatefor) for your address — the default account. | **Provisioned by the protocol**; not self-service.                                                                                                                               |
| Collateral           | Per-asset `available` balance.                                                                                                                                                                                | A USD credit line.                                                                                                                                                               |
| Short positions      | Not supported — trading is limited to held balance.                                                                                                                                                           | Supported — positions are signed (`actual_qty` may be negative).                                                                                                                 |
| Order-time risk gate | Sufficient `available` balance.                                                                                                                                                                               | `available_usd_atoms >= 0` against the credit line — see [Credit & Margin](/native-dev/build-with-native/native-core/concepts/credit-margin.md) for how that number is computed. |
| State                | `active` / `frozen`                                                                                                                                                                                           | `active` / `frozen`                                                                                                                                                              |

{% hint style="danger" %}
**A credit order that fails the risk check at execution freezes the account.** It comes back as `insufficientspotcredit` **and the account is left frozen** — it cannot place new orders until an operator unfreezes it, and there is no self-service recovery. The same order rejected earlier, by the spot-credit precheck, returns `InsufficientSpotCredit` and leaves the account untouched. A `modify` that fails the same check freezes the account identically; other order rejections, including `OracleMarkPriceMissing`, leave it `active`. Size against current headroom before sending — see [Credit & Margin](/native-dev/build-with-native/native-core/concepts/credit-margin.md).
{% endhint %}

A `frozen` account may only cancel. Everything else is rejected with `AccountFrozen` — not just new orders and modifies, but `withdraw`, `transfer`, `activateFor`, `settle`, `repay`, `approveAgent` and `revokeAgent` too. A `batch` is only accepted if every item in it is a cancel.

Most integrations use a **spot account**; without a protocol-granted credit line, an owner is a spot account and the credit-account reads below report no credit position.

## Reading an account

Point every `POST /info` account query at the **owner** address (not the API-wallet address). Which query you use depends on the account:

**Spot account**

* [`userBalances`](/native-dev/build-with-native/native-core/reference/post-info.md#userbalances) — `available` / `locked` per asset
* [`deposits`](/native-dev/build-with-native/native-core/reference/post-info.md#deposits) / [`withdraws`](/native-dev/build-with-native/native-core/reference/post-info.md#withdraws) — funding history
* [`accountStatus`](/native-dev/build-with-native/native-core/reference/post-info.md#accountstatus) — whether the account exists and its freeze state

**Credit account**

* [`spotCreditAccount`](/native-dev/build-with-native/native-core/reference/post-info.md#spotcreditaccount) — credit line and status. The fields are `credit_usd_atoms`, `available_usd_atoms`, `last_known_available_usd_atoms`, `status`, `authorized`, `oracle_status`, and `credit_trading_whitelisted_market_ids` — all USD figures are in `usd_atoms`.
* [`spotCreditPositions`](/native-dev/build-with-native/native-core/reference/post-info.md#spotcreditpositions) — signed long/short positions per asset

The credit account's on-chain name is a *spot-credit account*, which is why its query types are `spotCreditAccount` and `spotCreditPositions`.

## Trading and moving between them

`order`, `cancel`, and `modify` are the **same** actions for both account types — Native Core applies balance gating or credit gating automatically from the signer's account kind. There is no separate order endpoint per account type.

Two public [`POST /trade`](/native-dev/build-with-native/native-core/reference/post-trade.md) actions bridge the two:

* [`settle`](/native-dev/build-with-native/native-core/reference/post-trade.md#settle) — a credit account moves a long position out into a spot account's `available` balance.
* [`repay`](/native-dev/build-with-native/native-core/reference/post-trade.md#repay) — a spot account spends its `available` balance to reduce a credit account's short.

{% content-ref url="/pages/ymw4xOGLPOW1dX7aL3tP" %}
[POST /info](/native-dev/build-with-native/native-core/reference/post-info.md)
{% endcontent-ref %}

{% content-ref url="/pages/2f1iTLbJG8HD9gz4V3yT" %}
[POST /trade](/native-dev/build-with-native/native-core/reference/post-trade.md)
{% endcontent-ref %}
