# Create ISA transfer

Create ISA transfer

Endpoint: POST /isa/transfers
Version: 1.95.0
Security: oauth-client-credentials

## Header parameters:

  - `upvest-client-id` (string, required)
    Tenant Client ID
    Example: "363f3305-7ab0-4e82-a158-f9d382ad08b6"

  - `Authorization` (string, required)
    Bearer (access) token from the OAuth flow with correct scopes.
https://datatracker.ietf.org/doc/html/rfc6750
    Example: "Bearer c2VjcmV0Cg=="

  - `signature` (string, required)
    https://tools.ietf.org/id/draft-ietf-httpbis-message-signatures-01.html#name-the-signature-http-header

  - `signature-input` (string, required)
    https://tools.ietf.org/id/draft-ietf-httpbis-message-signatures-01.html#name-the-signature-input-http-he

  - `idempotency-key` (string, required)
    A UUID to be used as an idempotency key.  This prevents a duplicate request from being replayed.
https://docs.upvest.co/documentation/concepts/api_concepts/idempotency
    Example: "ccb07f42-4104-44ad-8e1f-c660bb7b269c"

  - `upvest-api-version` (string)
    Upvest API version (Note: Do not include quotation marks)
    Enum: "1"

## Request fields (application/json):

  - `user_id` (string, required)
    User unique identifier.

  - `account_group_id` (string, required)
    Account group unique identifier.

  - `direction` (string, required)
    Direction of the ISA transfer
* INCOMING - Transfer is incoming to the user.
* OUTGOING - Transfer is outgoing from the user.
    Enum: "INCOMING", "OUTGOING"

  - `transfer_type` (string, 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.
    Enum: "ISA_INTERNAL", "ISA_EXTERNAL"

  - `currency` (string, required)
    Alphabetic three-letter [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code.
* GBP - Great British Pound
    Enum: "GBP"

  - `transfer_method` (string, required)
    Method of the ISA transfer
* CASH - Cash transfer.

Other methods can be supported in the future, e.g. IN_SPECIE
    Enum: "CASH"

  - `transfer_date` (string, 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)

  - `transfer_value` (string)

  - `reference` (string)
    Random string reference on which API clients can build logic.

  - `counterparty` (object)

  - `counterparty.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.

  - `details` (object)

  - `details.current_year_subscription` (object, required)
    Details related to the current year’s subscription being transferred.

Required if transfer_type is ISA_INTERNAL.

  - `details.current_year_subscription.transfer_amount` (string, required)

  - `details.current_year_subscription.first_subscription_at` (string)
    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 fields (application/json):

  - `id` (string, required)
    ISA transfer request unique identifier.

  - `created_at` (string, 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, 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)

  - `user_id` (string, required)
    User unique identifier.

  - `account_group_id` (string, required)
    Account group unique identifier.

  - `direction` (string, required)
    Direction of the ISA transfer
* INCOMING - Transfer is incoming to the user.
* OUTGOING - Transfer is outgoing from the user.
    Enum: "INCOMING", "OUTGOING"

  - `status` (string, 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.
    Enum: "NEW", "DISCOVERY", "DISCOVERY_CONFIRMED", "INSTRUCTED", "PROCESSING", "SETTLED"

  - `transfer_type` (string, 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.
    Enum: "ISA_INTERNAL", "ISA_EXTERNAL"

  - `currency` (string, required)
    Alphabetic three-letter [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code.
* GBP - Great British Pound
    Enum: "GBP"

  - `transfer_method` (string, required)
    Method of the ISA transfer
* CASH - Cash transfer.

Other methods can be supported in the future, e.g. IN_SPECIE
    Enum: "CASH"

  - `reference` (string, required)
    Random string reference on which API clients can build logic.

  - `transfer_date` (string, 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)

  - `transfer_value` (string)

  - `counterparty` (object)

  - `counterparty.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.

  - `details` (object)

  - `details.current_year_subscription` (object, required)
    Details related to the current year’s subscription being transferred.

Required if transfer_type is ISA_INTERNAL.

  - `details.current_year_subscription.transfer_amount` (string, required)

  - `details.current_year_subscription.first_subscription_at` (string)
    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 400 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 401 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 403 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 404 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 406 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 429 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 500 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 503 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 504 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.


