---
title: "Execute an internal account-to-account transfer"
method: POST
path: "/api/v1/money/transfers"
tags: ["Transfer"]
---

# Execute an internal account-to-account transfer

`POST /api/v1/money/transfers`

**Rate limit:** 60 requests per 60 seconds. This is the **default shared quota** — it is shared with every other endpoint that has no dedicated limit, so requests across those endpoints all draw from the same budget.

---

Executes an internal transfer from the source account to the destination account for the authenticated customer.

## Headers

- `x-request-id` string, uuid, required
- `x-api-key` string, password, required
- `x-user-key` string, password, required

## Request body

- MoneyTransferRequest — Request model for executing an internal transfer
  - `requestReferenceId` string, required — Client reference / idempotency key.
  - `sourceAccount` TransferAccountRef, required — Account identifier for a transfer participant
    - `accountType` 'trading' | 'options' | 'cash' | 'moneyFarm', required
    - `accountId` string, required — Account identifier
  - `destinationAccount` TransferAccountRef, required — Account identifier for a transfer participant
    - `accountType` 'trading' | 'options' | 'cash' | 'moneyFarm', required
    - `accountId` string, required — Account identifier
  - `amount` number, double, required — Amount to transfer.
  - `currency` string, nullable, required — ISO 4217 alphabetic currency code; must match the source account currency.
  - `extraData` object, nullable — Optional client metadata (opaque JSON object).

## Response `200`

Transfer accepted; returns transfer id and optional echoed request reference id.

- MoneyTransferResponse — Response after executing a transfer
  - `transferId` integer, required — Server transfer identifier.
  - `requestReferenceId` string, nullable — Echo of client requestReferenceId when provided.

## Other responses

- `400` — Validation error (accounts, amount, currency, or route).
- `401` — Unauthorized
- `403` — Forbidden
- `409` — Conflict (e.g. idempotency / duplicate request reference per policy)
- `429` — Too Many Requests — the shared rate limit (60 requests / 60s) was exceeded.
- `500` — Server error

---

[API](https://skmtc.net/etoro/apis/etoro-api.md) · [All operations](https://skmtc.net/etoro/apis/etoro-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/etoro/etoro-api/revisions/69c1fb266c35/schema)
