v1
latestOpenAPI 3.0.32026-07-131990818.5 KBLISA Accounts
Create or transfer a LISA account
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.
Test data
<table style="font-family:Roboto, sans-serif; font-size:14px;"> <col width="25%"> <col width="40%"> <col width="35%"> <thead> <tr> <th>Scenario</th> <th>Request Payload</th> <th>Response</th> </tr> </thead> <tbody> <tr> <td><p>Create request with a valid payload and LISA Manager reference number</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "9876543210", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">201 (Created)</code></p> <pre class="code--block"> { "status": 201, "success": true, "data": { "message": "Account created", "accountId": "1234567890" } } </pre> </td> </tr> <tr> <td><p>Transfer request with a valid payload and LISA Manager reference number</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "9876543210", "creationReason": "Transferred", "accountId": "1234567891", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } </pre> </td> <td><p>HTTP status: <code class="code--slim">201 (Created)</code></p> <pre class="code--block"> { "status": 201, "success": true, "data": { "message": "Account transferred", "accountId": "1234567891" } } </pre> </td> </tr> <tr> <td><p>Transfer current year request with a valid payload and LISA Manager reference number</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "9876543210", "creationReason": "Current year funds transferred", "accountId": "1234567892", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } </pre> </td> <td><p>HTTP status: <code class="code--slim">201 (Created)</code></p> <pre class="code--block"> { "status": 201, "success": true, "data": { "message": "Account transferred", "accountId": "1234567892" } } </pre> </td> </tr> <tr> <td><p>Transfer previous year request with a valid payload and LISA Manager reference number</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "9876543210", "creationReason": "Previous year funds transferred", "accountId": "1234567893", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } </pre> </td> <td><p>HTTP status: <code class="code--slim">201 (Created)</code></p> <pre class="code--block"> { "status": 201, "success": true, "data": { "message": "Account transferred", "accountId": "1234567893" } } </pre> </td> </tr> <tr> <td><p>Request with a valid payload and an invalid LISA Manager reference number</p><p class ="code--block">lisaManagerReferenceNumber: A123456</p></td> <td> <pre class="code--block"> { "investorId": "9876543210", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">400 (Bad Request)</code></p> <pre class="code--block"> { "code": "BAD_REQUEST", "message": "Enter lisaManagerReferenceNumber in the correct format, like Z1234" } </pre> </td> </tr> <tr> <td><p>Request containing invalid and/or missing data</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "9876543", "creationReason": "New", "firstSubscriptionDate": "2011" } </pre> </td> <td><p>HTTP status: <code class="code--slim">400 (Bad Request)</code></p> <pre class="code--block"> { "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" } ] } </pre> </td> </tr> <tr> <td><p>Request containing dates before 6 April 2017</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "9876543210", "creationReason": "Transferred", "accountId": "1234567890", "firstSubscriptionDate": "2016-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2016-04-06" } } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "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" } ] } </pre> </td> </tr> <tr> <td><p>Request containing investor details which cannot be found</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "1234567890", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "code": "INVESTOR_NOT_FOUND", "message": "The investor details given do not match with HMRC’s records" } </pre> </td> </tr> <tr> <td><p>Request containing an investor who is not eligible for a LISA account</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "1234567891", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "code": "INVESTOR_ELIGIBILITY_CHECK_FAILED", "message": "The investor is not eligible for a LISA account" } </pre> </td> </tr> <tr> <td><p>Request containing an investor who has not passed the compliance check</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "1234567892", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "code": "INVESTOR_COMPLIANCE_CHECK_FAILED", "message": "You cannot create or transfer a LISA account because the investor has failed a compliance check" } </pre> </td> </tr> <tr> <td><p>Transfer request containing transfer details which cannot be found in HMRC's records</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "1234567889", "creationReason": "Transferred", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "code": "PREVIOUS_INVESTOR_ACCOUNT_DOES_NOT_EXIST", "message": "The transferredFromAccountId and transferredFromLMRN given do not match an account on HMRC’s records" } </pre> </td> </tr> <tr> <td><p>Transfer request without transfer details</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "9876543210", "creationReason": "Transferred", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "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" } </pre> </td> </tr> <tr> <td><p>Create request containing transfer details</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "9876543210", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06", "transferAccount": { "transferredFromAccountId": "8765432100", "transferredFromLMRN": "Z654321", "transferInDate": "2017-04-06" } } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "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" } </pre> </td> </tr> <tr> <td><p>Request containing a LISA account which has already been closed</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "0000000403", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "code": "INVESTOR_ACCOUNT_ALREADY_CLOSED", "message": "The LISA account is already closed" } </pre> </td> </tr> <tr> <td><p>Request containing a LISA account which has already been cancelled</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "2000000403", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "code": "INVESTOR_ACCOUNT_ALREADY_CANCELLED", "message": "The LISA account is already cancelled" } </pre> </td> </tr> <tr> <td><p>Request containing a LISA account which has already been voided</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "1000000403", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">403 (Forbidden)</code></p> <pre class="code--block"> { "code": "INVESTOR_ACCOUNT_ALREADY_VOID", "message": "The LISA account is already void" } </pre> </td> </tr> <tr> <td><p>Request with an invalid 'Accept' header</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a><br><br>Accept: application/vnd.hmrc.1.0</p></td> <td> <pre class="code--block"> { "investorId": "9876543210", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">404 (Not Found)</code></p> <pre class="code--block"> { "code": "MATCHING_RESOURCE_NOT_FOUND", "message": "A resource with the name in the request can not be found in the API" } </pre> </td> </tr> <tr> <td><p>Request for a pre-existing account</p><p class ="code--block">lisaManagerReferenceNumber: <a href="/api-documentation/docs/api/service/lisa-api/2.0#testing">Use your test user profile</a></p></td> <td> <pre class="code--block"> { "investorId": "1234567899", "creationReason": "New", "accountId": "1234567890", "firstSubscriptionDate": "2017-04-06" } </pre> </td> <td><p>HTTP status: <code class="code--slim">409 (Conflict)</code></p> <pre class="code--block"> { "code": "INVESTOR_ACCOUNT_ALREADY_EXISTS", "message": "This investor already has a LISA account", "accountId": "1234567890" } </pre> </td> </tr> </tbody> </table>post/lifetime-isa/manager/{lisaManagerReferenceNumber}/accounts
Path parameters
lisaManagerReferenceNumberstring required
Example:Z1234
The reference given to the LISA provider when they applied for approval from HMRC.
Headers
Accept'application/vnd.hmrc.2.0+json' required
Specifies the response format and the version of the API to be used.
Content-Type'application/json' required
Specifies the format of the request body, which must be JSON.
Authorizationstring required
Example:Bearer bb7fed3fe10dd235a2ccda3d50fb
An OAuth 2.0 Bearer Token with appropriate scope.
Request body
Example request
{
"investorId": "1234567890",
"accountId": "AB9876543210",
"firstSubscriptionDate": "2017-04-20",
"transferAccount": {
"transferredFromAccountId": "AB9876543210",
"transferredFromLMRN": "Z1234",
"transferInDate": "2017-04-20"
}
}Response
Created