Skip to content

How to implement ISA transfers

Overview

With the Upvest API and webhooks clients can easily track and manage ISA transfers.

Transfer process

The process of ISA transfers requested via API are similar for both external and internal transfers. For internal transfers the only statuses that apply are NEW, PROCESSING, and SETTLED.

External transfers complete all of the following statuses:

StatusDescription
NEWA request for a new ISA Transfer is received.
DISCOVERYThe Discovery phase with the ceding provider was initiated for the transfer.
DISCOVERY_CONFIRMEDThe Discovery was verified and an instruction can be created for this transfer.
INSTRUCTEDTransfer is instructed to the ceding provider.
PROCESSINGTransfer instruction is confirmed by the ceding provider. Transfer is being processed.
SETTLEDThe transfer was completed.

Create an ISA transfer

Example ISA transfer request and response

POST /isa/transfers

{
  "transfer_type": "ISA_INTERNAL",
  "user_id": "7e9a0529-d289-4f4a-ae01-c2cd013d582e",
  "account_group_id": "d396b7c3-aa67-488a-8e39-4a1a7cbeb9f4",
  "direction": "INCOMING",
  "reference": "b82dc5985558fdr2",
  "counterparty": {
    "account_number": "1234567891"
  },
  "transfer_value": "10000.00",
  "currency": "GBP",
  "transfer_method": "CASH",
  "transfer_date": "2024-01-22T14:10:00.00Z",
  "details": {
    "current_year_subscription": {
      "transfer_amount": "2000.00",
      "first_subscription_at": "2024-01-15T10:00:00.00Z"
    }
  }
}

Request fields

In the transfer request, you must populate the fields marked as Required. Other fields remain optional.

FieldRequiredDescription
transfer_typeRequiredThe type of transfer:

- ISA_EXTERNAL - Transfer occurs across different ISA managers, via Equisoft or others.

- ISA_INTERNAL - Transfer occurs within the same ISA manager.

The type of transfer determines required fields.
user_idRequiredThe end user’s unique identifier.
account_group_idRequiredThe account group’s unique identifier.
directionRequiredDirection of the transfer:

- INCOMING: Transfer is incoming to the user.

- OUTGOING: Transfer is outgoing from the user.
referenceRequiredRandom string reference created by the provider for the transfer.
counterpartyRequired (for external transfers)Counterparty of the ISA transfer.

Required if transfer_type is ISA_EXTERNAL.
counterparty.account_numberRequired (for external transfers)Unique reference of the account group being transferred, (e.g., the ISA reference number).

Required if transfer_type is ISA_EXTERNAL.
transfer_valueRequired (for internal transfers)Total value of the transfer. For external transfers, this value is an estimate and reflects the amount that the cash balance increases.
The actual amount of the transfer may vary by the time the balance is updated. The transfer_value amount should account for potential changes in value between the discovery phase and the final transfer.

Required if transfer_type is ISA_INTERNAL.
currencyRequiredThe currency of the transfer. Set this equal to GBP.
transfer_methodRequiredMethod of the ISA transfer. Set this equal to CASH.
detailsRequired (for internal transfers)Details of the ISA being transferred.

Required if transfer_type is ISA_INTERNAL.
details
.current_year_subscription
Required (for internal transfers)Details related to the current year’s subscription of ISA being transferred.

Required if transfer_type is ISA_INTERNAL
details
.current_year_subscription
.transfer_amount
Required (for internal transfers)The amount of the transfer that relates to current tax year's subscriptions and impacts the current tax year's ISA allowance.

Required if transfer_type is ISA_INTERNAL
details
.current_year_subscription
.first_subscription_at
Required (for internal transfers)The date of the first subscription made to the ISA in the current tax year.

This is part of the reporting requirements to HM Revenues and Customs (HMRC), and does not need to be displayed to the end user.

This reflects the earliest date of all the positive subscriptions that are being transferred. These subscriptions positively impact the yearly allowance.

The sum of the subscriptions must be reflected in .transfer_amount.

Required if transfer_type is ISA_INTERNAL

Response fields

Only additional fields not present in the request are listed below.

FieldRequiredDescription
transfer_dateRequiredThe date when the end user initiated the transfer request.

Relevant for tax year's end reporting.
RFC 3339-5, ISO8601 UTC
statusRequiredStatus of the transfer. The available statuses are explained in the Transfer process section.