Flexible cash ISAs
Flexible cash ISAs overview
A cash ISA (Individual Savings Account) is a real savings deposit account held with ClearBank that is subject to tax benefits defined by the UK government. It can be used to send and/or receive payments once a nominated account has also been defined.
The balance of a cash ISA is held by ClearBank and can only be viewed via our API. Cash ISAs are reconciled for you by ClearBank. To open a cash ISA, your customer must provide you with their national insurance number and confirm they are a UK resident.
Because cash ISAs are structured differently to other GBP account types, you must use the endpoints defined on this page to interact with them. Do not use the endpoints listed on the Manage sterling accounts page.
You can create and manage customers with cash ISAs using the endpoints listed on the Retail customers page.
The sections below explain how to:
- Set up a cash ISA
- Close, cancel, or discontinue a cash ISA
- Transfer in a cash ISA
- Transfer out a cash ISA
Set up a cash ISA
When creating a new cash ISA, you need to first create the account, then set up the nominated account.
To set up a cash ISA:
- Use the POST /v1/isas endpoint to create the account
You cannot deposit funds into the cash ISA before the nominated account has been defined.
- After receiving the Account Created webhook, use the PUT /v1/accounts/{accountId}/nominated-account endpoint to define the nominated account for the cash ISA
You can now deposit funds into the cash ISA.
The process is shown in this message flow diagram:
The account is now open and fully operational. You can retrieve information on all ISAs by using the GET /v3/accounts endpoint and filtering for ISAs. You can also retrieve details on a specific cash ISA using the GET /v1/isas/{accountId} endpoint.
You can amend the details or the status of a cash ISA using the PATCH /v1/accounts/{accountId} endpoint.
To retrieve end of day balances for a cash ISA, use the camt.053 endpoints.
End of life for a cash ISA
There are several ways you can close a cash ISA. You need to choose the appropriate one based on what's happened in the account journey so far and what the customer wants to do with the account next.
Action | What this does |
---|---|
Close | Closes the account. |
Cancel | Cancels and closes the account without registering the account with the UK government. The account must be under 14 days old and must have had funds deposited. |
Transfer out | Allows you to transfer the account to another provider. Once transfer out has been successful, you then need to close the account. |
Discontinue | Only applicable where the ISA account holder is deceased. Triggers the payment of unpaid interest to allow for account closure. |
You can use this diagram to validate if the account should be closed, cancelled or transferred out:
The sections below explain how to:
Close
When closing a cash ISA, you must first withdraw funds before closing the account.
Before an account closure can be requested, the account balance must be zero. Funds can be withdrawn to a nominated account or another ClearBank account. If any interest has been accrued, it will be paid to the nominated account.
If the account balance is not zero, the request will be rejected. Account closure requests cannot be undone.
To close a cash ISA:
- Withdraw all funds from the cash ISA.
- Use the POST /v1/accounts/{accountId}/closure endpoint to request the account closure.
This process is asynchronous. The cash ISA is now frozen. Once the request is accepted, the account closure is pending until, if the account has accrued interest, the last interest payment is calculated and paid. This interest payment will be made to the nominated account. Once the payment has completed, the account will be closed.
- OPTIONAL Use the GET /v1/accounts/{accountId}/closure endpoint to check whether the account has been closed.
- You will receive either the Account Closure Completed or Account Closure Failed webhook once the account closure process has completed.
If the account closure fails, re-request the closure.
The process is shown in this message flow diagram:
Cancel
When cancelling a cash ISA, the account must be under fourteen days old. This endpoint also closes the account.
The cancellation period is based on the acceptance date field. For example, an account with the acceptance date of the 1st of the month can be cancelled up to 23:59 on the 14th day of the month.
Money must have already been deposited into the cash ISA. If no money has been deposited, or the account is over 14 days old, use the POST /v1/accounts/{accountId}/closure endpoint instead.
To cancel a cash ISA:
- Withdraw all funds from the cash ISA.
- Use the POST /v1/isas/{accountId}/cancellation to request the cancellation.
This process is asynchronous. The cash ISA is now frozen. Once the request is accepted, the account closure is pending until, if the account has accrued interest, the last interest payment is calculated and paid. This interest payment will be made to the nominated account. Once the payment has completed, the account will be closed.
- OPTIONAL Use the GET /v1/accounts/{accountId}/closure endpoint to check whether the account has been cancelled.
- You will receive either the Account Closure Completed or Account Closure Failed webhook once the account cancellation process has completed.
The process is shown in this message flow diagram:
Discontinue
The process to discontinue a cash ISA account begins with the notification that the account holder is deceased. Once you have received the notification, use the PATCH /v1/accounts/{accountId} to update the status
to Suspended
using the statusReason
of AccountHolderDeceased
.
As per HMRC rules, if an ISA investor passes away, their account must be treated as 'continuing account of a deceased investor'. This allows the account to continue to accrue interest and benefit from the tax advantages of an ISA for the period beginning with the death of the account holder and ending either:
- On the completion of the administration of the deceased's estate
- 3 years since the date of death
Once either of these conditions are met, you will need to mark the account as discontinued. To do so, use the PATCH /v1/isas/{accountId}/discontinue endpoint to trigger the payment of any unpaid interest into the account.
The account can then be closed as normal using the POST /v1/accounts/{accountId}/closure endpoint using the closureReason
of AccountHolderDeceased
.
The process is shown in this flow diagram:
Manage customer ISA eligibility
Customers can be made ineligible for cash ISAs. While a customer is ineligible, they cannot pay funds into their cash ISA.
Ineligible customers should still be able to withdraw funds from their cash ISA.
Customers can be made ineligible for cash ISA subscriptions for these reasons:
- You notified us that the customer's address is now outside the UK
- You notified us that the customer's place of residence is now outside the UK
- You provided us an invalid date of birth for the customer
- You provided us an invalid National Insurance (NI) number for the customer
When a customer moves their address out of the UK, they can continue making subscriptions until the current tax year ends.
You should notify us of customer address changes via the PUT /v1/customers/retail/{customerId}/currentaddress endpoint.
If the customer's address returns to the UK in the next tax year, you should submit a new declaration of ISA eligibility.
When a customer moves their place of residence out of the UK, no further subscriptions can be made.
You should notify us of customer country of residence changes via the PATCH /v1/customers/retail/{customerId} endpoint.
If the customer's place of residence returns to the UK, you should notify us of this then submit a new declaration of ISA eligibility.
When a customer's date of birth or NI number is found to be invalid, no further subscriptions can be made.
Once you have obtained a corrected NI or date of birth for the customer, use the PATCH /v1/customers/retail/{customerId} endpoint to notify us of this then submit a new declaration of ISA eligibility.
You can submit a declaration of ISA eligibility using the POST /isas/{accountId}/declaration endpoint. Verify the customerEligibilityStatus
field in the response has been set to Eligible
.
You can also use the GET /v1/isas/{accountId} endpoint to check the customer's eligibility status at any time.
Setting up a cash ISA
Subscribe to or withdraw from a cash ISA
You can use the Faster Payments endpoint to subscribe to or withdraw from a cash ISA.
Closing a cash ISA
Account Closure Completed webhook
This webhook confirms the account has been closed.
Request body
{"Type":"AccountClosureCompleted","Version":1,"Payload": {...},"Nonce":}
Payload
Element | Description |
---|---|
AccountId | Account identifier used to uniquely identify the account. Type: string Format: GUID Length: 36 Pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$ |
ClosureReason | Reason that the account was closed. Type: string Min. length: 1 Max. length: 100 |
AccountModifiedDateTime | Date and time the account was last modified. Type: string Time Zone: UTC Format: DateTime |
Nonce | Cryptographically secure number generated by ClearBank for every single webhook. A nonce number is generated randomly and should not be used as a check for duplication. |
Example Account Closure Completed webhook request body
{"Type":"AccountClosureCompleted","Version":1,"Payload":{"AccountId":"56de3483-a569-42eb-90cc-acf59661356f","ClosureReason":"AccountSwitched","TimestampCreated":"2024-07-19T13:31:30.8789344Z"},"Nonce":1082937279}
Example webhook response
{"Nonce": 1082937279}
Account Closure Failed webhook
This webhook confirms the account has not been closed. If you receive this webhook, you should check the ClosureFailureReason
field for more information on why the account closure has failed.
Account closure may fail due to the nominated account details being incorrect. In this scenario, you should retry the account closure through the relevant endpoint, ensuring that the correct nominated account details are submitted in the closure request.
- Obtain details of the currently configured nominated account using the GET /v1/accounts/{accountId}/nominated-account endpoint.
- OPTIONAL Correct the nominated account details using the PUT /v1/accounts/{accountId}/nominated-account endpoint.
- Resend the account closure request.
Request body
{"Type":"AccountClosureFailed","Version":1,"Payload": {...},"Nonce":}
Payload
Element | Description |
---|---|
AccountId | Account identifier used to uniquely identify the account. Type: string Format: GUID |
ClosureReason | Reason that the account was closed. Type: string , null Min. length: 1 Max. length: 100 |
ClosureFailureReasons | List of reasons the account failed to close. Type: array Min items: 1 Item type: string Min length: 1 |
AccountModifiedDateTime | Date and time the account was last modified. Type: string Time Zone: UTC Format: DateTime |
Nonce | Cryptographically secure number generated by ClearBank for every single webhook. A nonce number is generated randomly and should not be used as a check for duplication. |
Example account created webhook request body
{"Type":"AccountClosureFailed","Version":1,"Payload":{"AccountId":"45b542a0-1915-49de-96d8-f2dc906d5cc9","ClosureReason":"AccountHolderBankrupt","ClosureFailureReasons":{"Account 45b542a0-1915-49de-96d8-f2dc906d5cc9 does not have a nominated account set"},"AccountModifiedDateTime":"2024-09-23T13:31:30.8789344Z"},"Nonce":108246778}
Example webhook response
{"Nonce": 1082946778}
Transfer in
ClearBank supports full or partial transfers in of cash ISAs.
During the transfer in process, the previous ISA manager will transfer the cash ISA funds to a transfer in hub account created during onboarding. Once you have received the transfer history form from them and submitted it to us, you can then move funds from the hub in account into the cash ISA.
If you want to reject an existing transfer in request, use the POST /v1/isas/{accountId}/transfer-in/{transferInId}/rejection endpoint.
To transfer in a cash ISA:
- If a cash ISA doesn't already exist, you'll need to set up a cash ISA first.
- Use the POST /v1/isas/{accountId}/transfer-in endpoint.
You must provide a unique payment reference in the
PaymentReference
field when calling this endpoint. This reference will be used for reconciliation when the funds enter the transfer in or leave the transfer out hub. - When the previous manager of the cash ISA moves funds into the transfer hub, you will receive the Transaction Settled webhook. They will also send you the transfer history form.
- Use the PUT /v1/isas/{accountId}/transfer-in/{transferInId}/transfer-history-form endpoint to submit the transfer history form to us.
OPTIONAL To check the status of a transfer in, use the GET /v1/isas/{accountId}/transfer-in/{transferInId} endpoint.
- Once the transfer in has been approved, move the funds from the transfer hub to the cash ISA.
Transaction Settled webhook
This webhook confirms the transaction has settled. For Bacs payments, this is sent on Day 3 of Bacs processing cycle.
Request body
{"Type":"TransactionSettled","Version":6,"Payload": {...},"Nonce":}
Payload
Element | Description |
---|---|
TransactionId | Unique Identification of the Transaction. Type: GUID Max. Length: 36 Special Character: Hyphen - Example format of a typical TransactionId: CE25B426-9430-4A82-8EB8-9311DA2D3E12 |
Status | Transaction status. Type: string Settled |
Scheme | Optional The Scheme type. Transfer FasterPayments Bacs Chaps |
EndToEndTransactionId | For outbound Faster Payments and CHAPS transactions, this is the unique identifier you supplied in the endToEndIdentification field in your API request. For inbound CHAPS payments, this is the prefix "II-" followed by the Instruction Identification, which is unique. For outbound cheque transactions, this is the unique identifier you supplied in the MessageId value in your submit a cheque API request. For internal transfers, this will not be unique, as the value specified in the two webhooks describing the transactions applied to the debtor and creditor accounts will match. Type: string Max. length: 35 |
Amount | Transaction amount. Type: decimal |
TimestampSettled | Date and time the transaction settled. Time Zone: UTC Type: DateTime |
TimestampCreated | Date and time the transaction was created. Time Zone: UTC Type: DateTime |
CurrencyCode | Optional Code of transaction currency. GBP |
DebitCreditCode | Movement of transaction. Type: string Options: Credit , Debit |
Reference | (optional) Payment transaction reference. Max. length: 140 |
IsReturn | Is the Transaction returned from Scheme?True False |
Account | Account information object Type: object It contains the IBAN , BBAN , OwnerName , TransactionOwner and InstitutionName .IBAN : International Bank Account Number associated with the account.Type: string Max. length: 34 BBAN : Basic Bank Account number associated with the account.Type: string Max. length: 30 Depending on Scheme Type OwnerName : name of the beneficiary account holder registered with ClearBank®.Type: string Max. length: 128 - Faster Payments = Sender’s Account Name - Chaps = Ordering Customer’s Name TransactionOwnerName Type: string Max. length: 128 - Beneficiary Account Holder, as specified by the remitter in the payment message. - For outbound payments, as specified by ClearBank® as the remitter name in the payment message. InstitutionName : The institution name. Max. length: 128 - Chaps = Ordering Institution |
CounterpartAccount | The account which is not held at ClearBank. It contains the IBAN , BBAN , OwnerName , TransactionOwner and InstitutionName .IBAN (Optional): International Bank Account Number associated with the account.Type: string Max. length: 34 BBAN (Optional): Basic Bank Account number associated with the account.Type: string Max. length: 30 Depending on Scheme Type OwnerName : name of the beneficiary account.Type: string Max. length: 128 - Populated with either the same name as TransactionOwnerName , or with “Not Provided” depending on what is provided in the payment message.- Faster Payments = Beneficiary's Account Name TransactionOwnerName Type: string Max. length: 128 Populated by Scheme with the name provided in the payment message. - For outbound payments, this is populated as the Beneficiary Name which is provided by you. InstitutionName : The institution name. Max. length: 128 - Chaps = Beneficiary Institution |
ActualEndToEndTransactionId | Unique payment Identifier depending on Scheme Type. Maximum Field Length: 255 Faster Payments = FPID Chaps = Instruction Identification Cheques = CreditItemId FPID is the unique payment identifier generated by Faster Payments. Instruction Identification is the unique payment identifier generated by the remitting bank. ICS Credit Item Identification is the unique payment identifier generated by the cheque scheme. |
DirectDebitMandateId | (Optional) Unique Identification of a Direct Debit Instruction. Type: GUID Max. length: 36 |
TransactionCode | (Optional) Direct Debit Transaction code: "01" - First collection"17" - Regular collection"18" - Re-presented collection"19" - Final collection(Optional) Direct Credit Transaction code: "99" - Standard Bank Giro Credit"86" - Bank to bank settlement"Z4" - Interest payment"Z5" - Dividend payment |
ServiceUserNumber | (Optional) Service User's Unique Identifier registered with Bacs. Max. length: 6 |
BacsTransactionId | (Optional) Type: GUID Max. length: 36 |
BacsTransactionDescription | (Optional)CreditTransactionSettled DebitContraTransactionSettled DebitTransactionSettled CreditContraTransactionSettled DirectDebitReceivedIndemnityClaimSettled |
TransactionType | (Optional) DirectCredit DirectDebit DirectDebitIndemnityClaim |
TransactionSource | (Optional) Origination of the Transaction : Max. length: 50 Example: CardProcessor , Cheques |
SupplementaryData | (Optional) Transaction supplementary data It is an array with the a Name and Value . Name : Field Number/Name for an inbound CHAPS or FPS message. Max. length: 33 Name options: 20 , 13C , 23B , 23E , 26T , 32A , 33B , 36 , 50a , 51A , 52a , 53a , 54a , 55a , 56a , 57a , 59a , 70 , 71A , 71F , 71G , 72 , 77B , SendingFpsInstitution , Currency , DateSent , PaymentType , TransactionReferenceNumber , Amount , OriginatingCreditInstitution , OriginatingCustomerAccountNumber , OriginatingCustomerAccountName , OriginatingCustomerAccountAddress , EndToEndReference , BeneficiaryCreditInstitution , BeneficiaryCustomerAccountNumber , BeneficiaryCustomerAccountName , BeneficiaryCustomerAccountAddress , ReturnedPaymentFpId , PaymentReturnCode , PaymentSubTypeCode , PurposeTransactionType , TypeOfAccountCode , NumericReference , ReferenceInformation , RemittanceInformation , RegulatoryReporting , OriginalCurrency , OriginalAmount , ExchangeRate , ChargingInformation , SubmittingMember , ReceivingMember , SettlementCycleId , FileId , ProcessedAsynchronously , AgencyAccountWithMember , AgencySortCodeWithMember , RedirectedBeneficiaryCreditInstitution , RedirectedBeneficiaryCustomerAccountNumber , AbusiveMessageScreeningResult , AbusiveMessageScreeningIdentifiers Value Max. length: 500 There could be more than one Name and Value pair. |
Iso20022XmlDocument | (Optional) Only appears if Scheme is Chaps and the message type received is in ISO 20022 (MX) format. Content of the Document node (payload) of the received payment message, to enable processing of ISO 20022 messages for CHAPS. This value can be very long, so we recommend checking your firewall settings to ensure they will not prevent you from receiving the webhook. See below for examples. Type: string Min. Length: 0 Max. Length: 80000 |
Nonce | Cryptographically secure number generated by ClearBank® for every single webhook. A nonce number is generated randomly and should not be used as a check for duplication. |
Example transaction settled webhook request body for Transfer scheme type
{"Type":"TransactionSettled","Version":6,"Payload":{"TransactionId":"d9162680-7d35-7994-4e38-fa80716899a2","Status":"Settled","Scheme":"Transfer","EndToEndTransactionId":"05726acd06dc","Amount":88.52,"TimestampSettled":"2019-01-01T10:02:00.964Z","TimestampCreated":"2019-01-01T11:12:05.101Z","CurrencyCode":"GBP","DebitCreditCode":"Credit","Reference":"51dcf7ba480e61c5a60bbb6c6b774d17","IsReturn":false,"Account":{"IBAN":"GB00CUBK11223312345678","BBAN":"CUBK11223312345678","OwnerName":"JOHN DOE","TransactionOwnerName":"JOHN DOE","InstitutionName":"CustomerBank"},"CounterpartAccount":{"IBAN":"GB00CUBK44556687654321","BBAN":"CUBK44556687654321","OwnerName":"JANE DOE","TransactionOwnerName":"JANE DOE","InstitutionName":"CustomerBank"},"ActualEndToEndTransactionId":"e6e7ab2a97d1","DirectDebitMandateId":"cbf17eb8-9e49-2043-2eca-0dae05e27fe5","TransactionCode":"99","ServiceUserNumber":"030201","BacsTransactionId":"3ec6f5b0-0e6b-a30b-7dc4-cdcc0751d448","BacsTransactionDescription":"CreditContraTransactionSettled","TransactionType":"DirectCredit","TransactionSource":"CardProcessor","SupplementaryData":[{"Name":"20","Value":"AJF9384DGSB48Sd"},{"Name":"23B","Value":"CRED"}],"Nonce":949893874}
Example webhook response
{"Nonce": 949893874}
Example transaction settled webhook request body for CHAPS scheme type, Iso20022XmlDocument field present - populated for an inbound credit CHAPS payment of pacs.008 type
{"Type": "TransactionSettled","Version": 6,"Payload": {"TransactionId": "fbb84b68-fb67-4532-bfd6-2b540e341a21","Status": "Settled","Scheme": "Chaps","EndToEndTransactionId": "EndToEndId8","Amount": 9.09,"TimestampSettled": "2023-02-15T15:32:52.773Z","TimestampCreated": "2023-02-15T15:32:52.437Z","CurrencyCode": "GBP","DebitCreditCode": "Credit","Reference": "Reference17","IsReturn": false,"Account": {"IBAN": "GB57CLRB04040100057354","BBAN": "CLRB04040100057354","OwnerName": "Fictional - Name","TransactionOwnerName": "Some Other Name","InstitutionName": "ClearBank"},"CounterpartAccount": {"IBAN": "GB58CLRB04040009547509","OwnerName": "GB58CLRB04040009547509","TransactionOwnerName": "GB58CLRB04040009547509","InstitutionName": "LOYDGB22XXX"},"ActualEndToEndTransactionId": "EndToEndId8","SupplementaryData": [{"Name": "20","Value": "InstrId7"},{"Name": "32A","Value": "1909-11-1\r\n9.09"},{"Name": "33B","Value": ""},{"Name": "50K","Value": "DebtorName16\r\nGB58CLRB04040009547509"},{"Name": "52A","Value": "LOYDGB22XXX"},{"Name": "57A","Value": "CLRBGB20XXX"},{"Name": "59","Value": "GB57CLRB04040100057354"},{"Name": "70","Value": "EndToEndId8\r\nReference17"},{"Name": "71A","Value": "DEBT"}],"Iso20022XmlDocument": "<Document xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08\"><FIToFICstmrCdtTrf><GrpHdr><CreDtTm>1900-02-03T04:00:30+00:00</CreDtTm><NbOfTxs>1</NbOfTxs></GrpHdr><CdtTrfTxInf><PmtId><InstrId>InstrId7</InstrId><EndToEndId>EndToEndId8</EndToEndId><UETR>c2f6a588-8d1a-44cb-af87-4741bf2812a3</UETR></PmtId><IntrBkSttlmAmt Ccy=\"GBP\">9.09</IntrBkSttlmAmt><IntrBkSttlmDt>1909-11-12</IntrBkSttlmDt><ChrgBr>DEBT</ChrgBr><Dbtr><Nm>DebtorName16</Nm></Dbtr><DbtrAcct><Id><IBAN>GB58CLRB04040009547509</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>LOYDGB22XXX</BICFI></FinInstnId></DbtrAgt><CdtrAgt><FinInstnId><BICFI>CLRBGB20XXX</BICFI></FinInstnId></CdtrAgt><CdtrAcct><Id><IBAN>GB57CLRB04040100057354</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Reference17</Ustrd></RmtInf></CdtTrfTxInf></FIToFICstmrCdtTrf></Document>"},"Nonce": 1772448763}
Transfer out
You can also transfer a cash ISA to another provider. Once the transfer out is successful and the waiting period has completed, you'll need to close the account using the POST /v1/accounts/{accountId}/closure endpoint.
During the transfer out process, you move funds to a transfer out hub account created during onboarding. The cash ISA is then frozen. If the transfer out is successful, you can then move the funds from the transfer out hub to the new provider's account. There is a mandatory 15 day waiting period before you can close the account. If you requested a transfer out on the 1st of the month, the waiting period ends at 00:00 on the 16th. After that, you can close the account.
If the transfer out fails, the new provider will provide you a reason the transfer failed and they will return funds to the transfer out hub. Use the POST /v1/isas/{accountId}/transfer-outs/rejection endpoint to let ClearBank know the transfer out was unsuccessful and to unfreeze the account and return the account to the state it was before you requested the transfer out. Once the account is unfrozen, transfer the funds back into the cash ISA. The cash ISA will now continue to exist.
To transfer out a cash ISA:
- Use the POST /v1/isas/{accountId}/transfer-outs.
The cash ISA is now frozen. Only accrued interest, if any, can be credited to the account, and only the full balance can be withdrawn from the account.
- Once the account has been credited the final interest payment, withdraw the full balance of the account to the transfer out hub account created during onboarding. From there, you can send the funds to the new provider.
- Wait at least the remainder of the 15 working day waiting period to ensure the transfer out has been successful.
- Once the transfer has successfully completed, use the POST /v1/accounts/{accountId}/closure endpoint to request the account closure.
- OPTIONAL Use the GET /v1/accounts/{accountId}/closure endpoint to check whether the account has been closed.
- You will receive either the Account Closure Completed or Account Closure Failed webhook once the account closure process has completed.
The process is shown in this message flow diagram: