---
title: "Create ISA transfer"
method: POST
path: "/isa/transfers"
tags: ["ISA Transfers"]
---

# Create ISA transfer

`POST /isa/transfers`

Create ISA transfer

## Headers

- `idempotency-key` string, uuid, required

## Request body

- object
  - `direction` 'INCOMING' | 'OUTGOING', required — Direction of the ISA transfer * INCOMING - Transfer is incoming to the user. * OUTGOING - Transfer is outgoing from the user.
  - `transfer_type` 'ISA_INTERNAL' | 'ISA_EXTERNAL', required — Type of the securities transfer * ISA_INTERNAL - Transfer occurs within the same ISA manager. * ISA_EXTERNAL - Transfer occurs across different ISA managers, via Equisoft or others.
  - `transfer_value` string
  - `currency` 'GBP', required — Alphabetic three-letter [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. * GBP - Great British Pound
  - `transfer_method` 'CASH', required — Method of the ISA transfer * CASH - Cash transfer. Other methods can be supported in the future, e.g. IN_SPECIE
  - `user_id` string, uuid, required — User unique identifier.
  - `account_group_id` string, uuid, required — Account group unique identifier.
  - `reference` string — Random string reference on which API clients can build logic.
  - `counterparty` object
    - `account_number` string, required — The account number is composed of valid Swift charset with a max length of 28 if provided. The account number helps other brokers identify the owner of the assets.
  - `transfer_date` string, date-time, required — The date when end user initiated the transfer. Relevant for tax year's end reporting. If not sent it will be the time we create the transfer internally on our side. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
  - `details` object
    - `current_year_subscription` object, required — Details related to the current year’s subscription being transferred. Required if transfer_type is ISA_INTERNAL.
      - `transfer_amount` string, required
      - `first_subscription_at` string, date-time — The date of the first subscription made to the ISA in the current tax year. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html) Required if transfer_type is ISA_INTERNAL.

## Response `200`

ISA Transfer created

- object
  - `id` string, uuid, required — ISA transfer request unique identifier.
  - `created_at` string, date-time, required — Date and time when the resource was created. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
  - `updated_at` string, date-time, required — Date and time when the resource was last updated. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
  - `direction` 'INCOMING' | 'OUTGOING', required — Direction of the ISA transfer * INCOMING - Transfer is incoming to the user. * OUTGOING - Transfer is outgoing from the user.
  - `status` 'NEW' | 'DISCOVERY' | 'DISCOVERY_CONFIRMED' | 'INSTRUCTED' | 'PROCESSING' | 'SETTLED', required — Status of the transfer * NEW - Transfer is created. * DISCOVERY - Discovery with the ceding provider where information about the transfer is being exchanged and reviewed. Only relevant if type ISA_EXTERNAL. * DISCOVERY_CONFIRMED - Discovery is completed and transfer request is accepted by the ceding provider. Only relevant if type ISA_EXTERNAL. * INSTRUCTED - Transfer is instructed to the ceding provider. * PROCESSING - Transfer instruction is confirmed by the ceding provider. Transfer is being processed. * SETTLED - Transfer is completed.
  - `transfer_type` 'ISA_INTERNAL' | 'ISA_EXTERNAL', required — Type of the securities transfer * ISA_INTERNAL - Transfer occurs within the same ISA manager. * ISA_EXTERNAL - Transfer occurs across different ISA managers, via Equisoft or others.
  - `transfer_value` string
  - `currency` 'GBP', required — Alphabetic three-letter [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. * GBP - Great British Pound
  - `transfer_method` 'CASH', required — Method of the ISA transfer * CASH - Cash transfer. Other methods can be supported in the future, e.g. IN_SPECIE
  - `user_id` string, uuid, required — User unique identifier.
  - `account_group_id` string, uuid, required — Account group unique identifier.
  - `reference` string, required — Random string reference on which API clients can build logic.
  - `counterparty` object
    - `account_number` string, required — The account number is composed of valid Swift charset with a max length of 28 if provided. The account number helps other brokers identify the owner of the assets.
  - `transfer_date` string, date-time, required — The date when end user initiated the transfer. Relevant for tax year's end reporting. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
  - `details` object
    - `current_year_subscription` object, required — Details related to the current year’s subscription being transferred. Required if transfer_type is ISA_INTERNAL.
      - `transfer_amount` string, required
      - `first_subscription_at` string, date-time — The date of the first subscription made to the ISA in the current tax year. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html) Required if transfer_type is ISA_INTERNAL.

## Other responses

- `400` — Bad Request. The incoming request had a malformed parameter/object.
- `401` — Unauthorized. The caller has not been authenticated.
- `403` — Forbidden. The caller has been authenticated but is not allowed to take the requested action.
- `404` — Not Found. The requested resource could not be found.
- `406` — Not Acceptable. The resource does not have a current representation that would be acceptable to the user agent. "Accept" header defined unsupported value.
- `429` — Too Many Requests. The caller has exceeded their quota for the time period and has been throttled.
- `500` — Internal Server Error. The service encountered an unexpected error.
- `503` — Service Unavailable. The service handling for this request cannot be reached at this time.
- `504` — Gateway Timeout. The service gateway has reached its internal timeout.

---

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