Lifetime ISA API
Date | Amount |
---|---|
Version and status | |
Available in Sandbox | Yes |
Sandbox base URL | https://test-api.service.hmrc.gov.uk |
Available in Production | Yes |
Production base URL | https://api.service.hmrc.gov.uk |
Overview
This API allows financial organisations to report Lifetime ISA (LISA) information to HM Revenue and Customs (HMRC) and get information about payments made by HMRC.
The API allows the financial organisation to:
- report a new investor to HMRC
- create, transfer or make changes to a LISA account
- get details of a LISA account
- report or get details of an investor life event
- request or get details of bonus payments and withdrawal charges
- get payment and debt information
Save reference numbers
When you report or get information from the API, you will get a unique reference number. You should save all reference numbers because you may need them for other API calls.
Versioning
When an API changes in a way that is backwards-incompatible, we increase the version number of the API. See our reference guide for more on versioning.
Errors
We use standard HTTP status codes to show whether an API request succeeded or not. They are usually in the range:
- 200 to 299 if it succeeded, including code 202 if it was accepted by an API that needs to wait for further action
- 400 to 499 if it failed because of a client error by your application
- 500 to 599 if it failed because of an error on our server
Errors specific to each API are shown in the Endpoints section, under Response. See our reference guide for more on errors.
Testing
You can use the sandbox environment to test this API.
It does not currently support stateful behaviour, but you can use the payloads described in Resources to test specific scenarios.
You must set up a test user which is an organisation for this API using the Create Test User API.
Endpoints
/lifetime-isa/manager/{lisaManagerReferenceNumber}
Get a list of all available endpoints
GET
Use a LISA manager reference to get a list of all available endpoints.
Path parameters
Name | Description |
---|---|
lisaManagerReferenceNumber
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
Request headers
Name | Description |
---|---|
Accept
required
|
Specifies the response format and the version of the API to be used. application/vnd.hmrc.2.0+json
|
Authorization
required
|
An
OAuth 2.0 Bearer Token
with the read:lisa scope.
For example: Bearer bb7fed3fe10dd235a2ccda3d50fb
|
See also fraud prevention.
Responses
HTTP status 200 (OK)
{ "lisaManagerReferenceNumber": "Z543210", "_links": { "self": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}", "methods": ["GET"]}, "investors": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/investors", "methods": ["POST"]}, "accounts": [ {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts", "methods": ["POST"]}, {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}", "methods": ["GET"]} ], "close account": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/close-account", "methods": ["POST"]}, "reinstate account": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/reinstate-account", "methods": ["POST"]}, "update subscription": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/update-subscription", "methods": ["POST"]}, "life events": [ {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/events", "methods": ["POST"]}, {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/events/{lifeEventId}", "methods": ["GET"]} ], "annual returns": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/events/annual-returns", "methods": ["POST"]}, "bonus payments": [ {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/transactions", "methods": ["POST"]}, {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/transactions/{transactionId}", "methods": ["GET"]} ], "withdrawal charges": [ {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/withdrawal-charges", "methods": ["POST"]}, {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/withdrawal-charges/{transactionId}", "methods": ["GET"]} ], "property purchase fund release": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/events/fund-releases", "methods": ["POST"]}, "property purchase extension": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/events/purchase-extensions", "methods": ["POST"]}, "property purchase outcome": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/events/purchase-outcomes", "methods": ["POST"]}, "bulk payments": {"href": "/lifetime-isa/manager/{lisaManagerReferenceNumber}/payments?startDate={startDate}&endDate={endDate}", "methods": ["GET"]}, "bulk payment breakdown": {"href": "/lifetime-isa/manager/$lisaManagerReferenceNumber/accounts/{accountId}/transactions/{transactionId}/payments", "methods": ["GET"]} } }
Name | Description |
---|---|
lisaManagerReferenceNumber
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
_links
object
optional
|
|
HTTP status 400 (Bad Request)
Enter lisaManagerReferenceNumber in the correct format, like Z1234
{ "code" : "BAD_REQUEST", "message" : "Enter lisaManagerReferenceNumber in the correct format, like Z1234" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 401 (Unauthorized)
Enter a real lisaManagerReferenceNumber
{ "code" : "UNAUTHORIZED", "message" : "Enter a real lisaManagerReferenceNumber" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
Error scenarios
Scenario | HTTP status | Code |
---|---|---|
Enter lisaManagerReferenceNumber in the correct format, like Z1234 |
400 (Bad Request) |
BAD_REQUEST |
Enter a real lisaManagerReferenceNumber |
401 (Unauthorized) |
UNAUTHORIZED |
For error scenarios that are common across all APIs, and for error formats, see our reference guide.
Test data
Scenario | Response |
---|---|
Request with an invalid LISA Manager reference number lisaManagerReferenceNumber: 123456 |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter lisaManagerReferenceNumber in the correct format, like Z1234" } |
Close Section
/lifetime-isa/manager/{lisaManagerReferenceNumber}/investors
Create a LISA investor
POST
Report a new LISA investor to HMRC to generate an investor ID. If the investor already exists, you will get their reference number.
Path parameters
Name | Description |
---|---|
lisaManagerReferenceNumber
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
Request headers
Name | Description |
---|---|
Accept
required
|
Specifies the response format and the version of the API to be used. application/vnd.hmrc.2.0+json
|
Content-Type
required
|
Specifies the format of the request body, which must be JSON. application/json
|
Authorization
required
|
An
OAuth 2.0 Bearer Token
with the write:lisa scope.
For example: Bearer bb7fed3fe10dd235a2ccda3d50fb
|
See also fraud prevention.
Request
{ "investorNINO" : "AB123456D", "firstName" : "FirstName", "lastName" : "LastName", "dateOfBirth" : "1973-03-24" }
Name | Description |
---|---|
investorNINO
string
required
|
The investor’s National Insurance number.
Must conform to the regular expression
For example: |
firstName
string
required
|
The investor’s first name.
Must conform to the regular expression
For example: |
lastName
string
required
|
The investor’s last name.
Must conform to the regular expression
For example: |
dateOfBirth
string
required
|
The investor’s date of birth. This cannot be in the future. Date in the format
For example: |
Responses
HTTP status 201 (Created)
{ "status": 201, "success": true, "data": { "message": "Investor created", "investorId": "9876543210" } }
Name | Description |
---|---|
status
number
required
|
The HTTP status of the result of the API call. Always 201. |
success
boolean
required
|
Whether the API call was successful or not. Always true. |
data
object
required
|
Response details. |
message
string
required
|
A human-readable explanation for the result of the API call. Limited to the following possible values: Investor created
|
investorId
string
required
|
The investor’s ID reference number. You must store this ID as it is needed for other API calls.
Must conform to the regular expression |
HTTP status 400 (Bad Request)
Bad Request
{ "code" : "BAD_REQUEST", "message" : "Bad Request" }
Enter lisaManagerReferenceNumber in the correct format, like Z1234
{ "code" : "BAD_REQUEST", "message" : "Enter lisaManagerReferenceNumber in the correct format, like Z1234" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 401 (Unauthorized)
Enter a real lisaManagerReferenceNumber
{ "code" : "UNAUTHORIZED", "message" : "Enter a real lisaManagerReferenceNumber" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 403 (Forbidden)
{ "code": "INVESTOR_NOT_FOUND", "message": "The investor details given do not match with HMRC’s records." }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 409 (Conflict)
The investor already has a record with HMRC
{ "code" : "INVESTOR_ALREADY_EXISTS", "message" : "The investor already has a record with HMRC." }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
Error scenarios
Scenario | HTTP status | Code |
---|---|---|
Bad Request |
400 (Bad Request) |
BAD_REQUEST |
Enter lisaManagerReferenceNumber in the correct format, like Z1234 |
400 (Bad Request) |
BAD_REQUEST |
Enter a real lisaManagerReferenceNumber |
401 (Unauthorized) |
UNAUTHORIZED |
The investor details given do not match with HMRC’s records |
403 (Forbidden) |
INVESTOR_NOT_FOUND |
The investor already has a record with HMRC |
409 (Conflict) |
INVESTOR_ALREADY_EXISTS |
For error scenarios that are common across all APIs, and for error formats, see our reference guide.
Test data
Scenario | Request Payload | Response |
---|---|---|
Request with a valid payload and LISA Manager reference number lisaManagerReferenceNumber: Use your test user profile |
{ "investorNINO": "AA123456A", "firstName": "First Name", "lastName": "Last Name", "dateOfBirth": "1985-03-25" } |
HTTP status: { "status": 201, "success": true, "data": { "message": "Investor created", "investorId": "9876543210" } } |
Request with a valid payload and an invalid LISA Manager reference number lisaManagerReferenceNumber: 123456 |
{ "investorNINO": "AA123456A", "firstName": "First Name", "lastName": "Last Name", "dateOfBirth": "1985-03-25" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter lisaManagerReferenceNumber in the correct format, like Z1234" } |
Request containing invalid and/or missing data lisaManagerReferenceNumber: Use your test user profile |
{ "investorNINO": "A1234567A", "firstName": true, "dateOfBirth": "25-03-1985" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Bad Request", "errors": [ { "code": "MISSING_FIELD", "message": "This field is required", "path": "/lastName" }, { "code": "INVALID_DATE", "message": "Date is invalid", "path": "/dateOfBirth" }, { "code": "INVALID_FORMAT", "message": "Invalid format has been used", "path": "/investorNINO" }, { "code": "INVALID_DATA_TYPE", "message": "Invalid data type has been used", "path": "/firstName" } ] } |
Request containing investor details which do not match HMRC’s records lisaManagerReferenceNumber: Use your test user profile |
{ "investorNINO": "AA111111A", "firstName": "First Name", "lastName": "Last Name", "dateOfBirth": "1985-03-25" } |
HTTP status: { "code": "INVESTOR_NOT_FOUND", "message": "The investor details given do not match with HMRC’s records" } |
Request with an invalid 'Accept' header lisaManagerReferenceNumber: Use your test user profile |
{ "investorNINO": "AA123456A", "firstName": "First Name", "lastName": "Last Name", "dateOfBirth": "1985-03-25" } |
HTTP status: { "code": "MATCHING_RESOURCE_NOT_FOUND", "message": "A resource with the name in the request can not be found in the API" } |
Request containing a pre-existing investor’s details lisaManagerReferenceNumber: Use your test user profile |
{ "investorNINO": "AA222222A", "firstName": "First Name", "lastName": "Last Name", "dateOfBirth": "1985-03-25" } |
HTTP status: { "code": "INVESTOR_ALREADY_EXISTS", "message": "The investor already has a record with HMRC", "id": "1234567890" } |
Close Section
LISA accounts
LISA accounts resources
/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts
Create or transfer a LISA account
POST
Create a new account you’ve set up for an investor, or transfer an existing account from another LISA provider. If you’re creating a new account you’ll need to create a LISA investor first.
Path parameters
Name | Description |
---|---|
lisaManagerReferenceNumber
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
Request headers
Name | Description |
---|---|
Accept
required
|
Specifies the response format and the version of the API to be used. application/vnd.hmrc.2.0+json
|
Content-Type
required
|
Specifies the format of the request body, which must be JSON. application/json
|
Authorization
required
|
An
OAuth 2.0 Bearer Token
with the write:lisa scope.
For example: Bearer bb7fed3fe10dd235a2ccda3d50fb
|
See also fraud prevention.
Request
{ "investorId": "9876543210", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" }
{ "investorId": "9876543210", "creationReason": "Transferred", "accountId": "1234567891", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } }
Name | Description |
---|---|
investorId
string
required
|
The investor’s ID reference number.
Must conform to the regular expression
For example: |
accountId
string
required
|
The provider’s own unique reference number for the investor’s LISA account.
Must conform to the regular expression
For example: |
creationReason
string
required
|
The reason the account was created. Limited to the following possible values: New
Transferred
Current year funds transferred
Previous year funds transferred
|
firstSubscriptionDate
string
required
|
The date of the first deposit into the account - if this is a transfer, use the date of deposit into the account managed by the previous provider. This cannot be in the future. Date in the format
For example: |
transferAccount
object
optional
|
If the creationReason is ‘Transferred’, 'Current year funds transferred', or 'Previous year funds transferred', then this is required. |
transferredFromAccountId
string
required
|
The previous provider’s own unique reference number for the investor’s LISA account.
Must conform to the regular expression
For example: |
transferredFromLMRN
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
transferInDate
string
required
|
The date the account transferred from the previous provider to the new one. This cannot be in the future. Date in the format
For example: |
Responses
HTTP status 201 (Created)
{ "status": 201, "success": true, "data": { "message": "Account created", "accountId": "1234567890" } }
{ "status": 201, "success": true, "data": { "message": "Account transferred", "accountId": "1234567891" } }
Name | Description |
---|---|
status
number
required
|
The HTTP status of the result of the API call. Always 201. |
success
boolean
required
|
Whether the API call was successful or not. Always true. |
data
object
required
|
Response details. |
message
string
required
|
A human-readable explanation for the result of the API call. Limited to the following possible values: Account created
Account transferred
|
accountId
string
required
|
The provider’s own unique reference number for the investor’s LISA account.
Must conform to the regular expression |
HTTP status 400 (Bad Request)
Bad Request
{ "code" : "BAD_REQUEST", "message" : "Bad Request" }
Enter lisaManagerReferenceNumber in the correct format, like Z1234
{ "code" : "BAD_REQUEST", "message" : "Enter lisaManagerReferenceNumber in the correct format, like Z1234" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 401 (Unauthorized)
Enter a real lisaManagerReferenceNumber
{ "code" : "UNAUTHORIZED", "message" : "Enter a real lisaManagerReferenceNumber" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 403 (Forbidden)
The investor details given do not match with HMRC’s records
{ "code" : "INVESTOR_NOT_FOUND", "message" : "invalid status: must create with open status" }
The investor is not eligible for a LISA account
{ "code" : "INVESTOR_ELIGIBILITY_CHECK_FAILED", "message" : "Can’t open a LISA if investor is older than 40 or younger than 18" }
You cannot create or transfer a LISA account because the investor has failed a compliance check
{ "code" : "INVESTOR_COMPLIANCE_CHECK_FAILED", "message" : "You cannot create or transfer a LISA account because the investor has failed a compliance check" }
The transferredFromAccountId and transferredFromLMRN given do not match an account on HMRC’s records
{ "code" : "PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST", "message" : "Previous Investor Account Doesn’t Exist" }
You must give a transferredFromAccountId, transferredFromLMRN and transferInDate when the creationReason is transferred, current or previous year funds transferred
{ "code" : "TRANSFER_ACCOUNT_DATA_NOT_PROVIDED", "message" : "transfer account data not provided" }
You must only give a transferredFromAccountId, transferredFromLMRN, and transferInDate when the creationReason is transferred, current or previous year funds transferred
{ "code" : "TRANSFER_ACCOUNT_DATA_PROVIDED", "message" : "transfer account data provided" }
The LISA account is already closed
{ "code" : "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message" : "The LISA account is already closed" }
The LISA account is already cancelled
{ "code" : "INVESTOR_ACCOUNT_ALREADY_CANCELLED", "message" : "The LISA account is already cancelled" }
The LISA account is already void
{ "code" : "INVESTOR_ACCOUNT_ALREADY_VOID", "message" : "The LISA account is already void" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 409 (Conflict)
{ "code": "INVESTOR_ACCOUNT_ALREADY_EXISTS", "message": "This investor already has a LISA account", "accountId": "1234567890" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
Error scenarios
Scenario | HTTP status | Code |
---|---|---|
Bad Request |
400 (Bad Request) |
BAD_REQUEST |
Enter lisaManagerReferenceNumber in the correct format, like Z1234 |
400 (Bad Request) |
BAD_REQUEST |
Enter a real lisaManagerReferenceNumber |
401 (Unauthorized) |
UNAUTHORIZED |
The investor details given do not match with HMRC’s records |
403 (Forbidden) |
INVESTOR_NOT_FOUND |
The investor is not eligible for a LISA account |
403 (Forbidden) |
INVESTOR_ELIGIBILITY_CHECK_FAILED |
You cannot create or transfer a LISA account because the investor has failed a compliance check |
403 (Forbidden) |
INVESTOR_COMPLIANCE_CHECK_FAILED |
The transferredFromAccountId and transferredFromLMRN given do not match an account on HMRC’s records |
403 (Forbidden) |
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST |
You must give a transferredFromAccountId, transferredFromLMRN and transferInDate when the creationReason is transferred, current or previous year funds transferred |
403 (Forbidden) |
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED |
You must only give a transferredFromAccountId, transferredFromLMRN, and transferInDate when the creationReason is transferred, current or previous year funds transferred |
403 (Forbidden) |
TRANSFER_ACCOUNT_DATA_PROVIDED |
The LISA account is already closed |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_CLOSED |
The LISA account is already cancelled |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_CANCELLED |
The LISA account is already void |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_VOID |
This investor already has a LISA account |
409 (Conflict) |
INVESTOR_ACCOUNT_ALREADY_EXISTS |
For error scenarios that are common across all APIs, and for error formats, see our reference guide.
Test data
Scenario | Request Payload | Response |
---|---|---|
Create request with a valid payload and LISA Manager reference number lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "9876543210", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "status": 201, "success": true, "data": { "message": "Account created", "accountId": "1234567890" } } |
Transfer request with a valid payload and LISA Manager reference number lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "9876543210", "creationReason": "Transferred", "accountId": "1234567891", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } |
HTTP status: { "status": 201, "success": true, "data": { "message": "Account transferred", "accountId": "1234567891" } } |
Transfer current year request with a valid payload and LISA Manager reference number lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "9876543210", "creationReason": "Current year funds transferred", "accountId": "1234567892", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } |
HTTP status: { "status": 201, "success": true, "data": { "message": "Account transferred", "accountId": "1234567892" } } |
Transfer previous year request with a valid payload and LISA Manager reference number lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "9876543210", "creationReason": "Previous year funds transferred", "accountId": "1234567893", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } |
HTTP status: { "status": 201, "success": true, "data": { "message": "Account transferred", "accountId": "1234567893" } } |
Request with a valid payload and an invalid LISA Manager reference number lisaManagerReferenceNumber: A123456 |
{ "investorId": "9876543210", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter lisaManagerReferenceNumber in the correct format, like Z1234" } |
Request containing invalid and/or missing data lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "9876543", "creationReason": "New", "firstSubscriptionDate": "2011" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Bad Request", "errors": [ { "code": "INVALID_DATE", "message": "Date is invalid", "path": "/firstSubscriptionDate" }, { "code": "INVALID_FORMAT", "message": "Invalid format has been used", "path": "/investorId" }, { "code": "MISSING_FIELD", "message": "This field is required", "path": "/accountId" } ] } |
Request containing dates before 6 April 2017 lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "9876543210", "creationReason": "Transferred", "accountId": "1234567890", "firstSubscriptionDate": "2016-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2016-04-06" } } |
HTTP status: { "code": "FORBIDDEN", "message": "There is a problem with the request data", "errors": [ { "code": "INVALID_DATE", "message": "The firstSubscriptionDate cannot be before 6 April 2017", "path": "/firstSubscriptionDate" }, { "code": "INVALID_DATE", "message": "The transferInDate cannot be before 6 April 2017", "path": "/transferAccount/transferInDate" } ] } |
Request containing investor details which cannot be found lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "1234567890", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "INVESTOR_NOT_FOUND", "message": "The investor details given do not match with HMRC’s records" } |
Request containing an investor who is not eligible for a LISA account lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "1234567891", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "INVESTOR_ELIGIBILITY_CHECK_FAILED", "message": "The investor is not eligible for a LISA account" } |
Request containing an investor who has not passed the compliance check lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "1234567892", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "INVESTOR_COMPLIANCE_CHECK_FAILED", "message": "You cannot create or transfer a LISA account because the investor has failed a compliance check" } |
Transfer request containing transfer details which cannot be found in HMRC's records lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "1234567889", "creationReason": "Transferred", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } |
HTTP status: { "code": "PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST", "message": "The transferredFromAccountId and transferredFromLMRN given do not match an account on HMRC’s records" } |
Transfer request without transfer details lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "9876543210", "creationReason": "Transferred", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "TRANSFER_ACCOUNT_DATA_NOT_PROVIDED", "message": "You must give a transferredFromAccountId, transferredFromLMRN and transferInDate when the creationReason is transferred, current or previous year funds transferred" } |
Create request containing transfer details lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "9876543210", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } |
HTTP status: { "code": "TRANSFER_ACCOUNT_DATA_PROVIDED", "message": "You must only give a transferredFromAccountId, transferredFromLMRN, and transferInDate when the creationReason is transferred, current or previous year funds transferred" } |
Request containing a LISA account which has already been closed lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "0000000403", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message": "The LISA account is already closed" } |
Request containing a LISA account which has already been cancelled lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "2000000403", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_CANCELLED", "message": "The LISA account is already cancelled" } |
Request containing a LISA account which has already been voided lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "1000000403", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_VOID", "message": "The LISA account is already void" } |
Request with an invalid 'Accept' header lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "9876543210", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "MATCHING_RESOURCE_NOT_FOUND", "message": "A resource with the name in the request can not be found in the API" } |
Request for a pre-existing account lisaManagerReferenceNumber: Use your test user profile |
{ "investorId": "1234567899", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_EXISTS", "message": "This investor already has a LISA account", "accountId": "1234567890" } |
Close Section
/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/reinstate-account
Reinstate a LISA account
POST
Re-open a LISA account that has been closed.
Path parameters
Name | Description |
---|---|
lisaManagerReferenceNumber
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
Request headers
Name | Description |
---|---|
Accept
required
|
Specifies the response format and the version of the API to be used. application/vnd.hmrc.2.0+json
|
Content-Type
required
|
Specifies the format of the request body, which must be JSON. application/json
|
Authorization
required
|
An
OAuth 2.0 Bearer Token
with the write:lisa scope.
For example: Bearer bb7fed3fe10dd235a2ccda3d50fb
|
See also fraud prevention.
Request
{ "accountId": "8765432100" }
Name | Description |
---|---|
accountId
string
required
|
The provider’s own unique reference number for the investor’s LISA account.
Must conform to the regular expression
For example: |
Responses
HTTP status 200 (OK)
{ "status": 200, "success": true, "data": { "message": "This account has been reinstated", "accountId": "8765432100" } }
Name | Description |
---|---|
status
number
required
|
The HTTP status of the result of the API call. Always 200. |
success
boolean
required
|
Whether the API call was successful or not. Always true. |
data
object
required
|
Response details. |
message
string
required
|
A human-readable explanation for the result of the API call. Limited to the following possible values: This account has been reinstated
|
accountId
string
required
|
The provider’s own unique reference number for the investor’s LISA account.
Must conform to the regular expression |
HTTP status 400 (Bad Request)
Bad Request
{ "code": "BAD_REQUEST", "message": "Bad Request", "errors": [ { "code": "INVALID_FORMAT", "message": "Invalid format has been used", "path": "/accountId" } ] }
Enter lisaManagerReferenceNumber in the correct format, like Z1234
{ "code" : "BAD_REQUEST", "message" : "Enter lisaManagerReferenceNumber in the correct format, like Z1234" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 401 (Unauthorized)
Enter a real lisaManagerReferenceNumber
{ "code" : "UNAUTHORIZED", "message" : "Enter a real lisaManagerReferenceNumber" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 404 (Not Found)
Enter a real accountId
{ "code": "INVESTOR_ACCOUNTID_NOT_FOUND", "message": "Enter a real accountId" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 403 (Forbidden)
You cannot reinstate this account because it was closed with a closure reason of transferred out
{ "code" : "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message" : "You cannot reinstate this account because it was closed with a closure reason of transferred out" }
You cannot reinstate this account because it was closed with a closure reason of cancellation
{ "code" : "INVESTOR_ACCOUNT_ALREADY_CANCELLED", "message" : "You cannot reinstate this account because it was closed with a closure reason of cancellation" }
You cannot reinstate this account because it is already open
{ "code" : "INVESTOR_ACCOUNT_ALREADY_OPEN", "message" : "You cannot reinstate this account because it is already open" }
You cannot reinstate this account because the investor has failed a compliance check
{ "code" : "INVESTOR_COMPLIANCE_CHECK_FAILED", "message" : "You cannot reinstate this account because the investor has failed a compliance check" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
Error scenarios
Scenario | HTTP status | Code |
---|---|---|
Bad Request |
400 (Bad Request) |
BAD_REQUEST |
Enter lisaManagerReferenceNumber in the correct format, like Z1234 |
400 (Bad Request) |
BAD_REQUEST |
Enter a real lisaManagerReferenceNumber |
401 (Unauthorized) |
UNAUTHORIZED |
Enter a real accountId |
404 (Not Found) |
INVESTOR_ACCOUNTID_NOT_FOUND |
You cannot reinstate this account because it was closed with a closure reason of transferred out |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_CLOSED |
You cannot reinstate this account because it was closed with a closure reason of cancellation |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_CANCELLED |
You cannot reinstate this account because it is already open |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_OPEN |
You cannot reinstate this account because the investor has failed a compliance check |
403 (Forbidden) |
INVESTOR_COMPLIANCE_CHECK_FAILED |
For error scenarios that are common across all APIs, and for error formats, see our reference guide.
Test data
Scenario | Request Payload | Response |
---|---|---|
Request with a valid payload, LISA Manager reference number and account ID lisaManagerReferenceNumber: Use your test user profile |
{ "accountId": "1234567890" } |
HTTP status: { "status": 200, "success": true, "data": { "message": "This account has been reinstated", "accountId": "1234567890" } } |
Request with a valid payload and account ID, but an invalid LISA Manager reference number lisaManagerReferenceNumber: A12345 |
{ "accountId": "1234567890" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter lisaManagerReferenceNumber in the correct format, like Z1234" } |
Request with a invalid payload lisaManagerReferenceNumber: Use your test user profile |
{ "accountId": "1234=5678" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Bad Request", "errors": [ { "code": "INVALID_FORMAT", "message": "Invalid format has been used", "path": "/accountId" } ] } |
Request for an account that is open or active lisaManagerReferenceNumber: Use your test user profile |
{ "accountId": "2000000403" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_OPEN", "message": "The account already has a status of Open" } |
Request for an account that is closed with a closure reason as transferred out lisaManagerReferenceNumber: Use your test user profile |
{ "accountId": "0000000403" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message": "You cannot reinstate this account because it was closed with a closure reason of transferred out" } |
Request for an account that is closed with a closure reason as cancelled lisaManagerReferenceNumber: Use your test user profile |
{ "accountId": "1000000403" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_CANCELLED", "message": "You cannot reinstate this account because it was closed with a closure reason of cancellation" } |
Request for an account that is closed with a closure reason as cancelled lisaManagerReferenceNumber: Use your test user profile |
{ "accountId": "3000000403" } |
HTTP status: { "code": "INVESTOR_COMPLIANCE_CHECK_FAILED", "message": "You cannot reinstate this account because the investor has failed a compliance check" } |
Request containing an account ID that does not exist lisaManagerReferenceNumber: Use your test user profile |
{ "accountId": "0000000404" } |
HTTP status: { "code": "INVESTOR_ACCOUNTID_NOT_FOUND", "message": "Enter a real accountId" } |
Close Section
/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}
Get account details
GET
Use an account ID to get account details.
Path parameters
Name | Description |
---|---|
lisaManagerReferenceNumber
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
accountId
string
required
|
The ID for the account. This will be generated by the LISA Manager and will only be unique when used in combination with lisaManagerReferenceNumber. Any special characters should be URL encoded.
Must conform to the regular expression
For example: |
Request headers
Name | Description |
---|---|
Accept
required
|
Specifies the response format and the version of the API to be used. application/vnd.hmrc.2.0+json
|
Content-Type
required
|
Specifies the format of the request body, which must be JSON. application/json
|
Authorization
required
|
An
OAuth 2.0 Bearer Token
with the read:lisa scope.
For example: Bearer bb7fed3fe10dd235a2ccda3d50fb
|
See also fraud prevention.
Responses
HTTP status 200 (OK)
{ "accountId": "1234567890", "investorId": "9876543210", "creationReason": "New", "firstSubscriptionDate": "2017-04-06", "accountStatus": "OPEN", "subscriptionStatus": "ACTIVE" }
{ "accountId": "1234567891", "investorId": "9876543210", "creationReason": "Transferred", "firstSubscriptionDate": "2017-04-06", "accountStatus": "OPEN", "subscriptionStatus": "AVAILABLE", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } }
Name | Description |
---|---|
investorId
string
required
|
The investor’s ID reference number.
Must conform to the regular expression
For example: |
accountId
string
required
|
The provider’s own unique reference number for the investor’s LISA account.
Must conform to the regular expression
For example: |
creationReason
string
required
|
The reason the account was created. Limited to the following possible values: New
Transferred
Current year funds transferred
Previous year funds transferred
Reinstated
|
firstSubscriptionDate
string
required
|
The date of the first deposit into the account. If this is a transfer, use the date of deposit into the account managed by the previous provider. This cannot be in the future. Date in the format
For example: |
accountStatus
string
required
|
The status of the account. Limited to the following possible values: OPEN
VOID
CLOSED
|
subscriptionStatus
string
required
|
The subscription status for the current tax year. Limited to the following possible values: AVAILABLE
ACTIVE
LOCKED
CANCELLED
VOID
|
accountClosureReason
string
optional
|
The reason the account was closed. Limited to the following possible values: All funds withdrawn
Cancellation
Transferred out
Voided
|
closureDate
string
optional
|
The date the account was closed. This cannot be in the future. Date in the format
For example: |
transferAccount
object
optional
|
Account transfer information. |
transferredFromAccountId
string
required
|
The previous provider's own unique reference number for the investor’s LISA account.
Must conform to the regular expression
For example: |
transferredFromLMRN
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
transferInDate
string
required
|
The date the account transferred from the previous provider to the new one. This cannot be in the future. Date in the format
For example: |
HTTP status 400 (Bad Request)
Enter lisaManagerReferenceNumber in the correct format, like Z1234
{ "code" : "BAD_REQUEST", "message" : "Enter lisaManagerReferenceNumber in the correct format, like Z1234" }
Enter accountId in the correct format, like ABC12345
{ "code" : "BAD_REQUEST", "message" : "Enter accountId in the correct format, like ABC12345" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 401 (Unauthorized)
Enter a real lisaManagerReferenceNumber
{ "code" : "UNAUTHORIZED", "message" : "Enter a real lisaManagerReferenceNumber" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 404 (Not Found)
Enter a real accountId
{ "code": "INVESTOR_ACCOUNTID_NOT_FOUND", "message": "Enter a real accountId" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
Error scenarios
Scenario | HTTP status | Code |
---|---|---|
Enter lisaManagerReferenceNumber in the correct format, like Z1234 |
400 (Bad Request) |
BAD_REQUEST |
Enter accountId in the correct format, like ABC12345 |
400 (Bad Request) |
BAD_REQUEST |
Enter a real lisaManagerReferenceNumber |
401 (Unauthorized) |
UNAUTHORIZED |
Enter a real accountId |
404 (Not Found) |
INVESTOR_ACCOUNTID_NOT_FOUND |
For error scenarios that are common across all APIs, and for error formats, see our reference guide.
Test data
Scenario | Response |
---|---|
Request with a valid LISA Manager reference number and account ID (open account)
lisaManagerReferenceNumber: Use your test user profile |
HTTP status: { "accountId": "1234567890", "investorId": "9876543210", "creationReason": "New", "firstSubscriptionDate": "2017-04-06", "accountStatus": "OPEN", "subscriptionStatus": "ACTIVE" } |
Request with a valid LISA Manager reference number and account ID (transferred account)
lisaManagerReferenceNumber: Use your test user profile |
HTTP status: { "accountId": "1234567891", "investorId": "9876543210", "creationReason": "Transferred", "firstSubscriptionDate": "2017-04-06", "accountStatus": "OPEN", "subscriptionStatus": "AVAILABLE", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } |
Request with a valid LISA Manager reference number and account ID (Current year funds transferred)
lisaManagerReferenceNumber: Use your test user profile |
HTTP status: { "accountId": "1234567892", "investorId": "9876543210", "creationReason": "Current year funds transferred", "firstSubscriptionDate": "2017-04-06", "accountStatus": "OPEN", "subscriptionStatus": "AVAILABLE", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } |
Request with a valid LISA Manager reference number and account ID (Previous year funds transferred)
lisaManagerReferenceNumber: Use your test user profile |
HTTP status: { "accountId": "1234567893", "investorId": "9876543210", "creationReason": "Previous year funds transferred", "firstSubscriptionDate": "2017-04-06", "accountStatus": "OPEN", "subscriptionStatus": "AVAILABLE", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } |
Request with a valid LISA Manager reference number and account ID (voided account)
lisaManagerReferenceNumber: Use your test user profile |
HTTP status: { "accountId": "1000000200", "investorId": "9876543210", "creationReason": "New", "firstSubscriptionDate": "2017-04-06", "accountStatus": "VOID", "subscriptionStatus": "VOID" } |
Request with a valid LISA Manager reference number and account ID (closed account)
lisaManagerReferenceNumber: Use your test user profile |
HTTP status: { "accountId": "2000000200", "investorId": "9876543210", "creationReason": "New", "firstSubscriptionDate": "2017-04-06", "accountStatus": "CLOSED", "subscriptionStatus": "VOID", "accountClosureReason": "All funds withdrawn", "closureDate": "2017-10-25" } |
Request with a valid account ID, but an invalid LISA Manager reference number
lisaManagerReferenceNumber: 123456 |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter lisaManagerReferenceNumber in the correct format, like Z1234" } |
Request with a valid LISA Manager reference number, but an invalid account ID
lisaManagerReferenceNumber: Use your test user profile |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter accountId in the correct format, like ABC12345" } |
Request containing an account ID that does not exist
lisaManagerReferenceNumber: Use your test user profile |
HTTP status: { "code": "INVESTOR_ACCOUNTID_NOT_FOUND", "message": "Enter a real accountId" } |
Request with an invalid 'Accept' header
lisaManagerReferenceNumber: Use your test user profile
|
HTTP status: { "code": "MATCHING_RESOURCE_NOT_FOUND", "message": "A resource with the name in the request can not be found in the API" } |
Close Section
/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/close-account
Close an existing LISA account
POST
Close an account and report the reason and date.
Path parameters
Name | Description |
---|---|
lisaManagerReferenceNumber
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
accountId
string
required
|
The ID for the account. This will be generated by the LISA Manager and will only be unique when used in combination with lisaManagerReferenceNumber. Any special characters should be URL encoded.
Must conform to the regular expression
For example: |
Request headers
Name | Description |
---|---|
Accept
required
|
Specifies the response format and the version of the API to be used. application/vnd.hmrc.2.0+json
|
Content-Type
required
|
Specifies the format of the request body, which must be JSON. application/json
|
Authorization
required
|
An
OAuth 2.0 Bearer Token
with the write:lisa scope.
For example: Bearer bb7fed3fe10dd235a2ccda3d50fb
|
See also fraud prevention.
Request
{ "accountClosureReason" : "All funds withdrawn", "closureDate" : "2017-05-20" }
{ "accountClosureReason" : "Cancellation", "closureDate" : "2017-05-20" }
Name | Description |
---|---|
accountClosureReason
string
required
|
The reason the account was closed. Limited to the following possible values: All funds withdrawn
Cancellation
|
closureDate
string
required
|
The date the account was closed. This cannot be in the future. Date in the format
For example: |
Responses
HTTP status 200 (OK)
{ "status": 200, "success": true, "data": { "message": "LISA account closed", "accountId": "1234567890" } }
Name | Description |
---|---|
status
number
required
|
The HTTP status of the result of the API call. Always 200. |
success
boolean
required
|
Whether the API call was successful or not. Always true. |
data
object
required
|
Response details. |
message
string
required
|
A human-readable explanation for the result of the API call. Limited to the following possible values: LISA account closed
|
accountId
string
required
|
The provider’s own unique reference number for the investor’s LISA account.
Must conform to the regular expression |
HTTP status 400 (Bad Request)
Bad Request
{ "code" : "BAD_REQUEST", "message" : "Bad Request" }
Enter lisaManagerReferenceNumber in the correct format, like Z1234
{ "code" : "BAD_REQUEST", "message" : "Enter lisaManagerReferenceNumber in the correct format, like Z1234" }
Enter accountId in the correct format, like ABC12345
{ "code" : "BAD_REQUEST", "message" : "Enter accountId in the correct format, like ABC12345" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 401 (Unauthorized)
Enter a real lisaManagerReferenceNumber
{ "code" : "UNAUTHORIZED", "message" : "Enter a real lisaManagerReferenceNumber" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 403 (Forbidden)
The LISA account is already void
{ "code": "INVESTOR_ACCOUNT_ALREADY_VOID", "message": "The LISA account is already void" }
The LISA account is already closed
{ "code": "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message": "The LISA account is already closed" }
You cannot close the account with cancellation as the reason because the cancellation period is over
{ "code": "CANCELLATION_PERIOD_EXCEEDED", "message": "You cannot close the account with cancellation as the reason because the cancellation period is over" }
You cannot close the account with all funds withdrawn as the reason because it is within the cancellation period
{ "code": "ACCOUNT_WITHIN_CANCELLATION_PERIOD", "message": "You cannot close the account with all funds withdrawn as the reason because it is within the cancellation period" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 404 (Not Found)
Enter a real accountId
{ "code": "INVESTOR_ACCOUNTID_NOT_FOUND", "message": "Enter a real accountId" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
Error scenarios
Scenario | HTTP status | Code |
---|---|---|
Bad Request |
400 (Bad Request) |
BAD_REQUEST |
Enter lisaManagerReferenceNumber in the correct format, like Z1234 |
400 (Bad Request) |
BAD_REQUEST |
Enter accountId in the correct format, like ABC12345 |
400 (Bad Request) |
BAD_REQUEST |
Enter a real lisaManagerReferenceNumber |
401 (Unauthorized) |
UNAUTHORIZED |
The LISA account is already void |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_VOID |
The LISA account is already closed |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_CLOSED |
You cannot close the account with cancellation as the reason because the cancellation period is over |
403 (Forbidden) |
CANCELLATION_PERIOD_EXCEEDED |
You cannot close the account with all funds withdrawn as the reason because it is within the cancellation period |
403 (Forbidden) |
ACCOUNT_WITHIN_CANCELLATION_PERIOD |
Enter a real accountId |
404 (Not Found) |
INVESTOR_ACCOUNTID_NOT_FOUND |
For error scenarios that are common across all APIs, and for error formats, see our reference guide.
Test data
Scenario | Request Payload | Response |
---|---|---|
Request with a valid payload, LISA Manager reference number and account ID lisaManagerReferenceNumber: Use your test user profile |
{ "accountClosureReason": "All funds withdrawn", "closureDate": "2017-05-20" } |
HTTP status: { "status": 200, "success": true, "data": { "message": "LISA account closed", "accountId": "1234567890" } } |
Request with a valid payload, LISA Manager reference number and account ID lisaManagerReferenceNumber: Use your test user profile |
{ "accountClosureReason": "Cancellation", "closureDate": "2017-05-20" } |
HTTP status: { "status": 200, "success": true, "data": { "message": "LISA account closed", "accountId": "1234567890" } } |
Request with a valid payload and account ID, but an invalid LISA Manager reference number lisaManagerReferenceNumber: A12345 |
{ "accountClosureReason": "All funds withdrawn", "closureDate": "2017-05-20" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter lisaManagerReferenceNumber in the correct format, like Z1234" } |
Request with a valid payload and LISA Manager reference number, but an invalid account ID
lisaManagerReferenceNumber: Use your test user profile
|
{ "accountClosureReason": "All funds withdrawn", "closureDate": "2017-05-20" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter accountId in the correct format, like ABC12345" } |
Request containing invalid and/or missing data lisaManagerReferenceNumber: Use your test user profile |
{ "closureDate": "3000" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Bad Request", "errors": [ { "code": "INVALID_DATE", "message": "Date is invalid", "path": "/closureDate" }, { "code": "MISSING_FIELD", "message": "This field is required", "path": "/accountClosureReason" } ] } |
Request containing a closure date before 6 April 2017 lisaManagerReferenceNumber: Use your test user profile |
{ "accountClosureReason": "All funds withdrawn", "closureDate": "2017-04-05" } |
HTTP status: { "code": "FORBIDDEN", "message": "There is a problem with the request data", "errors": [ { "code": "INVALID_DATE", "message": "The closureDate cannot be before 6 April 2017", "path": "/closureDate" } ] } |
Request for an account that has already been voided lisaManagerReferenceNumber: Use your test user profile |
{ "accountClosureReason": "All funds withdrawn", "closureDate": "2017-05-20" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_VOID", "message": "The LISA account is already void" } |
Request for an account that has already been closed lisaManagerReferenceNumber: Use your test user profile |
{ "accountClosureReason": "All funds withdrawn", "closureDate": "2017-05-20" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message": "The LISA account is already closed" } |
Request to close an account with cancellation as the reason when the cancellation period is over lisaManagerReferenceNumber: Use your test user profile |
{ "accountClosureReason": "Cancellation", "closureDate": "2017-05-20" } |
HTTP status: { "code": "CANCELLATION_PERIOD_EXCEEDED", "message": "You cannot close the account with cancellation as the reason because the cancellation period is over" } |
Request to close an account with all funds withdrawn as the reason and it is still within the cancellation period lisaManagerReferenceNumber: Use your test user profile |
{ "accountClosureReason": "All funds withdrawn", "closureDate": "2017-05-20" } |
HTTP status: { "code": "ACCOUNT_WITHIN_CANCELLATION_PERIOD", "message": "You cannot close the account with all funds withdrawn as the reason because it is within the cancellation period" } |
Request containing an account ID that does not exist lisaManagerReferenceNumber: Use your test user profile |
{ "accountClosureReason": "All funds withdrawn", "closureDate": "2017-05-20" } |
HTTP status: { "code": "INVESTOR_ACCOUNTID_NOT_FOUND", "message": "Enter a real accountId" } |
Request with an invalid 'Accept' header lisaManagerReferenceNumber: Use your test user profile |
{ "accountClosureReason": "All funds withdrawn", "closureDate": "2017-05-20" } |
HTTP status: { "code": "MATCHING_RESOURCE_NOT_FOUND", "message": "A resource with the name in the request can not be found in the API" } |
Close Section
/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/update-subscription
Modify date of first subscription of a LISA account
POST
Modify the date when the first deposit was paid after a LISA account was created.
Path parameters
Name | Description |
---|---|
lisaManagerReferenceNumber
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
accountId
string
required
|
The ID for the account. This will be generated by the LISA Manager and will only be unique when used in combination with lisaManagerReferenceNumber. Any special characters should be URL encoded.
Must conform to the regular expression
For example: |
Request headers
Name | Description |
---|---|
Accept
required
|
Specifies the response format and the version of the API to be used. application/vnd.hmrc.2.0+json
|
Content-Type
required
|
Specifies the format of the request body, which must be JSON. application/json
|
Authorization
required
|
An
OAuth 2.0 Bearer Token
with the write:lisa scope.
For example: Bearer bb7fed3fe10dd235a2ccda3d50fb
|
See also fraud prevention.
Request
{ "firstSubscriptionDate" : "2017-05-20" }
Name | Description |
---|---|
firstSubscriptionDate
string
required
|
The date of the first deposit into the account - if this is a transfer, use the date of deposit into the account managed by the previous provider. This cannot be in the future. Date in the format
For example: |
Responses
HTTP status 200 (OK)
{ "status": 200, "success": true, "data": { "code": "UPDATED", "message": "Successfully updated the firstSubscriptionDate for the LISA account", "accountId": "1234567890" } }
{ "status": 200, "success": true, "data": { "code": "UPDATED_AND_ACCOUNT_VOID", "message": "Successfully updated the firstSubscriptionDate for the LISA account and changed the account status to void because the investor has another account with an earlier firstSubscriptionDate", "accountId": "1234567891" } }
Name | Description |
---|---|
status
number
required
|
The HTTP status of the result of the API call. Always 200. |
success
boolean
required
|
Whether the API call was successful or not. Always true. |
data
object
required
|
Response details. |
code
string
required
|
A machine-readable code for the result of the API call. This is unique for each scenario. Limited to the following possible values: UPDATED
UPDATED_AND_ACCOUNT_VOID
|
message
string
required
|
A human-readable explanation for the result of the API call. Limited to the following possible values: Successfully updated the firstSubscriptionDate for the LISA account
Successfully updated the firstSubscriptionDate for the LISA account and changed the account status to void because the investor has another account with an earlier firstSubscriptionDate
|
accountId
string
required
|
The provider’s own unique reference number for the investor’s LISA account.
Must conform to the regular expression |
HTTP status 400 (Bad Request)
Bad Request
{ "code" : "BAD_REQUEST", "message" : "Bad Request" }
Enter lisaManagerReferenceNumber in the correct format, like Z1234
{ "code" : "BAD_REQUEST", "message" : "Enter lisaManagerReferenceNumber in the correct format, like Z1234" }
Enter accountId in the correct format, like ABC12345
{ "code" : "BAD_REQUEST", "message" : "Enter accountId in the correct format, like ABC12345" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 401 (Unauthorized)
Enter a real lisaManagerReferenceNumber
{ "code" : "UNAUTHORIZED", "message" : "Enter a real lisaManagerReferenceNumber" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 403 (Forbidden)
The LISA account is already closed
{ "code" : "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message" : "The LISA account is already closed" }
The LISA account is already cancelled
{ "code" : "INVESTOR_ACCOUNT_ALREADY_CANCELLED", "message" : "The LISA account is already cancelled" }
The LISA account is already void
{ "code" : "INVESTOR_ACCOUNT_ALREADY_VOID", "message" : "The LISA account is already void" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 404 (Not Found)
Enter a real accountId
{ "code": "INVESTOR_ACCOUNTID_NOT_FOUND", "message": "Enter a real accountId" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
Error scenarios
Scenario | HTTP status | Code |
---|---|---|
Bad Request |
400 (Bad Request) |
BAD_REQUEST |
Enter lisaManagerReferenceNumber in the correct format, like Z1234 |
400 (Bad Request) |
BAD_REQUEST |
Enter accountId in the correct format, like ABC12345 |
400 (Bad Request) |
BAD_REQUEST |
Enter a real lisaManagerReferenceNumber |
401 (Unauthorized) |
UNAUTHORIZED |
The LISA account is already closed |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_CLOSED |
The LISA account is already cancelled |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_CANCELLED |
The LISA account is already void |
403 (Forbidden) |
INVESTOR_ACCOUNT_ALREADY_VOID |
Enter a real accountId |
404 (Not Found) |
INVESTOR_ACCOUNTID_NOT_FOUND |
For error scenarios that are common across all APIs, and for error formats, see our reference guide.
Test data
Scenario | Request Payload | Response |
---|---|---|
Request with a valid payload, LISA Manager reference number and account ID lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "2017-05-20" |
HTTP status: { "status": 200, "success": true, "data": { "code": "UPDATED", "message": "Successfully updated the firstSubscriptionDate for the LISA account", "accountId": "1234567890" } } |
Request with a valid payload, LISA Manager reference number and account ID lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "2017-05-20" } |
HTTP status: { "status": 200, "success": true, "data": { "code": "UPDATED_AND_ACCOUNT_VOID", "message": "Successfully updated the firstSubscriptionDate for the LISA account and changed the account status to void because the investor has another account with an earlier firstSubscriptionDate", "accountId": "1234567891" } } |
Request with a valid payload and account ID, but an invalid LISA Manager reference number lisaManagerReferenceNumber: A12345 |
{ "firstSubscriptionDate": "2017-05-20" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter lisaManagerReferenceNumber in the correct format, like Z1234" } |
Request with a valid payload and LISA Manager reference number, but an invalid and account ID lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "2017-05-20" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Enter accountId in the correct format, like ABC12345" } |
Request containing invalid and/or missing data lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "3000-01-01" } |
HTTP status: { "code": "BAD_REQUEST", "message": "Bad Request", "errors": [ { "code": "INVALID_DATE", "message": "Date is invalid", "path": "/firstSubscriptionDate" } ] } |
Request containing a first subscription date before 6 April 2017 lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "2017-04-05" } |
HTTP status: { "code": "FORBIDDEN", "message": "There is a problem with the request data", "errors": [ { "code": "INVALID_DATE", "message": "The firstSubscriptionDate cannot be before 6 April 2017", "path": "/firstSubscriptionDate" } ] } |
Request for an account that has already been closed lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "2017-05-20" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message": "The LISA account is already closed" } |
Request for an account that has already been cancelled lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "2017-05-20" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_CANCELLED", "message": "The LISA account is already cancelled" } |
Request for an account that has already been void lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "2017-05-20" } |
HTTP status: { "code": "INVESTOR_ACCOUNT_ALREADY_VOID", "message": "The LISA account is already void" } |
Request containing an account ID that does not exist lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "2017-05-20" } |
HTTP status: { "code": "INVESTOR_ACCOUNTID_NOT_FOUND", "message": "Enter a real accountId" } |
Request with an invalid 'Accept' header lisaManagerReferenceNumber: Use your test user profile |
{ "firstSubscriptionDate": "2017-05-20" } |
HTTP status: { "code": "MATCHING_RESOURCE_NOT_FOUND", "message": "A resource with the name in the request can not be found in the API" } |
Close Section
Life events
Life events resources
/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts/{accountId}/events
Report a death or terminal illness
POST
Report to HMRC if an investor has been diagnosed with a terminal illness or died. You need to do this to get a lifeEventId before you can request a bonus payment from HMRC.
Path parameters
Name | Description |
---|---|
lisaManagerReferenceNumber
string
required
|
The reference given to the LISA provider when they applied for approval from HMRC.
Must conform to the regular expression
For example: |
accountId
string
required
|
The ID for the account. This will be generated by the LISA Manager and will only be unique when used in combination with lisaManagerReferenceNumber. Any special characters should be URL encoded.
Must conform to the regular expression
For example: |
Request headers
Name | Description |
---|---|
Accept
required
|
Specifies the response format and the version of the API to be used. application/vnd.hmrc.2.0+json
|
Content-Type
required
|
Specifies the format of the request body, which must be JSON. application/json
|
Authorization
required
|
An
OAuth 2.0 Bearer Token
with the write:lisa scope.
For example: Bearer bb7fed3fe10dd235a2ccda3d50fb
|
See also fraud prevention.
Request
{ "eventType": "LISA Investor Terminal Ill Health", "eventDate": "2017-04-20" }
Name | Description |
---|---|
eventType
string
required
|
The event that has occurred and triggers eligibility for the bonus payment. Limited to the following possible values: LISA Investor Death
LISA Investor Terminal Ill Health
|
eventDate
string
required
|
The date the life event occurred. This cannot be in the future. Date in the format
For example: |
Responses
HTTP status 201 (Created)
{ "status": 201, "success": true, "data": { "message": "Life event created", "lifeEventId": "1234567891" } }
Name | Description |
---|---|
status
number
required
|
The HTTP status of the result of the API call. Always 201. |
success
boolean
required
|
Whether the API call was successful or not. Always true. |
data
object
required
|
Response details. |
message
string
required
|
A human-readable explanation for the result of the API call. Limited to the following possible values: Life event created
|
lifeEventId
string
required
|
The life event’s ID reference number. You must store this ID as it is needed for other API calls.
Must conform to the regular expression |
HTTP status 400 (Bad Request)
Bad Request
{ "code" : "BAD_REQUEST", "message" : "Bad Request" }
Enter lisaManagerReferenceNumber in the correct format, like Z1234
{ "code" : "BAD_REQUEST", "message" : "Enter lisaManagerReferenceNumber in the correct format, like Z1234" }
Enter accountId in the correct format, like ABC12345
{ "code" : "BAD_REQUEST", "message" : "Enter accountId in the correct format, like ABC12345" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 401 (Unauthorized)
Enter a real lisaManagerReferenceNumber
{ "code" : "UNAUTHORIZED", "message" : "Enter a real lisaManagerReferenceNumber" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 403 (Forbidden)
The life event conflicts with a previous life event reported
{ "code" : "LIFE_EVENT_INAPPROPRIATE", "message" : "The life event conflicts with a previous life event reported" }
The LISA account is already closed
{ "code" : "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message" : "The LISA account is already closed" }
The LISA account is already cancelled
{ "code" : "INVESTOR_ACCOUNT_ALREADY_CANCELLED", "message" : "The LISA account is already cancelled" }
The LISA account is already void
{ "code" : "INVESTOR_ACCOUNT_ALREADY_VOID", "message" : "The LISA account is already void" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 404 (Not Found)
Enter a real accountId
{ "code": "INVESTOR_ACCOUNTID_NOT_FOUND", "message": "Enter a real accountId" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
ACCOUNT_WITHIN_CANCELLATION_PERIOD
BAD_REQUEST
BONUS_CLAIM_ALREADY_EXISTS
BONUS_CLAIM_ALREADY_SUPERSEDED
BONUS_CLAIM_ERROR
BONUS_CLAIM_TIMESCALES_EXCEEDED
BONUS_PAYMENT_TRANSACTION_NOT_FOUND
CANCELLATION_PERIOD_EXCEEDED
COMPLIANCE_ERROR_ACCOUNT_NOT_OPEN_LONG_ENOUGH
COMPLIANCE_ERROR_OTHER_PURCHASE_ON_RECORD
EXTENSION_ALREADY_EXISTS
FIRST_EXTENSION_ALREADY_APPROVED
FIRST_EXTENSION_NOT_APPROVED
FORBIDDEN
FUND_RELEASE_NOT_FOUND
FUND_RELEASE_SUPERSEDED
HELP_TO_BUY_NOT_APPLICABLE
INTERNAL_SERVER_ERROR
INVALID_DATA_PROVIDED
INVALID_PAYLOAD
INVESTOR_ACCOUNT_ALREADY_CANCELLED
INVESTOR_ACCOUNT_ALREADY_CLOSED
INVESTOR_ACCOUNT_ALREADY_EXISTS
INVESTOR_ACCOUNT_ALREADY_OPEN
INVESTOR_ACCOUNT_ALREADY_VOID
INVESTOR_ACCOUNT_CANNOT_BE_REINSTATED
INVESTOR_ACCOUNTID_NOT_FOUND
INVESTOR_ALREADY_EXISTS
INVESTOR_COMPLIANCE_CHECK_FAILED
INVESTOR_ELIGIBILITY_CHECK_FAILED
INVESTOR_NOT_FOUND
LIFE_EVENT_ALREADY_EXISTS
LIFE_EVENT_INAPPROPRIATE
LIFE_EVENT_NOT_FOUND
LIFE_EVENT_NOT_PROVIDED
NOT_FOUND
PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST
TRANSACTION_NOT_FOUND
TRANSFER_ACCOUNT_DATA_NOT_PROVIDED
TRANSFER_ACCOUNT_DATA_PROVIDED
SECOND_EXTENSION_ALREADY_APPROVED
SUPERSEDED_BONUS_CLAIM_AMOUNT_MISMATCH
SUPERSEDED_BONUS_REQUEST_OUTCOME_ERROR
SUPERSEDED_LIFE_EVENT_ALREADY_SUPERSEDED
SUPERSEDED_LIFE_EVENT_MISMATCH_ERROR
SUPERSEDED_WITHDRAWAL_CHARGE_ID_AMOUNT_MISMATCH
SUPERSEDED_WITHDRAWAL_CHARGE_OUTCOME_ERROR
WITHDRAWAL_CHARGE_ALREADY_EXISTS
WITHDRAWAL_CHARGE_ALREADY_SUPERSEDED
WITHDRAWAL_CHARGE_TIMESCALES_EXCEEDED
WITHDRAWAL_CHARGE_TRANSACTION_NOT_FOUND
WITHDRAWAL_REPORTING_ERROR
UNAUTHORIZED
INVALID_POSTAL_CODE
INVALID_NAME_OR_NUMBER
|
message
string
required
|
|
accountId
string
optional
|
|
lifeEventId
string
optional
|
|
transactionId
string
optional
|
|
HTTP status 409 (Conflict)
{ "code" : "LIFE_EVENT_ALREADY_EXISTS", "message" : "The investor’s life event has already been reported" }
Name | Description |
---|---|
code
string
required
|
Limited to the following possible values: ACCEPT_HEADER_INVALID
ACCOUNT_ERROR_NO_SUBSCRIPTIONS_THIS_TAX_YEAR
|