---
title: "Create Spot transfer"
method: POST
path: "/v1/spot/transfers"
tags: ["Spot balances and transfers"]
---

# Create Spot transfer

`POST /v1/spot/transfers`

## Request

- Base URL: `https://api.ondoperps.xyz`
- URL: `https://api.ondoperps.xyz/v1/spot/transfers`
- Auth: one of:
  - HTTP bearer
  - API key in header `ONDO-KEY-ID`

Move funds on the same account between main and spot or margin and spot. Margin moves require collateral eligibility and sufficient withdrawable margin. The returned record is the destination-crediting leg; from.wallet may be main for a margin/spot move. No client idempotency key is supported. Reconcile balances and history after an uncertain result before retrying.

See the [Spot API guide](/api-reference/spot-api-guide). Requires authentication; API-key scope: `transfer`.

## Request body

- SpotTransferReq
  - `from` SpotWalletKey, required
    - `id` string: Account ID; defaults to the authenticated account. Must identify the same account on both sides.
    - `wallet` 'main' | 'margin' | 'spot', required
  - `to` SpotWalletKey, required
    - `id` string: Account ID; defaults to the authenticated account. Must identify the same account on both sides.
    - `wallet` 'main' | 'margin' | 'spot', required
  - `symbol` string, required: Ledger asset ID, e.g. USDC or SPY.
  - `amount` string, required: Positive amount aligned to tokenConfig.decimals; share-equivalent units for GM assets.

## Response `200`

Success. Inspect item-level outcomes for batch operations.

- object
  - `success` boolean, required
  - `result` SpotTransfer
    - `from` SpotWalletKey, required
      - `id` string: Account ID; defaults to the authenticated account. Must identify the same account on both sides.
      - `wallet` 'main' | 'margin' | 'spot', required
    - `to` SpotWalletKey, required
      - `id` string: Account ID; defaults to the authenticated account. Must identify the same account on both sides.
      - `wallet` 'main' | 'margin' | 'spot', required
    - `symbol` string, required: Ledger asset ID, e.g. USDC or SPY.
    - `amount` string, required: Positive amount aligned to tokenConfig.decimals; share-equivalent units for GM assets.
    - `id` string, required
    - `time` string, date-time, required
    - `type` integer, required: Numeric transfer type.

## Other responses

- `400`: Validation error; inspect error_code and error.
- `429`: Rate limit exceeded. Slow down request frequency.

## Changes

- **2026-11-03** `1601c3adedda`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ondoperps/apis/ondo-perps-rest-api/changes/v1/spot/transfers/post.md)

---

[API](https://skmtc.dev/ondoperps/apis/ondo-perps-rest-api.md) - [All operations](https://skmtc.dev/ondoperps/apis/ondo-perps-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ondoperps/apis/ondo-perps-rest-api/revisions/1601c3adedda?raw)
