This version is in beta - expect some breaking changes.

Lifetime ISA API

Dates and amounts
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.

Skip to main content

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.

Authorisation

This endpoint is user-restricted and requires an Authorization header containing an OAuth 2.0 Bearer Token with the read:lisa scope.

Path parameters

Path parameters table
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 ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

Request headers

Request headers Table
Name Description
Accept
required

Specifies the response format and the version of the API to be used.

For example: 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"]}
  }
}

Response table
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 ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

_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"
}

Response table
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"
}

Response table
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

Error scenarios table
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: 400 (Bad Request)

{
  "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.

Authorisation

This endpoint is user-restricted and requires an Authorization header containing an OAuth 2.0 Bearer Token with the write:lisa scope.

Path parameters

Path parameters table
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 ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

Request headers

Request headers Table
Name Description
Accept
required

Specifies the response format and the version of the API to be used.

For example: application/vnd.hmrc.2.0+json
Content-Type
required

Specifies the format of the request body, which must be JSON.

For example: 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"
}

Request table
Name Description
investorNINO
string
required

The investor’s National Insurance number.

Must conform to the regular expression ^((?!(BG|GB|KN|NK|NT|TN|ZZ)|(D|F|I|Q|U|V)[A-Z]|[A-Z](D|F|I|O|Q|U|V))[A-Z]{2})[0-9]{6}[A-D]?$

For example: BC123456D

firstName
string
required

The investor’s first name.

Must conform to the regular expression ^[a-zA-Z &`\-\'^]{1,35}$

For example: FirstName

lastName
string
required

The investor’s last name.

Must conform to the regular expression ^[a-zA-Z &`\-\'^]{1,35}$

For example: LastName

dateOfBirth
string
required

The investor’s date of birth. This cannot be in the future.

Date in the format YYYY-MM-DD

For example: 1989-04-22

Responses

HTTP status 201 (Created)

{
  "status": 201,
  "success": true,
  "data": {
    "message": "Investor created",
    "investorId": "9876543210"
  }
}

Response table
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 ^\d{10}$

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"
}

Response table
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"
}

Response table
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."
}

Response table
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."
}

Response table
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

Error scenarios table
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: 201 (Created)

{
  "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: 400 (Bad Request)

{
  "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: 400 (Bad Request)

{
  "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: 403 (Forbidden)

{
  "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

Accept: application/vnd.hmrc.1.0

{
  "investorNINO": "AA123456A",
  "firstName": "First Name",
  "lastName": "Last Name",
  "dateOfBirth": "1985-03-25"
}

HTTP status: 404 (Not Found)

{
  "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: 409 (Conflict)

{
  "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.

Authorisation

This endpoint is user-restricted and requires an Authorization header containing an OAuth 2.0 Bearer Token with the write:lisa scope.

Path parameters

Path parameters table
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 ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

Request headers

Request headers Table
Name Description
Accept
required

Specifies the response format and the version of the API to be used.

For example: application/vnd.hmrc.2.0+json
Content-Type
required

Specifies the format of the request body, which must be JSON.

For example: 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"
  }
}

Request table
Name Description
investorId
string
required

The investor’s ID reference number.

Must conform to the regular expression ^\d{10}$

For example: 1234567890

accountId
string
required

The provider’s own unique reference number for the investor’s LISA account.

Must conform to the regular expression ^[a-zA-Z0-9 :/-]{1,20}$

For example: AB9876543210

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 YYYY-MM-DD

For example: 2017-04-20

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 ^[a-zA-Z0-9 :/-]{1,20}$

For example: AB9876543210

transferredFromLMRN
string
required

The reference given to the LISA provider when they applied for approval from HMRC.

Must conform to the regular expression ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

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 YYYY-MM-DD

For example: 2017-04-20

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"
  }
}

Response table
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 ^[a-zA-Z0-9 :/-]{1,20}$

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"
}

Response table
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"
}

Response table
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"
}

Response table
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"
}

Response table
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

Error scenarios table
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: 201 (Created)

{
  "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: 201 (Created)

{
  "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: 201 (Created)

{
  "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: 201 (Created)

{
  "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: 400 (Bad Request)

{
  "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: 400 (Bad Request)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "code": "INVESTOR_ACCOUNT_ALREADY_VOID",
  "message": "The LISA account is already void"
}

Request with an invalid 'Accept' header

lisaManagerReferenceNumber: Use your test user profile

Accept: application/vnd.hmrc.1.0

{
  "investorId": "9876543210",
  "creationReason": "New",
  "accountId": "1234567890",
  "firstSubscriptionDate": "2017-04-06"
}

HTTP status: 404 (Not Found)

{
  "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: 409 (Conflict)

{
  "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.

Authorisation

This endpoint is user-restricted and requires an Authorization header containing an OAuth 2.0 Bearer Token with the write:lisa scope.

Path parameters

Path parameters table
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 ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

Request headers

Request headers Table
Name Description
Accept
required

Specifies the response format and the version of the API to be used.

For example: application/vnd.hmrc.2.0+json
Content-Type
required

Specifies the format of the request body, which must be JSON.

For example: 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"
}

Request table
Name Description
accountId
string
required

The provider’s own unique reference number for the investor’s LISA account.

Must conform to the regular expression ^[a-zA-Z0-9 :/-]{1,20}$

For example: AB9876543210

Responses

HTTP status 200 (OK)

{
  "status": 200,
  "success": true,
  "data": {
    "message": "This account has been reinstated",
    "accountId": "8765432100"
  }
}

Response table
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 ^[a-zA-Z0-9 :/-]{1,20}$

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"
}

Response table
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"
}

Response table
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"
}

Response table
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"
}

Response table
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

Error scenarios table
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: 200 (OK)

{
  "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: 400 (Bad Request)

{
  "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: 400 (Bad Request)

  {
    "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 403 (Forbidden)

{
  "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: 404 (Not Found)

{
  "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.

Authorisation

This endpoint is user-restricted and requires an Authorization header containing an OAuth 2.0 Bearer Token with the read:lisa scope.

Path parameters

Path parameters table
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 ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

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 ^[a-zA-Z0-9 :/-]{1,20}$

For example: ABC12345

Request headers

Request headers Table
Name Description
Accept
required

Specifies the response format and the version of the API to be used.

For example: application/vnd.hmrc.2.0+json
Content-Type
required

Specifies the format of the request body, which must be JSON.

For example: 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"
  }
}

Response table
Name Description
investorId
string
required

The investor’s ID reference number.

Must conform to the regular expression ^\d{10}$

For example: 1234567890

accountId
string
required

The provider’s own unique reference number for the investor’s LISA account.

Must conform to the regular expression ^[a-zA-Z0-9 :/-]{1,20}$

For example: AB9876543210

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 YYYY-MM-DD

For example: 2017-04-20

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 YYYY-MM-DD

For example: 2017-04-20

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 ^[a-zA-Z0-9 :/-]{1,20}$

For example: AB9876543210

transferredFromLMRN
string
required

The reference given to the LISA provider when they applied for approval from HMRC.

Must conform to the regular expression ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

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 YYYY-MM-DD

For example: 2017-04-20

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"
}

Response table
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"
}

Response table
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"
}

Response table
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

Error scenarios table
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
accountId: 1234567890

HTTP status: 200 (OK)

{
  "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
accountId: 1234567891

HTTP status: 200 (OK)

{
  "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
accountId: 1234567892

HTTP status: 200 (OK)

{
  "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
accountId: 1234567893

HTTP status: 200 (OK)

{
  "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
accountId: 1000000200

HTTP status: 200 (OK)

{
  "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
accountId: 2000000200

HTTP status: 200 (OK)

{
  "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
accountId: 1234567890

HTTP status: 400 (Bad Request)

{
  "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
accountId: 1234%3D5678

HTTP status: 400 (Bad Request)

{
  "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
accountId: 0000000404

HTTP status: 404 (Not found)

{
  "code": "INVESTOR_ACCOUNTID_NOT_FOUND",
  "message": "Enter a real accountId"
}

Request with an invalid 'Accept' header

lisaManagerReferenceNumber: Use your test user profile
accountId: 1234567890

Accept: application/vnd.hmrc.1.0

HTTP status: 404 (Not Found)

{
  "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.

Authorisation

This endpoint is user-restricted and requires an Authorization header containing an OAuth 2.0 Bearer Token with the write:lisa scope.

Path parameters

Path parameters table
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 ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

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 ^[a-zA-Z0-9 :/-]{1,20}$

For example: ABC12345

Request headers

Request headers Table
Name Description
Accept
required

Specifies the response format and the version of the API to be used.

For example: application/vnd.hmrc.2.0+json
Content-Type
required

Specifies the format of the request body, which must be JSON.

For example: 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"
}

Request table
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 YYYY-MM-DD

For example: 2017-05-20

Responses

HTTP status 200 (OK)

{
  "status": 200,
  "success": true,
  "data": {
    "message": "LISA account closed",
    "accountId": "1234567890"
  }
}

Response table
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 ^[a-zA-Z0-9 :/-]{1,20}$

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"
}

Response table
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"
}

Response table
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"
}

Response table
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"
}

Response table
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

Error scenarios table
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
accountId: 1234567890

{
  "accountClosureReason": "All funds withdrawn",
  "closureDate": "2017-05-20"
}

HTTP status: 200 (OK)

{
  "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
accountId: 1234567890

{
  "accountClosureReason": "Cancellation",
  "closureDate": "2017-05-20"
}

HTTP status: 200 (OK)

{
  "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
accountId: 1234567890

{
  "accountClosureReason": "All funds withdrawn",
  "closureDate": "2017-05-20"
}

HTTP status: 400 (Bad Request)

{
  "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
accountId: 1234%3D5678

{
  "accountClosureReason": "All funds withdrawn",
  "closureDate": "2017-05-20"
}

HTTP status: 400 (Bad Request)

{
  "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
accountId: 1234567890

{
  "closureDate": "3000"
}

HTTP status: 400 (Bad Request)

{
  "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
accountId: 1234567890

{
  "accountClosureReason": "All funds withdrawn",
  "closureDate": "2017-04-05"
}

HTTP status: 403 (Forbidden)

{
  "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
accountId: A1234560

{
  "accountClosureReason": "All funds withdrawn",
  "closureDate": "2017-05-20"
}

HTTP status: 403 (Forbidden)

{
  "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
accountId: A1234561

{
  "accountClosureReason": "All funds withdrawn",
  "closureDate": "2017-05-20"
}

HTTP status: 403 (Forbidden)

{
  "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
accountId: A1234568

{
  "accountClosureReason": "Cancellation",
  "closureDate": "2017-05-20"
}

HTTP status: 403 (Forbidden)

{
  "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
accountId: A1234569

{
  "accountClosureReason": "All funds withdrawn",
  "closureDate": "2017-05-20"
}

HTTP status: 403 (Forbidden)

{
  "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
accountId: A1234562

{
  "accountClosureReason": "All funds withdrawn",
  "closureDate": "2017-05-20"
}

HTTP status: 404 (Not Found)

{
  "code": "INVESTOR_ACCOUNTID_NOT_FOUND",
  "message": "Enter a real accountId"
}

Request with an invalid 'Accept' header

lisaManagerReferenceNumber: Use your test user profile
accountId: 1234567890

Accept: application/vnd.hmrc.1.0

{
  "accountClosureReason": "All funds withdrawn",
  "closureDate": "2017-05-20"
}

HTTP status: 404 (Not Found)

{
  "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.

Authorisation

This endpoint is user-restricted and requires an Authorization header containing an OAuth 2.0 Bearer Token with the write:lisa scope.

Path parameters

Path parameters table
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 ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

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 ^[a-zA-Z0-9 :/-]{1,20}$

For example: ABC12345

Request headers

Request headers Table
Name Description
Accept
required

Specifies the response format and the version of the API to be used.

For example: application/vnd.hmrc.2.0+json
Content-Type
required

Specifies the format of the request body, which must be JSON.

For example: 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"
}

Request table
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 YYYY-MM-DD

For example: 2017-05-20

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"
  }
}

Response table
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 ^[a-zA-Z0-9 :/-]{1,20}$

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"
}

Response table
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"
}

Response table
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"
}

Response table
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"
}

Response table
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

Error scenarios table
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
accountId: 1234567890

{
  "firstSubscriptionDate": "2017-05-20"
}

HTTP status: 200 (OK)

  {
    "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
accountId: 1234567891

{
  "firstSubscriptionDate": "2017-05-20"
}

HTTP status: 200 (OK)

{
  "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
accountId: 1234567890

{
  "firstSubscriptionDate": "2017-05-20"
}

HTTP status: 400 (Bad Request)

{
  "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
accountId: 1234%3D5678

{
  "firstSubscriptionDate": "2017-05-20"
}

HTTP status: 400 (Bad Request)

{
  "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
accountId: 1234567890

{
  "firstSubscriptionDate": "3000-01-01"
}

HTTP status: 400 (Bad Request)

{
  "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
accountId: 1234567890

{
  "firstSubscriptionDate": "2017-04-05"
}

HTTP status: 403 (Forbidden)

{
  "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
accountId: 0000000901

{
  "firstSubscriptionDate": "2017-05-20"
}

HTTP status: 403 (Forbidden)

{
  "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
accountId: 0000000903

{
  "firstSubscriptionDate": "2017-05-20"
}

HTTP status: 403 (Forbidden)

{
  "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
accountId: 0000000902

{
  "firstSubscriptionDate": "2017-05-20"
}

HTTP status: 403 (Forbidden)

{
  "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
accountId: 0000000404

{
  "firstSubscriptionDate": "2017-05-20"
}

HTTP status: 404 (Not Found)

{
  "code": "INVESTOR_ACCOUNTID_NOT_FOUND",
  "message": "Enter a real accountId"
}

Request with an invalid 'Accept' header

lisaManagerReferenceNumber: Use your test user profile
accountId: 1234567890

Accept: application/vnd.hmrc.1.0

{
  "firstSubscriptionDate": "2017-05-20"
}

HTTP status: 404 (Not Found)

{
  "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.

Authorisation

This endpoint is user-restricted and requires an Authorization header containing an OAuth 2.0 Bearer Token with the write:lisa scope.

Path parameters

Path parameters table
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 ^Z([0-9]{4}|[0-9]{6})$

For example: Z1234

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 ^[a-zA-Z0-9 :/-]{1,20}$

For example: ABC12345

Request headers

Request headers Table
Name Description
Accept
required

Specifies the response format and the version of the API to be used.

For example: application/vnd.hmrc.2.0+json
Content-Type
required

Specifies the format of the request body, which must be JSON.

For example: 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"
}

Request table
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 YYYY-MM-DD

For example: 2017-05-20

Responses

HTTP status 201 (Created)

{
  "status": 201,
  "success": true,
  "data": {
    "message": "Life event created",
    "lifeEventId": "1234567891"
  }
}

Response table
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 ^\d{10}$

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"
}

Response table
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"
}

Response table
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"
}

Response table
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"
}

Response table
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"
}

Response table
Name Description