---
title: "Transfer between balances"
method: POST
path: "/api/v4/main-account/transfer"
tags: ["Transfer"]
---

# Transfer between balances

`POST /api/v4/main-account/transfer`

The endpoint transfers the specified amount between [main](/glossary#balance-main), [trade](/glossary#balance-spotbalance-trade) and [collateral](/glossary#balance-collateral) balances.

<Warning>
Rate limit: 1000 requests/10 sec.
</Warning>

<Note>
The API does not cache the response.
</Note>

<Note>
Also, fiat currencies can't be transferred without KYC verification.
</Note>

## Request body

- object
  - `method` 'deposit' | 'withdraw' | 'collateral-deposit' | 'collateral-withdraw' — Transfer method. ⚠️ We highly recommend to use **from** and **to** fields, which provides more flexibility. This way will be deprecated in future. Example: **deposit** to transfer from [main](/glossary#balance-main) to [trade](/glossary#balance-spotbalance-trade) / **withdraw** to transfer from [trade](/glossary#balance-spotbalance-trade) balance to [main](/glossary#balance-main). For [collateral balances](/glossary#balance-collateral) use **collateral-deposit** to transfer from main to collateral and **collateral-withdraw** to transfer from collateral to main **Not required** if **from** and **to** are set.
  - `from` 'main' | 'spot' | 'collateral' — Balance FROM which funds will move to. Acceptable values: [**main**](/glossary#balance-main), [**spot**](/glossary#balance-spotbalance-trade), [**collateral**](/glossary#balance-collateral) **Not required** if **method** is set.
  - `to` 'main' | 'spot' | 'collateral' — Balance TO which funds will move to. Acceptable values: [**main**](/glossary#balance-main), [**spot**](/glossary#balance-spotbalance-trade), [**collateral**](/glossary#balance-collateral) **Not required** if **method** is set.
  - `ticker` string, required — Currency's [ticker](/glossary#ticker). Example: BTC
  - `amount` string, required — Amount to transfer. Max [precision](/glossary#precision) = 8, value must be greater than zero and less than or equal to the available balance.
  - `request` string, required — Request signature
  - `nonce` integer, required — Unique request identifier

## Response `201`

All validations succeeded and creating transaction is started

- unknown[] — Empty array indicates success
  - unknown

## Other responses

- `400` — Request validation failed
- `422` — Inner validation failed Response error codes: - 1 - transfers from [trade](/glossary#balance-spotbalance-trade) to [main](/glossary#balance-main) are disabled, or withdraw of this currency is disabled - 2 - transfers from [main](/glossary#balance-main) to [trade](/glossary#balance-spotbalance-trade) are disabled, or deposit of this currency is disabled - 3 - not enough balance Additional account-state outcomes are returned here with `code: 0` (the message is localized — match on the condition, not the exact string): - **Collateral transfer unavailable** — the [collateral](/glossary#balance-collateral) (margin) feature is not available to this account; on field `error`, e.g. `Unavailable for legal reasons`. - **Operation not permitted for a sub-account** — on field `error`, e.g. `Not permitted for sub-account`. - **Maximum collateral balance exceeded** — the transfer would push the [collateral balance](/glossary#balance-collateral) past its cap; on field `form`.

---

[API](https://skmtc.net/whitebit/apis/whitebit-private-http-api-v4.md) · [All operations](https://skmtc.net/whitebit/apis/whitebit-private-http-api-v4/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whitebit/whitebit-private-http-api-v4/revisions/76c9def9942f/schema)
