---
title: "Initiates a transfer of money between Ryft accounts"
method: POST
path: "/transfers"
tags: ["Transfers"]
---

# Initiates a transfer of money between Ryft accounts

`POST /transfers`

Used to initiate a transfer of money between Ryft accounts.

## Request body

- CreateTransferRequestBody
  - `amount` integer, required — The amount (in minor units) to transfer. Minimum 1 minor unit.
  - `currency` string, required — The three-letter ISO currency code
  - `source` object, nullable — Where the `amount` should be taken from. **Note** that you cannot specify both `source` & `destination`. A request in which `source` is specified will initiate a transfer **from** the supplied sub account to your own platform account. - the sub account's balance will be decremented - your platform account balance will be incremented
    - `accountId` string — ID of the Ryft account to take the funds from
  - `destination` object, nullable — Where the `amount` should be credited to. **Note** that you cannot specify both `source` & `destination`. A request in which `destination` is specified will initiate a transfer **to** the supplied sub account from your own platform account. - the sub account's balance will be incremented - your platform account balance will be decremented
    - `accountId` string — ID of the Ryft account to send the funds to
  - `reason` string, nullable — An optional reason describing why the transfer was initiated. Not required but recommended.
  - `metadata` object, nullable — Used to attach any custom key-value data to the transfer. You can have a maximum of 5 pieces of metadata.

## Response `200`

Successfully initiated the transfer

- Transfer
  - `id` string — The unique id of the transfer
  - `status` 'Pending' | 'Declined' | 'Completed' — The status the transfer is currently in
  - `amount` integer — The transfer amount (in minor units)
  - `currency` string — The ISO currency code
  - `reason` string, nullable — An optional reason describing why the transfer was initiated.
  - `source` object, nullable — Where the `amount` was taken from
    - `accountId` string — ID of the Ryft account that funds were taken from
  - `destination` object, nullable — Where the `amount` will be credited to
    - `accountId` string — ID of the Ryft account that will receive the funds
  - `errors` object[], nullable — Details any errors explaining why the transfer was `Declined`.
    - `code` string — code for the error
    - `description` string — Text describing the error
  - `metadata` object, nullable — Your custom key-value data for the transfer. You can have a maximum of 5 pieces of metadata.
  - `createdTimestamp` integer — The epoch timestamp (seconds) when the transfer was created
  - `lastUpdatedTimestamp` integer — The epoch timestamp (seconds) when the transfer was last updated

## Other responses

- `400` — One or more inputs are invalid
- `404` — The given resource could not be found
- `500` — An unexpected error occurred when executing this request

---

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