Download OpenAPI specification:Download
Welcome to WealthOS. Here you will find the comprehensive set of information you need to rapidly build rich digital wealth management features.
Before you start developing your features using the WealthOS API, please make sure that the following steps are complete:
Once you have set yourself up, you can add other users who will be able to collaborate with you.
The WealthOS API is a RESTful API that provides synchronous communication between your application and the WealthOS platform. For some calls where WealthOS communicates with a 3rd party application (e.g. KYC providers, Payment providers, Custodians) thus causing asynchronicity in communication, WealthOS also provides anebsocket API so you do not have to build a polling function to retrieve responses.
Your API URLs will be in the following formats:
RESTful API - https://{unique_tenancy_identifier}.sandbox.wealthos.cloud/tenant/{endpoint}/v1
E.g. https://acorn-gb.sandbox.wealthos.cloud/investors/v1
Websocket API - wss://{unique_tenancy_identifier}-ws.sandbox.wealthos.cloud/ws/
E.g. wss://acorn-gb-ws.sandbox.wealthos.cloud/ws/
The Websocket API is used by WealthOS to push asynchronous notifications to your application.
The wealth management organisation is granted a secret key that they must use in their API calls to interact with the WealthOS platform securely. This key must be stored securely only in your application server side code. It grants the highest level of access privileges to the WealthOS platform.
You may test your keys by calling on the following endpoints.
To test the secret key: Perform a GET call on ~/tenant/test/hello-world-be
In order to authenticate a Websocket API call, a query parameter x-token must be included within the URL.
x-token = your organisation’s secret key
Full URL must read as follows:
wss://{unique_tenancy_identifier}-ws.sandbox.wealthos.cloud/ws?x-token=<api_secret_key>
Some of the capabilities exposed via WealthOS tenant API needs to be idempotant (from the perspective of the system). For those requests an additional field request_id
is required to be sent with the request. The purpose of the request_id
is to give an unique ID for the request, so the system can differentiate requests. Advantage of the request_id
is the system can check whether the request have already reached the system. If a request (that should be idempotant) has already reached the system, the duplicate request will be rejected.
{
"status": 400,
"body": {
"message" : "duplicate request",
"status" : "COMPLETE|PROCESSING",
"response" : "<stringified original response body>"
}
}
The request_id
stored for idempotency checks will be deleted after 1 hour after which point a message with the same request_id
will be considered as a new request.
WealthOS maintains versioning for reference data entities stored within the platform which can be updated by the Wealth Manager BE. This is to ensure integrity of data in the event the same entity is being updated by multiple users via the API.
When requesting for an entity via the API the system will return the latest reference_version
which must be provided when the Wealth Manager BE is updating an entity. If the received reference_version
is different to the latest reference_version
in the system, the update will be rejected.
With each sucessful update done to the entity via the API the system will increment the reference_version
.
Currently there are limits to the number of requests that can be made to the WealthOS API. Following are these limits:
How do I see my API keys and how do I re-new the keys?
Is it mandatory to connect to the web socket
Web socket API is used by the WOS system to notify (push) asynchronous events to the Wealth Manager BE
Your Socket API URL would be wss://{socket api root}/ws
For example lets assume your env is gb
and tenant ID is acorn
. Then,
Socket API Root: acorn-gb-ws.sandbox.wealthos.cloud
Socket API URL: wss://acorn-gb-ws.sandbox.wealthos.cloud/ws
WealthOS requires to authenticate the web socket connection before allowing you to communicate with the system through the socket. For that purpose WealthOS socket API expects a query parameter x-token
to be attached with the socket URL.
x-token
is the ApiSecretKey given you by the WealthOS system
So the actual connection URL must look like
wss://acme-gb-ws.sandbox.wealthos.cloud/ws?x-token=<api_secret_key>
WealthOS socket api uses the concept of channels to group messages exchanged through web socket. A single socket connection may be used to handle one or many channels. Users are advised to implement a proper load balancing scheme.
Messages sent via the channels will be strictly ordered by the event generation time. However, there is no guarantee of ordering messages across channels.
A generic data message passed through the socket looks like,
{
type: "a string tag that identifies the message"
resend: "[optional] Indicates whether this is a resend message. Resends can be sent during explicit recovery servicing or due to server recovering from errors"
ch: "channel name"
payload: {
....
}
id: "unique ID for this message"
ts: "unique sequence number of message"
}
Note: The unique sequence number ts
is a strictly monotonically increasing timestamp (milliseconds elapsed since January 1, 1970, 00:00:00 UTC). This is unique per channel.
Sent from client to server to subscribe to a channel.
ch
attribute.req_id
attribute.{
"type": "subscription",
"ch": "channel to be subscribed",
"req_id": "request ID",
"from_ts": past sequence number / Timestamp value (milliseconds)
}
Server responds with a subscribe message which echoes the request. In addition, a status field indicates the subscription status (success or failed) and aneason field indicating the reason in the case of a failure.
{
"type": "subscription",
"ch": "subscribed channel",
"req_id": "request ID",
"status": "ACK"
}
{
"type": "subscription",
"ch": "subscribed channel",
"req_id": "request ID",
"status": "NACK",
"reason": "Error Message"
}
Sent from client to server to unsubscribe from a channel.
ch
attribute.req_id
attribute.{
"type": "unsubscription",
"ch": "channel to be unsubscribed",
"req_id": "request ID"
}
Server responds with a unsubscribe message which echoes the request. In addition, a status field indicates the unsubscription status (success or failed) and aneason field indicating the reason in the case of a failure.
{
"type": "unsubscription",
"ch": "channel to be unsubscribed",
"req_id": "request ID",
"status": "ACK"
}
{
"type": "unsubscription",
"ch": "channel to be unsubscribed",
"req_id": "request ID",
"status": "NACK",
"reason": "Error Message"
}
NOTE
The ws client must send a 'heart-beat' to the server every 60 seconds to keep the socket connection alive. Server will reply back with heat-beat (HB). Server will disconnect the ws connection if no HBs are recived for 3 HB intervals (i.e. between 2 to 3 minutes). Client should also disconnet if no data or hb message is received for 3 minutes
{
"type": "hb",
"ch": "system"
}
ⓘ A live socket connection will be automatically disconnected by the server after 2 hours
The ws client can send a past sequence number with the subscription to receive missed updates from the provided sequence number onwards.
{
"type": "subscription",
"ch": "channel to be subscribed",
"req_id": "request ID",
"from_ts": "past sequence number"
}
Server responds with a subscribe message which echoes the request. Then the ws client will receive past socket updates from the provided sequence number onwards.
{
"type": "subscription",
"ch": "subscribed channel",
"req_id": "request ID",
"status": "ACK",
"from_ts": 1625660972000
}
{
"type": "investor_status",
"ch": "investors",
"payload": {
"investor_id" : "<investor_id>",
"status" : "'fail' | 'success'",
"error" : "",
"event": "'kyc.started' | 'kyc.completed'"
},
"id": "fd232671-d47b-4ae2-a4c4-0a37258ffae5",
"ts": 1625660972222,
"resend": true
}
NOTE
This channel publishes investor related updates.
The investor channel publishes the following message types:
investor_status
: This message type is used to communicate updates to the KYC/AML status of an investorName | Type | Description | Accepted values |
---|---|---|---|
type | string | message type | investor_status |
ch | string | channel name | investors |
payload.investor_id | string | unique ID of investor | |
payload.status | string | fail , success |
|
payload.error | string | error text. Populated only on failure | |
payload.event | string | KYC status. Populated only if request is sucessful | kyc.started , kyc.completed |
{
"type": "investor_status",
"ch": "investors",
"payload": {
"investor_id" : "inv-XUT11265",
"status" : "success",
"error" : "",
"event": "kyc.completed"
},
"id": "fd232671-d47b-4ae2-a4c4-0a37258ffae5",
"ts": 1625660972222
}
This channel publishes payment status related updates
The payments channel publishes the following message types:
payment_update
: This message type is used to communicate updates to the status of the payment.bulk_payment_update
: This message type is used to communicate updates to the status of the bulk payment.Name | Type | Description | Accepted values |
---|---|---|---|
type | string | payment_update |
|
ch | string | payments |
|
payload.transaction_id | string | Unique ID of the payment | |
payload.pot_id | string | ID of the pot the payment is directed to | |
payload.reason | string | This field populated only when payment intent status is failed or cancelled, with reason for cancellation or failure | |
payload.status | string | pending_confirmation , processing , succeeded , cancelled , failed |
{
"type": "payment_update",
"ch": "payments",
"payload": {
"transaction_id" : "80784c92-8f9d-4150-b83c-dc",
"pot_id" : "pot-GYQ5423100",
"status" : "succeeded"
},
"id": "fd232671-d47b-4ae2-a4c4-0a37258ffae5",
"ts": 1625660972222
}
Name | Type | Description | Accepted values |
---|---|---|---|
type | string | bulk_payment_update |
|
ch | string | payments |
|
payload.batch_id | string | Unique ID of the bulk payment | |
payload.status | string | pending , payments_creation_failed , payments_created , payments_settlement_in_progress , payments_settled , payments_partially_settled , payments_settlement_failed , processing |
|
payload.erroneous_payments | object | Information of payments in the batch that cannot be accepted | |
payload.fields.payment_id | string | Unique ID of the individual payment | |
payload.fields.error | string | Reason for failure or rejection of the individual payment |
{
"type": "bulk_payment_update",
"ch": "payments",
"payload": {
"batch_id" : "BULKPAY-HSVY5840",
"status" : "payments_created"
},
"id": "fd232671-d47b-4ae2-a4c4-0a37258ffae5",
"ts": 1625660972222
}
This channel publishes various transaction related updates.
The transactions channel publishes the following message types:
transaction_initiated
: This message type is used to communicate a new transaction created within the system (e.g. a scheduled fee deduction, individual transactions of a portfolio rebalance etc.)transaction_updated
: This message type is used to communicate an update to a transaction.external_transaction_added
: This message type is used to communicate a new transaction created in the system via an external party (e.g. transaction created by a custodian).transaction_failed
: This message type is used to notify the user of a transaction failure.For further information regarding the description of fields in the payload, mandatory fields and conditionally returned fields etc. please refer GET pending & past transactions of a pot.
Name | Type | Description | Accepted values |
---|---|---|---|
type | string | transaction_updated ,transaction_initiated ,external_transaction_added |
|
ch | string | transactions |
|
payload.transaction_id | string | Unique ID of the transaction | |
payload.parent_transaction_id | string | Parent Transaction ID | |
payload.external_transaction_reference | string | External Transaction Reference | |
payload.pot_id | string | Pot ID of the transaction | |
payload.investment_product_id | string | Invetment Prouct ID or cash | |
payload.client_order_id | string | (Optional) Order identifier assigned by the wealth manager | |
payload.primary_transaction_type | string | Primary Transaction Type | Fees ,Buy ,Sell ,Transfers ,Income ,Tax ,Contribution ,Withdrawal ,Corporate actions |
payload.sub_transaction_type | string | Sub Transaction Type | Dividend Reinvestment ,Interest Reinvestment ,Reinvestment ,Buy ,Sell Cancel ,Switch Buy ,Sell ,Buy Cancel ,Switch Sell ,Lump sum , Lump sum - non relievable , Employer contribution ,Employee contribution ,Regular contribution , Regular contribution - non relievable , Regular contribution - Employer , Payment in for fees ,Internal Transfer - Cash In ,Internal Transfer - Stock In ,Internal Transfer - Cash Out ,Internal Transfer - Stock Out ,Stock Transfer In ,Cash Transfer In ,Stock Transfer Out ,Cash Transfer Out ,Commission ,Ancillary fee ,Management fee ,Fee credit ,Fee rebate ,Advisor ongoing fee ,One-off advisor fee ,Commission rebate ,Custody fees ,Dividends ,Distributions ,Interest ,Other income ,Takeovers, Mergers & Name Changes - Create ,Takeovers, Mergers & Name Changes - Extinguish ,Rights Expiry ,Rights Exercise ,Warrant Exercise ,Fixed Income Maturity - Receive Capital , Fixed Income Maturity - Extinguish Bond Units ,Fund Merger - Create New Fund Units ,Fund Merger - Extinguish Old Fund Units ,Rights Issue ,Stock Dividend ,Spin-Off ,Warrant Issue ,Stock Split ,Fee Tax ,Tax Relief ,GST ,HST ,PST ,QST ,Withholding Tax ,PAYE Tax ,Non-resident Tax ,Penalty ,Contribution Refund ,Income Withdrawal ,Reversal ,Withdrawal ,Miscellaneous Corporate Action Exercise - Buy ,Miscellaneous Corporate Action Exercise - Sell , Contribution Bonus , Fee Sell |
payload.type | string | Type of the transaction | pending ,archived |
payload.sub_type | string | Sub type of the transaction | instructed ,confirmed ,priced ,rejected ,settled ,cancelled , scheduled , ready_to_submit , submitted , failed |
payload.currency | string | Currency of the pot | |
payload.direction | string | Direction of the transaction | in ,out |
payload.transaction_quantity | string | Quantity of the investment product transaction. This will be empty for cash transactions | |
payload.transaction_value | string | Value of the transaction | |
payload.execution_price | string | Executed price of the buy, sell transaction | |
payload.trade_date | date | Will indicate the date where this transaction was effected | |
payload.settlement_date | date | Intendent settlement date of the pending transaction or actual the settled day of the transaction | |
payload.created_at | time | Transaction created date | |
payload.updated_at | time | Transaction last updated date | |
payload.additional_external_details | Object | Additional external details of the transaction, This may be populated in reconciliation process | |
payload.origin | string | Origin of the transaction | api , admin_ui , file_upload , system |
payload.source_id | string | transactions created for payments intents - employer contributions for SIPP Accumulation Products | |
payload.reason | string | This field populated only when status is failed or canceled, with reason for cancellation or failure |
{
"type": "transaction_updated",
"ch": "transactions",
"object": {
"pot_id":"pot-GYQ5423100",
"transaction_id":"80784c92-8f9d-4150-b83c-dc",
"investment_product_id":"GB0000495209",
"primary_transaction_type":"Buy",
"sub_transaction_type":"Buy",
"type":"archived",
"sub_type":"settled",
"currency":"GBP",
"direction":"in",
"transaction_quantity":"20",
"transaction_value":"129.69",
"execution_price":"6.45",
"trade_date":"2021-08-06",
"settlement_date":"2021-08-06",
"origin": "admin_ui",
"source_id": "cem-ASP43560",
"created_at":"2021-08-06T09:25:44.251Z",
"updated_at":"2021-08-06T09:27:18.003Z",
"external_transaction_reference": "117709248888833"
},
"id":"8e754ef9-5d63-4c2a-9f43-ac42f588e122",
"ts":1628244517263
}
This channel publishes holdings related updates.
The holdings channel publishes the following message types:
holding_updated
: This message type is used to communicate an update to the units of an investment product holding, or value of a cash holding.For further information regarding the description of fields in the payload, mandatory fields and conditionally returned fields etc. please refer GET current holdings of a pot.
Name | Type | Description | Accepted values |
---|---|---|---|
type | string | holding_updated |
|
ch | string | holdings |
|
payload.pot_id | string | ID of the pot the payment is directed to | |
payload.investment_product_id | string | Investment product ID or 'cash' for cash | |
payload.currency | string | Currency of the pot | |
payload.total_quantity | string | Total Quantity of the investment product holding. This value is empty for cash holdings | |
payload.free_quantity | string | Free Quantity of the investment product holding. This value is empty for cash holdings | |
payload.locked_quantity | string | Locked Quantity of the investment product holding. This value is empty for cash holdings | |
payload.total_value | string | Total Value of the holding | |
payload.free_value | string | Free Value of the holding | |
payload.locked_value | string | Locked Value of the holding | |
payload.investment_product_name | string | Name of the investment product | |
payload.price | string | Price of the holding | |
payload.price_date | time | The time which the price is updated | |
payload.average_book_cost | string | Per-unit book cost for a particular holding (applicable for investment product holdings only) | |
payload.cost_of_holding | string | Total book cost for the total units currently held within the pot (applicable for investment product holdings only) | |
payload.settled_cash_position | string | Settled cash amount within the pot (applicable for cash holdings only) | |
payload.additional_external_details | Object | Additional external details of the holding, This may be populated in reconciliation process |
{
"type": "holding_updated",
"ch": "holdings",
"payload": {
"pot_id":"pot-GYQ5423100",
"investment_product_id":"GB0000495209",
"currency":"GBP",
"total_quantity":"20",
"free_quantity":"20",
"locked_quantity":"0",
"total_value":"137.358",
"free_value":"137.358",
"locked_value":"0",
"investment_product_name":"BlackRock European Dynamic Fund A Accumulation",
"price":"6.8679",
"price_date":"2021-08-06T09:27:37.512Z",
"average_book_cost": "5",
"cost_of_holding": "100"
},
"id":"8e754ef9-5d63-4c2a-9f43-ac42f588e122",
"ts":1628244517263
}
The reconciliations channel publishes the following message types:
investor_summary
: This message type is used to communicate a summary of investor reconciliation process.investor_mismatch
: This message type is used to communicate all mismatches in each investor reconciliations process.pot_summary
: This message type is used to communicate a summary of pot reconciliation process.pot_mismatch
: This message type is used to communicate all mismatches in each pot reconciliations process.transaction_summary
: This message type is used to communicate a summary of transaction reconciliation process.transaction_mismatch
: This message type is used to communicate mismatches in each transaction reconciliations process.transaction_ingestion_failure
: This message type is used to communicate ingestion failures in each transaction reconciliations process.transaction_ignored
: This message type is used to communicate all ignored transactions in each transaction reconciliations process.holdings_summary
: This message type is used to communicate a summary of holding reconciliation process.holdings_mismatch
: This message type is used to communicate all mismatches in each holding reconciliations process.Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | investor_summary |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.job_name Required |
string | type of reconciliations | |
payload.date Required |
string | date and time | |
payload.total_records Required |
number | total record count | |
payload.mismatched_records Required |
number | mismatched record count | |
payload.incoming_records Required |
number | incoming record count | |
payload.no_incoming_records Required |
number | no incoming record count |
{
"type":"investor_summary",
"ch":"reconciliations",
"payload":
{
"job_id":"hydrangea-dc-210806-1628240463777",
"job_name":"Investor Details",
"date":"2021-08-09T06:49:34.227Z",
"total_records":1,
"mismatched_records":1,
"incoming_records": 0,
"no_incoming_records": 0
},
"id":"e1c7797f-f590-4490-a452-01894b33d014",
"ts":1628244517823
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | investor_mismatch |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.date Required |
string | date and time | |
payload.record_id Required |
string | unique ID of a record | |
payload.investor_id | string | unique ID of the investor being reconciled (if available) | |
payload.record_status Required |
string | record status | reconciled , unreconciled , not_found , key_unavailable |
payload.fields | object | mismatched fields with field, incoming_value, available_value and status | |
payload.fields.field Required |
string | Name of the fields | |
payload.fields.incoming_value | string | Incoming value for the field | |
payload.fields.available_value | string | Available value for the field | |
payload.fields.status | string | status of the field | mismatched , matched |
{
"type":"investor_mismatch",
"ch":"reconciliations",
"payload":
{
"job_id":"hydrangea-dc-210806-1628240463777",
"date":"2021-08-09T06:49:34.227Z",
"record_id":"F180010Q",
"record_status":"not_found",
"fields":
[
{"field":"first_name","incoming_value":"David","available_value": "Dane", "status":"mismatched"},
{"field":"last_name","incoming_value":"Brown", "available_value": "Black", "status":"mismatched"}
]
},
"id":"8e754ef9-5d63-4c2a-9f43-ac42f588e122",
"ts":1628244517263
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | pot_summary |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.job_name Required |
string | type of reconciliations | |
payload.date Required |
string | date and time | |
payload.total_records Required |
number | total record count | |
payload.mismatched_records Required |
number | mismatched record count | |
payload.incoming_records Required |
number | incoming record count | |
payload.no_incoming_records Required |
number | no incoming record count |
{
"type": "pot_summary",
"ch": "reconciliations",
"payload": {
"job_id": "dev14_recon_pot_200",
"job_name": "Pot Details",
"date": "2021-09-02T10:07:40.578Z",
"total_records": 91,
"mismatched_records": 41,
"incoming_records": 0,
"no_incoming_records": 0
},
"id": "c574d276-de4b-4014-80f3-80e54d31d3da",
"ts": 1630577304480
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | pot_mismatch |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.date Required |
string | date and time | |
payload.record_id Required |
string | unique ID of a record | |
payload.pot_id | string | unique ID of the pot being reconciled (if available) | |
payload.record_status Required |
string | record status | reconciled , unreconciled , not_found , key_unavailable |
payload.fields | object | mismatched fields | |
payload.fields.field Required |
string | Name of the fields | |
payload.fields.incoming_value | string | Incoming value for the field | |
payload.fields.available_value | string | Available value for the field | |
payload.fields.status | string | status of the field | matched , mismatched |
{
"type": "pot_mismatch",
"ch": "reconciliations",
"payload": {
"job_id": "dev14_recon_pot_200",
"date": "2021-09-02T10:07:40.578Z",
"record_id": "53_RWM",
"record_status": "not_found",
"fields": [
{"field": "custodian_account_reference","incoming_value": "F3A0023Q","status": "mismatched"},
{"field": "pot_currency","incoming_value": "GBP","status": "mismatched"}
]
},
"id": "7722f072-4e8d-48ec-ad4f-4543e64fb536",
"ts": 1630577304156
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | transaction_summary |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.job_name Required |
string | Name of the reconciliations job | |
payload.date Required |
string | date and time | |
payload.total_records Required |
number | total record count | |
payload.mismatched_records Required |
number | mismatched record count | |
payload.updated_records Required |
number | updated record count | |
payload.unable_to_ingest Required |
number | ingestion failed record count | |
payload.ignored_records Required |
number | ignored record count | |
payload.incoming_records Required |
number | incoming record count | |
payload.no_incoming_records Required |
number | no incoming record count |
{
"type": "transaction_summary",
"ch": "reconciliations",
"payload": {
"job_id": "dev10_cat_inv_178",
"job_name": "Transaction Details",
"date": "2021-08-18T09:08:27.171Z",
"total_records": 8,
"mismatched_records": 1,
"updated_records": 4,
"unable_to_ingest": 1,
"ignored_records": 1,
"incoming_records": 7,
"no_incoming_records": 1
},
"id": "7d3614c7-3f63-4930-88df-062c5059047d",
"ts": 1629277726128
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | transaction_mismatch |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.date Required |
string | date and time | |
payload.record_id Required |
string | unique ID of a record | |
payload.external_transaction_reference | string | External transaction reference (if available) | |
payload.transaction_ids | object | Transaction IDs of mismatched records (if available) | |
payload.pot_id | string | Pot ID of the transaction (if available) | |
payload.record_status Required |
string | record status | unreconciled ,not_found ,key_unavailable , multiple_found , no_incoming_record , updated |
payload.fields | object | mismatched fields | |
payload.fields.field Required |
string | Name of the fields | |
payload.fields.incoming_value | string | Incoming value for the field | |
payload.fields.available_value | string | Available value for the field | |
payload.fields.status | string | status of the field | matched , mismatched , key_value_missing |
{
"type":"transaction_mismatch",
"ch":"reconciliations",
"payload":{"job_id":"peony-transaction_reconciliations-1630493472846",
"date":"2021-09-01T10:51:18.577Z",
"record_id":"2_RWM",
"external_transaction_reference":"117709248888833",
"transaction_ids": [ "80784c92-8f9d-4150-b83c-dc" ],
"pot_id":"pot-GYQ5423100",
"record_status":"unreconciled",
"fields":[
{
"field":"primary_transaction_type",
"incoming_value":"Buy",
"available_value":"Corporate actions",
"status":"mismatched"
},
{
"field":"sub_transaction_type",
"incoming_value":"Buy",
"available_value":"Stock Split",
"status":"mismatched"
},
{
"field":"execution_price",
"incoming_value":null,
"status":"mismatched"
},
{
"field":"trade_date",
"incoming_value":"2021-08-31",
"status":"mismatched"
},
{
"field":"settlement_date",
"incoming_value":"2021-09-02",
"status":"mismatched"
}
]
},
"id":"0b3aa3b1-b14c-44ee-ac47-656149645ba9",
"ts":1630493491292
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | transaction_ingestion_failure |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.date Required |
string | date and time | |
payload.record_id Required |
string | unique ID of a record | |
payload.external_transaction_reference | string | External transaction reference | |
payload.pot_id | string | Pot ID of the transaction (if available) | |
payload.record_status Required |
string | record status | unable_to_ingest |
payload.fields Required |
object | fields | |
payload.fields.field Required |
string | Name of the fields | |
payload.fields.incoming_value Required |
string | Incoming value for the field | |
payload.fields.status Required |
string | status of the field | unrecognised , key_value_missing |
{
"type": "transaction_ingestion_failure",
"ch": "reconciliations",
"payload": {
"job_id": "peony-transaction_reconciliations-1630657432163",
"date": "2021-09-03T08:23:54.373Z",
"record_id": "3_RWM",
"external_transaction_reference": "331738147053699",
"record_status": "unable_to_ingest",
"fields": [
{
"field": "custodian_account_reference",
"incoming_value": "F3A0000A",
"status": "unrecognised"
},
{
"field": "pot_currency",
"incoming_value": "GBP",
"status": "unrecognised"
},
{
"field": "investment_product_id",
"incoming_value": "CA1358251",
"status": "unrecognised"
}
]
},
"id": "718f9758-e2b0-4a07-9cc6-8a6cb5aae419",
"ts": 1630657439928
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | transaction_ignored |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.date Required |
string | date and time | |
payload.record_id Required |
string | unique ID of a record | |
payload.record_status Required |
string | record status | ignored |
{
"type": "transaction_ignored",
"ch": "reconciliations",
"payload": {
"job_id": "peony-transaction_reconciliations-1630657867836",
"date": "2021-09-03T08:31:08.191Z",
"record_id": "3_RWM",
"record_status": "ignored"
},
"id": "8a82df6b-d34a-4eb9-91a1-b98cd18aa4e2",
"ts": 1630657913417
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | holdings_summary |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.job_name Required |
string | type of reconciliations | |
payload.date Required |
string | date and time | |
payload.total_records Required |
number | total record count | |
payload.mismatched_records Required |
number | mismatched record count | |
payload.incoming_records Required |
number | incoming record count | |
payload.no_incoming_records Required |
number | no incoming record count |
{
"type":"holdings_summary",
"ch":"reconciliations",
"payload":
{
"job_id":"cat-holding_reconciliations-1631619829926",
"job_name":"Holdings Details",
"date":"2021-08-09T06:49:34.227Z",
"total_records":10,
"mismatched_records":5,
"incoming_records": 0,
"no_incoming_records": 0
},
"id":"e1c7797f-f590-4490-a452-01894b33d014",
"ts":1628244517823
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | holding_mismatch |
|
ch Required |
string | reconciliations |
|
payload.job_id Required |
string | Unique ID of reconciliation process | |
payload.date Required |
string | date and time | |
payload.record_id Required |
string | unique ID of a record | |
payload.pot_id | string | unique ID of the pot being reconciled (if available) | |
payload.investment_product_id | string | unique ID of the investment product being reconciled (if available) | |
payload.record_status Required |
string | record status | reconciled , unreconciled , not_found , key_unavailable |
payload.fields | object | mismatched fields with field, incoming_value, available_value and status | |
payload.fields.field Required |
string | Name of the fields | |
payload.fields.incoming_value | string | Incoming value for the field | |
payload.fields.available_value | string | Available value for the field | |
payload.fields.status | string | status of the field | mismatched , matched , updated |
{
"type":"holding_mismatch",
"ch":"reconciliations",
"payload":
{
"job_id":"cat-holding_reconciliations-1631619829926",
"date":"2021-08-09T06:49:34.227Z",
"record_id":"RWM_9_sr",
"pot_id": "pot-GYQ5423100",
"investment_product_id": "pqr",
"record_status":"not_found",
"fields":
[
{"field":"custodian_account_reference","incoming_value":"F180010Q","status":"mismatched"},
{"field":"free_value","incoming_value":0, "status":"mismatched"}
]
},
"id":"8e754ef9-5d63-4c2a-9f43-ac42f588e122",
"ts":1628244517263
}
This channel publishes general notifications.
The notifications channel publishes the following message types:
recurring_contribution_activated
: This message type is used to communicate activation of recurring contribution requestsrecurring_contribution_cancelled
: This message type is used to communicate cancellation of recurring contribution requestsrecurring_contribution_rejected
: This message type is used to communicate rejection of recurring contribution requestsrecurring_contribution_authorization_url_received
: This message type is used to communicate that the authorization url is received for the recurring contributionrecurring_contribution_resumed
: This message type is used to communicate resuming of recurring contribution requestsrecurring_contribution_finished
: This message type is used to communicate completion of recurring contribution requestsrecurring_contribution_updated
: This message type is used to communicate updates (mandate transferr, mandate replacement) of recurring contribution requestsHMRC_LISA_investor_creation_failed
: This message type is used to communicate rejection of HMRC LISA investor creation requestsHMRC_LISA_account_creation_failed
: This message type is used to communicate rejection of HMRC LISA investor account creation requestsHMRC_LISA_account_creation_successful
: This message type is used to communicate completion of HMRC LISA investor and account creation requestsName | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | recurring_contribution_activated |
|
ch Required |
string | notifications |
|
payload.status Required |
string | Status of the recurring contribution | |
payload.contribution_name Required |
string | User given identifier for the contribution | |
payload.pot_id Required |
string | Pot ID of investor to direct the payment | |
payload.investor_id Required |
string | Investor ID of the investor making the contribution | |
payload.amount Required |
string | Amount as a numeral string with two decimal points | |
payload.sub_transaction_type Required |
string | Sub transaction type for recurring contribution | Regular contribution , Regular contribution - non relievable , Regular contribution - Employer |
payload.currency Required |
string | Currency configured for the pot | |
payload.payment_type Required |
string | Type of payment | |
payload.service_provider Required |
string | Service provider managing the recurring payment subscription | |
payload.purpose Required |
string | Purpose of the recurring contribution | cash , invest |
payload.source_id | string | Only for payments intents for employer contributions made towards SIPP Accumulation Products | |
payload.payment_schedule Required |
object | Parameters based on payment schedules | |
payload.payment_schedule.interval_unit Required |
string | Repeating interval unit of recurring payment | monthly |
payload.payment_schedule.interval Required |
number | Repeating interval of recurring payment | |
payload.payment_schedule.date | number | Date the payment is expected to be triggered if frequency is monthly | |
payload.payment_schedule.start_date Required |
string | Date to initiate the recurring payments | |
payload.payment_schedule.end_date | string | Date to conclude the recurring payments, if count is not provided | |
payload.payment_schedule.count | number | No of recurring payments to trigger before concluding the payments, if an end date is not provided | |
payload.contribution_id Required |
string | System generated unique ID | |
payload.service_provider_params Required |
object | Parameters based on service provider | |
payload.service_provider_params.status Required |
string | Status transitions depend on the service provider | |
payload.service_provider_params.reason Required |
string | Reason for disabling/cancelling the contribution |
{
"type": "recurring_contribution_activated",
"ch": "notifications",
"payload": {
"status": "Active",
"contribution_name": "GIA contribution-1",
"pot_id": "pot-XWL3805770",
"investor_id": "inv-QRY29279",
"amount": "1000060.12",
"sub_transaction_type": "Regular contribution",
"currency": "GBP",
"payment_type": "direct_debit",
"service_provider": "gocardless",
"purpose": "cash",
"payment_schedule": {
"interval_unit": "monthly",
"interval": 7,
"date": 1,
"start_date": "2024-04-02T00:00:00.000Z",
"end_date": "2024-04-03T00:00:00.000Z"
},
"contribution_id": "RCB-GC-JSJ6709",
"service_provider_params": {
"status": "Subscription created",
"authorization_reference" : "EV0159P7DZB2P6",
"contribution_reference" : "BRQ00030E3DXA4P",
"request_id" : "BRF00014ZXYN5V4F05M90GZEQCARE84K",
"authorization_url": "https://authexample.gocardless-sandbox.com"
}
},
"id": "952c7d0a-ecc6-4538-86f4-ad021f6855d0",
"ts": 1683086449658,
"resend": true
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | recurring_contribution_cancelled |
|
ch Required |
string | notifications |
|
payload.status Required |
string | Status of the recurring contribution | |
payload.contribution_name Required |
string | User given identifier for the contribution | |
payload.pot_id Required |
string | Pot ID of investor to direct the payment | |
payload.investor_id Required |
string | Investor ID of the investor making the contribution | |
payload.amount Required |
string | Amount as a numeral string with two decimal points | |
payload.sub_transaction_type Required |
string | Sub transaction type for recurring contribution | Regular contribution , Regular contribution - non relievable , Regular contribution - Employer |
payload.currency Required |
string | Currency configured for the pot | |
payload.payment_type Required |
string | Type of payment | |
payload.service_provider Required |
string | Service provider managing the recurring payment subscription | |
payload.purpose Required |
string | Purpose of the recurring contribution | cash , invest |
payload.source_id | string | Only for payments intents for employer contributions made towards SIPP Accumulation Products | |
payload.payment_schedule Required |
object | Parameters based on payment schedules | |
payload.payment_schedule.interval_unit Required |
string | Repeating interval unit of recurring payment | monthly |
payload.payment_schedule.interval Required |
number | Repeating interval of recurring payment | |
payload.payment_schedule.date | number | Date the payment is expected to be triggered if frequency is monthly | |
payload.payment_schedule.start_date Required |
string | Date to initiate the recurring payments | |
payload.payment_schedule.end_date | string | Date to conclude the recurring payments, if count is not provided | |
payload.payment_schedule.count | number | No of recurring payments to trigger before concluding the payments, if an end date is not provided | |
payload.contribution_id Required |
string | System generated unique ID | |
payload.service_provider_params Required |
object | Parameters based on service provider | |
payload.service_provider_params.status Required |
string | Status transitions depend on the service provider | |
payload.service_provider_params.reason Required |
string | Reason for disabling/cancelling the contribution |
{
"type": "recurring_contribution_cancelled",
"ch": "notifications",
"payload": {
"status": "Cancelled",
"contribution_name": "GIA contribution-1",
"pot_id": "pot-XWL3805770",
"investor_id": "inv-QRY29279",
"amount": "1000060.12",
"sub_transaction_type": "Regular contribution",
"currency": "GBP",
"payment_type": "direct_debit",
"service_provider": "gocardless",
"purpose": "cash",
"payment_schedule": {
"interval_unit": "monthly",
"interval": 7,
"date": 1,
"start_date": "2024-04-02T00:00:00.000Z",
"end_date": "2024-04-03T00:00:00.000Z"
},
"contribution_id": "RCB-GC-JSJ6709",
"service_provider_params": {
"status": "Subscription cancelled",
"authorization_reference" : "EV0159P7DZB2P6",
"contribution_reference" : "BRQ00030E3DXA4P",
"request_id" : "BRF00014ZXYN5V4F05M90GZEQCARE84K",
"authorization_url": "https://authexample.gocardless-sandbox.com",
"reason" : "The mandate for this subscription was cancelled at a bank branch."
}
},
"id": "952c7d0a-ecc6-4538-86f4-ad021f6855d0",
"ts": 1683086449658,
"resend": true
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | recurring_contribution_rejected |
|
ch Required |
string | notifications |
|
payload.status Required |
string | Status of the recurring contribution | |
payload.contribution_name Required |
string | User given identifier for the contribution | |
payload.pot_id Required |
string | Pot ID of investor to direct the payment | |
payload.investor_id Required |
string | Investor ID of the investor making the contribution | |
payload.amount Required |
string | Amount as a numeral string with two decimal points | |
payload.sub_transaction_type Required |
string | Sub transaction type for recurring contribution | Regular contribution , Regular contribution - non relievable , Regular contribution - Employer |
payload.currency Required |
string | Currency configured for the pot | |
payload.payment_type Required |
string | Type of payment | |
payload.service_provider Required |
string | Service provider managing the recurring payment subscription | |
payload.purpose Required |
string | Purpose of the recurring contribution | cash , invest |
payload.source_id | string | Only for payments intents for employer contributions made towards SIPP Accumulation Products | |
payload.payment_schedule Required |
object | Parameters based on payment schedules | |
payload.payment_schedule.interval_unit Required |
string | Repeating interval unit of recurring payment | monthly |
payload.payment_schedule.interval Required |
number | Repeating interval of recurring payment | |
payload.payment_schedule.date | number | Date the payment is expected to be triggered if frequency is monthly | |
payload.payment_schedule.start_date Required |
string | Date to initiate the recurring payments | |
payload.payment_schedule.end_date | string | Date to conclude the recurring payments, if count is not provided | |
payload.payment_schedule.count | number | No of recurring payments to trigger before concluding the payments, if an end date is not provided | |
payload.contribution_id Required |
string | System generated unique ID | |
payload.service_provider_params Required |
object | Parameters based on service provider | |
payload.service_provider_params.status Required |
string | Status transitions depend on the service provider | |
payload.service_provider_params.reason Required |
string | Reason for disabling/cancelling the contribution |
{
"type": "recurring_contribution_rejected",
"ch": "notifications",
"payload": {
"status": "Rejected",
"contribution_name": "GIA contribution-1",
"pot_id": "pot-XWL3805770",
"investor_id": "inv-QRY29279",
"amount": "1000060.12",
"sub_transaction_type": "Regular contribution",
"currency": "GBP",
"payment_type": "direct_debit",
"service_provider": "gocardless",
"purpose": "cash",
"payment_schedule": {
"interval_unit": "monthly",
"interval": 7,
"date": 1,
"start_date": "2024-04-02T00:00:00.000Z",
"end_date": "2024-04-03T00:00:00.000Z"
},
"contribution_id": "RCB-GC-JSJ6709",
"service_provider_params": {
"status": "Pending service provider setup",
"reason": "One of your parameters was incorrectly typed"
}
},
"id": "952c7d0a-ecc6-4538-86f4-ad021f6855d0",
"ts": 1683086449658,
"resend": true
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | recurring_contribution_authorization_url_received |
|
ch Required |
string | notifications |
|
payload.status Required |
string | Status of the recurring contribution | |
payload.contribution_name Required |
string | User given identifier for the contribution | |
payload.pot_id Required |
string | Pot ID of investor to direct the payment | |
payload.investor_id Required |
string | Investor ID of the investor making the contribution | |
payload.amount Required |
string | Amount as a numeral string with two decimal points | |
payload.sub_transaction_type Required |
string | Sub transaction type for recurring contribution | Regular contribution , Regular contribution - non relievable , Regular contribution - Employer |
payload.currency Required |
string | Currency configured for the pot | |
payload.payment_type Required |
string | Type of payment | |
payload.service_provider Required |
string | Service provider managing the recurring payment subscription | |
payload.purpose Required |
string | Purpose of the recurring contribution | cash , invest |
payload.source_id | string | Only for payments intents for employer contributions made towards SIPP Accumulation Products | |
payload.payment_schedule Required |
object | Parameters based on payment schedules | |
payload.payment_schedule.interval_unit Required |
string | Repeating interval unit of recurring payment | monthly |
payload.payment_schedule.interval Required |
number | Repeating interval of recurring payment | |
payload.payment_schedule.date | number | Date the payment is expected to be triggered if frequency is monthly | |
payload.payment_schedule.start_date Required |
string | Date to initiate the recurring payments | |
payload.payment_schedule.end_date | string | Date to conclude the recurring payments, if count is not provided | |
payload.payment_schedule.count | number | No of recurring payments to trigger before concluding the payments, if an end date is not provided | |
payload.contribution_id Required |
string | System generated unique ID | |
payload.service_provider_params Required |
object | Parameters based on service provider | |
payload.service_provider_params.status Required |
string | Status transitions depend on the service provider | |
payload.service_provider_params.request_id Required |
string | Request ID used to create a contribution with the service provider | |
payload.service_provider_params.authorization_url Required |
string | Authorization URL sent by service provider to setup customer reference data and bank account information |
{
"type": "recurring_contribution_rejected",
"ch": "notifications",
"payload": {
"status": "Pending",
"contribution_name": "Sanjali SIPP contribution",
"pot_id": "pot-XWL3805775",
"investor_id": "inv-NNO44399",
"amount": "1000",
"sub_transaction_type": "Regular contribution",
"currency": "GBP",
"payment_type": "direct_debit",
"service_provider": "gocardless",
"purpose": "cash",
"payment_schedule": {
"interval_unit": "monthly",
"interval": 1,
"start_date": "Thu Jun 01 2023 00:00:00 GMT+0000 (Coordinated Universal Time)",
"date": 1,
"count": 10
},
"financial_product_id": "sipp_accumulation",
"contribution_id": "RCB-GC-JDJ4807",
"service_provider_params": {
"status": "Pending service provider setup",
"request_id": "BRQ0003R0RBM2BK",
"authorization_url": "https://pay-sandbox.gocardless.com/billing/static/flow?id=BRF0001BM491H7NWGZ6W2Z5NMVV7GP4T"
}
},
"id": "852c7d0a-ecc6-4538-86f4-ad021f6855k0",
"ts": 1684086449658,
"resend": true
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | recurring_contribution_resumed |
|
ch Required |
string | notifications |
|
payload.status Required |
string | Status of the recurring contribution | |
payload.contribution_name Required |
string | User given identifier for the contribution | |
payload.pot_id Required |
string | Pot ID of investor to direct the payment | |
payload.investor_id Required |
string | Investor ID of the investor making the contribution | |
payload.amount Required |
string | Amount as a numeral string with two decimal points | |
payload.sub_transaction_type Required |
string | Sub transaction type for recurring contribution | Regular contribution , Regular contribution - non relievable , Regular contribution - Employer |
payload.currency Required |
string | Currency configured for the pot | |
payload.payment_type Required |
string | Type of payment | |
payload.service_provider Required |
string | Service provider managing the recurring payment subscription | |
payload.purpose Required |
string | Purpose of the recurring contribution | cash , invest |
payload.source_id | string | Only for payments intents for employer contributions made towards SIPP Accumulation Products | |
payload.payment_schedule Required |
object | Parameters based on payment schedules | |
payload.payment_schedule.interval_unit Required |
string | Repeating interval unit of recurring payment | monthly |
payload.payment_schedule.interval Required |
number | Repeating interval of recurring payment | |
payload.payment_schedule.date | number | Date the payment is expected to be triggered if frequency is monthly | |
payload.payment_schedule.start_date Required |
string | Date to initiate the recurring payments | |
payload.payment_schedule.end_date | string | Date to conclude the recurring payments, if count is not provided | |
payload.payment_schedule.count | number | No of recurring payments to trigger before concluding the payments, if an end date is not provided | |
payload.contribution_id Required |
string | System generated unique ID | |
payload.service_provider_params Required |
object | Parameters based on service provider | |
payload.service_provider_params.status Required |
string | Status transitions depend on the service provider | |
payload.service_provider_params.reason Required |
string | Reason for disabling/cancelling the contribution |
{
"type": "recurring_contribution_resumed",
"ch": "notifications",
"payload": {
"status": "Active",
"contribution_name": "GIA contribution-1",
"pot_id": "pot-XWL3805770",
"investor_id": "inv-QRY29279",
"amount": "1000060.12",
"sub_transaction_type": "Regular contribution",
"currency": "GBP",
"payment_type": "direct_debit",
"service_provider": "gocardless",
"purpose": "cash",
"payment_schedule": {
"interval_unit": "monthly",
"interval": 7,
"date": 1,
"start_date": "2024-04-02T00:00:00.000Z",
"end_date": "2024-04-03T00:00:00.000Z"
},
"contribution_id": "RCB-GC-JSJ6709",
"service_provider_params": {
"status": "Subscription resumed",
"authorization_reference" : "EV0159P7DZB2P6",
"contribution_reference" : "BRQ00030E3DXA4P",
"request_id" : "BRF00014ZXYN5V4F05M90GZEQCARE84K",
"authorization_url": "https://authexample.gocardless-sandbox.com"
}
},
"id": "952c7d0a-ecc6-4538-86f4-ad021f6855d0",
"ts": 1683086449658,
"resend": true
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | recurring_contribution_finished |
|
ch Required |
string | notifications |
|
payload.status Required |
string | Status of the recurring contribution | |
payload.contribution_name Required |
string | User given identifier for the contribution | |
payload.pot_id Required |
string | Pot ID of investor to direct the payment | |
payload.investor_id Required |
string | Investor ID of the investor making the contribution | |
payload.amount Required |
string | Amount as a numeral string with two decimal points | |
payload.sub_transaction_type Required |
string | Sub transaction type for recurring contribution | Regular contribution , Regular contribution - non relievable , Regular contribution - Employer |
payload.currency Required |
string | Currency configured for the pot | |
payload.payment_type Required |
string | Type of payment | |
payload.service_provider Required |
string | Service provider managing the recurring payment subscription | |
payload.purpose Required |
string | Purpose of the recurring contribution | cash , invest |
payload.source_id | string | Only for payments intents for employer contributions made towards SIPP Accumulation Products | |
payload.payment_schedule Required |
object | Parameters based on payment schedules | |
payload.payment_schedule.interval_unit Required |
string | Repeating interval unit of recurring payment | monthly |
payload.payment_schedule.interval Required |
number | Repeating interval of recurring payment | |
payload.payment_schedule.date | number | Date the payment is expected to be triggered if frequency is monthly | |
payload.payment_schedule.start_date Required |
string | Date to initiate the recurring payments | |
payload.payment_schedule.end_date | string | Date to conclude the recurring payments, if count is not provided | |
payload.payment_schedule.count | number | No of recurring payments to trigger before concluding the payments, if an end date is not provided | |
payload.contribution_id Required |
string | System generated unique ID | |
payload.service_provider_params Required |
object | Parameters based on service provider | |
payload.service_provider_params.status Required |
string | Status transitions depend on the service provider | |
payload.service_provider_params.reason Required |
string | Reason for disabling/cancelling the contribution |
{
"type": "recurring_contribution_finished",
"ch": "notifications",
"payload": {
"status": "Finished",
"contribution_name": "GIA contribution-1",
"pot_id": "pot-XWL3805770",
"investor_id": "inv-QRY29279",
"amount": "1000060.12",
"sub_transaction_type": "Regular contribution",
"currency": "GBP",
"payment_type": "direct_debit",
"service_provider": "gocardless",
"purpose": "cash",
"payment_schedule": {
"interval_unit": "monthly",
"interval": 7,
"date": 1,
"start_date": "2024-04-02T00:00:00.000Z",
"end_date": "2024-04-03T00:00:00.000Z"
},
"contribution_id": "RCB-GC-JSJ6709",
"service_provider_params": {
"status": "Subscription finished",
"authorization_reference" : "EV0159P7DZB2P6",
"contribution_reference" : "BRQ00030E3DXA4P",
"request_id" : "BRF00014ZXYN5V4F05M90GZEQCARE84K",
"authorization_url": "https://authexample.gocardless-sandbox.com",
"reason" : "The subscription has finished."
}
},
"id": "952c7d0a-ecc6-4538-86f4-ad021f6855d0",
"ts": 1683086449658,
"resend": true
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | recurring_contribution_updated |
|
ch Required |
string | notifications |
|
payload.status Required |
string | Status of the recurring contribution | |
payload.contribution_name Required |
string | User given identifier for the contribution | |
payload.pot_id Required |
string | Pot ID of investor to direct the payment | |
payload.investor_id Required |
string | Investor ID of the investor making the contribution | |
payload.amount Required |
string | Amount as a numeral string with two decimal points | |
payload.sub_transaction_type Required |
string | Sub transaction type for recurring contribution | Regular contribution , Regular contribution - non relievable , Regular contribution - Employer |
payload.currency Required |
string | Currency configured for the pot | |
payload.payment_type Required |
string | Type of payment | |
payload.service_provider Required |
string | Service provider managing the recurring payment subscription | |
payload.purpose Required |
string | Purpose of the recurring contribution | cash , invest |
payload.source_id | string | Only for payments intents for employer contributions made towards SIPP Accumulation Products | |
payload.payment_schedule Required |
object | Parameters based on payment schedules | |
payload.payment_schedule.interval_unit Required |
string | Repeating interval unit of recurring payment | monthly |
payload.payment_schedule.interval Required |
number | Repeating interval of recurring payment | |
payload.payment_schedule.date | number | Date the payment is expected to be triggered if frequency is monthly | |
payload.payment_schedule.start_date Required |
string | Date to initiate the recurring payments | |
payload.payment_schedule.end_date | string | Date to conclude the recurring payments, if count is not provided | |
payload.payment_schedule.count | number | No of recurring payments to trigger before concluding the payments, if an end date is not provided | |
payload.contribution_id Required |
string | System generated unique ID | |
payload.service_provider_params Required |
object | Parameters based on service provider | |
payload.service_provider_params.status Required |
string | Status transitions depend on the service provider | |
payload.service_provider_params.reason Required |
string | Reason for disabling/cancelling the contribution |
{
"type": "recurring_contribution_updated",
"ch": "notifications",
"payload": {
"status": "Active",
"contribution_name": "GIA contribution-1",
"pot_id": "pot-XWL3805770",
"investor_id": "inv-QRY29279",
"amount": "1000060.12",
"sub_transaction_type": "Regular contribution",
"currency": "GBP",
"payment_type": "direct_debit",
"service_provider": "gocardless",
"purpose": "cash",
"payment_schedule": {
"interval_unit": "monthly",
"interval": 7,
"date": 1,
"start_date": "2024-04-02T00:00:00.000Z",
"end_date": "2024-04-03T00:00:00.000Z"
},
"contribution_id": "RCB-GC-JSJ6709",
"service_provider_params": {
"status": "Mandate replaced",
"authorization_reference" : "EV1059P8HGJ6P6",
"contribution_reference" : "BRQ00030E3DXA4P",
"request_id" : "BRF00014ZXYN5V4F05M90GZEQCARE84K",
"authorization_url": "https://authexample.gocardless-sandbox.com"
}
},
"id": "952c7d0a-ecc6-4538-86f4-ad021f6855d0",
"ts": 1683086449658,
"resend": true
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | HMRC_LISA_investor_creation_failed |
|
ch Required |
string | notifications |
|
payload.investor_id Required |
string | Investor ID of the investor account | |
payload.account_id Required |
string | Account ID of the investor account | |
payload.hmrc_data Required |
object | HMRC related data | |
payload.hmrc_data.status Required |
string | Indicate the status of the LISA investor and investor account creation with HMRC | |
payload.hmrc_data.reason Required |
string | Reason for failure |
{
"type": "HMRC_LISA_investor_creation_failed",
"ch": "notifications",
"payload": {
"investor_id": "inv-QRY29279",
"account_id": "LISAC1699158978930",
"hmrc_data": {
"status": "hmrc_investor_creation_failed",
"reason": "The HMRC request contains invalid or missing data"
}
},
"id": "952c7d0a-ecc6-4538-86f4-ad021f6855d0",
"ts": 1683086449658,
"resend": true
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | HMRC_LISA_account_creation_failed |
|
ch Required |
string | notifications |
|
payload.investor_id Required |
string | Investor ID of the investor account | |
payload.account_id Required |
string | Account ID of the investor account | |
payload.hmrc_data Required |
object | HMRC related data | |
payload.hmrc_data.status Required |
string | Indicate the status of the LISA investor and investor account creation with HMRC | |
payload.hmrc_data.reason Required |
string | Reason for failure |
{
"type": "HMRC_LISA_account_creation_failed",
"ch": "notifications",
"payload": {
"investor_id": "inv-QRY29279",
"account_id": "LISAC1699158978930",
"hmrc_data": {
"status": "hmrc_account_creation_failed",
"reason": "The HMRC request contains invalid or missing data"
}
},
"id": "952c7d0a-ecc6-4538-86f4-ad021f6855d0",
"ts": 1683086449658,
"resend": true
}
Name | Type | Description | Accepted values |
---|---|---|---|
type Required |
string | HMRC_LISA_account_creation_successful |
|
ch Required |
string | notifications |
|
payload.investor_id Required |
string | Investor ID of the investor account | |
payload.account_id Required |
string | Account ID of the investor account | |
payload.hmrc_data Required |
object | HMRC related data | |
payload.hmrc_data.status Required |
string | Indicate the status of the LISA investor and investor account creation with HMRC | |
payload.hmrc_data.lisa_investor_reference Required |
object | HMRC LISA investor reference |
{
"type": "HMRC_LISA_account_creation_successful",
"ch": "notifications",
"payload": {
"investor_id": "inv-QRY29279",
"account_id": "LISAC1699158978930",
"hmrc_data": {
"status": "hmrc_account_creation_successful",
"lisa_investor_reference": "5305636328"
}
},
"id": "952c7d0a-ecc6-4538-86f4-ad021f6855d0",
"ts": 1683086449658,
"resend": true
}
Test methods are used for easier testing of connectivity, keys and tokens. Since they are not tied to a speific functionality you can use them freely
curl --request GET \ --url https://web_host_name/tenant/test/hello-world-be \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "tenant": "wos",
- "members": [
- "Leonardo",
- "Michelangelo",
- "Donatello",
- "Raphael"
], - "message": "Welcome to WOS world"
}
The Investor endpoint allows you to create investors, update investors and retrieve investor records in bulk or individually. If a KYC/AML service has been set-up through the system (e.g. Onfido), then the investor will be verified using this service.
When retrieving the investor, the following fields will provide information regarding the investor’s status that can be used for deciding on what subsequent investor action must be permitted.
dealing_status: Normally set to Active once KYC/AML passes, however may be independently set by administrators if required.
kyc_aml_status - the status of the KYC/AML check.
Status - ultimate status of the investor derived from dealing_status and kcy_aml_status.
If the system is not set-up to manage the KYC/AML service then the wealth manager must specify the kyc_aml_status
and dealing_status
on investor creation and update. The status
of the investor will be consider active only when the kyc_aml_status : "clear"
and dealing_status : "active"
Returns all the investors in an array
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 500 and 1. Max page size is 2000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 500 and 1. Results are sorted decending order of the created date & time. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/investors/v1?page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "investors": [
- {
- "investor_id": "inv-XUT11265",
- "title": "Mr.",
- "gender": "male",
- "first_name": "David",
- "last_name": "Brown",
- "status": "kyc_pending",
- "email": "davidbrown@gmail.com",
- "mobile_number": "+441234567890",
- "home_number": "+441234587830",
- "office_number": "+442072343456",
- "nationality": "GBR",
- "tax_id": "AB123456C",
- "kyc_aml_status": "not_started",
- "dealing_status": "inactive",
- "id_numbers": [
- {
- "id_type": "passport",
- "id_number": "2324839048381"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "mifid_tax_id": "2382392274",
- "tax_residency_compliant": true,
- "date_of_birth": "1990-12-20",
- "kyc_aml_status_last_updated": "2020-07-10T07:36:05.884Z",
- "bank_accounts": [
- "ba-bc00c28f-b3fc-42b7"
], - "retirement_age": 60,
- "tax_residence": "GB-ENG",
- "employment_status": "employed",
- "mpaa_triggered": true,
- "mpaa_triggered_date": "2023-01-30",
- "workplace_employers": [
- "wem-RHZ59189"
], - "lta_protection_details": [
- {
- "lta_protection_type": "primary",
- "lta_primary_protection_factor": "20.00"
}, - {
- "lta_protection_type": "fp14"
}
], - "expression_of_wish": {
- "sipp_beneficiaries": [
- {
- "title": "Mr.",
- "first_name": "William",
- "last_name": "Smith",
- "address": "13 Park Row,Edinburgh, United Kingdom",
- "tax_id": "AB123956P",
- "phone_number": "+441332960321",
- "email": "davidbrown@gmail.com",
- "percentage": "75.00"
}, - {
- "title": "Miss.",
- "first_name": "Jessica",
- "last_name": "Smith",
- "address": "14 Park Row,Edinburgh, United Kingdom",
- "tax_id": "KL123956M",
- "phone_number": "+441630960345",
- "email": "jessicasmith@gmail.com",
- "percentage": "25.00"
}
], - "sipp_nominees": [
- {
- "title": "Mr.",
- "first_name": "James",
- "last_name": "Brown",
- "address": "87 Colorado Way,Richmond, United Kingdom",
- "tax_id": "XY123956Z",
- "phone_number": "+441630960322",
- "email": "jamesbrown@gmail.com",
- "percentage": "50.00"
}, - {
- "title": "Mrs.",
- "first_name": "Emily",
- "last_name": "Brown",
- "address": "4 Baldock Street, Newtown, United Kingdom",
- "tax_id": "SY123956P",
- "phone_number": "+441615960345",
- "email": "emilybrown@gmail.com",
- "percentage": "50.00"
}
]
}, - "vulnerable_customer": true,
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
], - "next_page_available": true
}
Create a new investor in the system.
x-api-key required | string ApiSecretKey |
title | string |
gender | string |
first_name required | string <= 100 characters |
last_name required | string [ 2 .. 100 ] characters |
string <= 100 characters | |
mobile_number | string <= 16 characters |
home_number | string <= 16 characters |
office_number | string <= 16 characters |
nationality | string = 3 characters 3 character country code inline with ISO 3166-1 alpha-3 |
tax_id | string Mandatory if the “Tax ID uniqueness validation for investors” configuration is enabled. The status of this configuration can be verified under Firm Configurations in the Admin UI. Uniqueness of the investor's tax_id will only be validated if the configuration is enabled. |
kyc_aml_status | string Default: "not_started" Enum: "submitted" "kyc_failed_error" "pending" "clear" "not_started" |
dealing_status | string Default: "inactive" Enum: "inactive" "active" |
Array of objects | |
object | |
mifid_tax_id | string |
tax_residency_compliant | boolean |
date_of_birth | string <date> YYYY-MM-DD |
retirement_age | number Intended retirement age of the investor. This will only be applicable for the financial product SIPP. |
tax_residence | string Enum: "GB-ENG" "GB-NIR" "GB-SCT" "GB-WLS" Residence of the investor for tax purposes. (for example, to claim relief at source) GB-ENG=England GB-NIR=Northern Ireland GB-SCT=Scotland GB-WLS=Wales. |
employment_status | string Enum: "employed" "self_employed" "pensioner" "child_under_16" "in_full_time_education" "unemployed" "caring_for_a_person_over_16" "caring_for_a_person_under_16" "other" Status of an investor best describes their personal circumstances. This will only be applicable for the financial product SIPP. |
mpaa_triggered | boolean Whether the investor has triggered the Money Purchase Annual Allowance. This will only be applicable for the financial product SIPP. |
mpaa_triggered_date | string <date> Date of triggering the Money Purchase Annual Allowance. This is only required if mpaa_triggered is true.The date format should be YYYY-MM-DD. This will only be applicable for the financial product SIPP. |
workplace_employers | Array of strings Unique IDs of workplace employers who are contributing to the workplace pension of the investor. |
Array of objects Additional details of the lifetime allowance protections of the investor. This will only be applicable for the financial product SIPP. | |
object Beneficiary and nominee list of the expression of wish. This will only be applicable for the financial product SIPP. | |
Array of objects Allowed to create only one bank account when creating a new investor. | |
vulnerable_customer | boolean Whether the investor has been identified as a person who is susceptible to harm, due to their personal circumstances. |
{- "title": "Mr.",
- "gender": "male",
- "first_name": "David",
- "last_name": "Brown",
- "email": "davidbrown@gmail.com",
- "mobile_number": "+441234567890",
- "home_number": "+441234587830",
- "office_number": "+442072343456",
- "nationality": "GBR",
- "tax_id": "AB123401C",
- "kyc_aml_status": "not_started",
- "dealing_status": "inactive",
- "id_numbers": [
- {
- "id_type": "passport",
- "id_number": "2324839048381"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "mifid_tax_id": "2382392274",
- "tax_residency_compliant": true,
- "date_of_birth": "1990-12-20",
- "retirement_age": 60,
- "tax_residence": "GB-ENG",
- "employment_status": "employed",
- "mpaa_triggered": true,
- "mpaa_triggered_date": "2023-01-30",
- "workplace_employers": [
- "wem-RHZ59189"
], - "lta_protection_details": [
- {
- "lta_protection_type": "primary",
- "lta_primary_protection_factor": "20.00"
}, - {
- "lta_protection_type": "fp14"
}
], - "expression_of_wish": {
- "sipp_beneficiaries": [
- {
- "title": "Mr.",
- "first_name": "William",
- "last_name": "Smith",
- "address": "13 Park Row,Edinburgh, United Kingdom",
- "tax_id": "AB123956",
- "phone_number": "+441332960321",
- "email": "davidbrown@gmail.com",
- "percentage": "75.00"
}, - {
- "title": "Miss.",
- "first_name": "Jessica",
- "last_name": "Smith",
- "address": "14 Park Row,Edinburgh, United Kingdom",
- "tax_id": "AB123758",
- "phone_number": "+441630960345",
- "email": "jessicasmith@gmail.com",
- "percentage": "25.00"
}
], - "sipp_nominees": [
- {
- "title": "Mr.",
- "first_name": "James",
- "last_name": "Brown",
- "address": "87 Colorado Way,Richmond, United Kingdom",
- "tax_id": "AB123046",
- "phone_number": "+441630960322",
- "email": "jamesbrown@gmail.com",
- "percentage": "50.00"
}, - {
- "title": "Mrs.",
- "first_name": "Emily",
- "last_name": "Brown",
- "address": "4 Baldock Street, Newtown, United Kingdom",
- "tax_id": "AB123916",
- "phone_number": "+441615960345",
- "email": "emilybrown@gmail.com",
- "percentage": "50.00"
}
]
}, - "bank_accounts": [
- {
- "account_name": "David Brown",
- "default_account": "yes",
- "bank_account_number": "12345678",
- "account_status": "active",
- "sort_code": "123456",
- "building_society_roll_number": "12345672"
}
], - "vulnerable_customer": true
}
{- "investor_id": "inv-XUT11265",
- "title": "Mr.",
- "gender": "male",
- "first_name": "David",
- "last_name": "Brown",
- "status": "kyc_pending",
- "email": "davidbrown@gmail.com",
- "mobile_number": "+441234567890",
- "home_number": "+441234587830",
- "office_number": "+442072343456",
- "nationality": "GBR",
- "tax_id": "AB123456C",
- "kyc_aml_status": "not_started",
- "dealing_status": "inactive",
- "id_numbers": [
- {
- "id_type": "passport",
- "id_number": "2324839048381"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "mifid_tax_id": "2382392274",
- "tax_residency_compliant": true,
- "date_of_birth": "1990-12-20",
- "retirement_age": 60,
- "tax_residence": "GB-ENG",
- "employment_status": "employed",
- "mpaa_triggered": true,
- "mpaa_triggered_date": "2023-01-30",
- "workplace_employers": [
- "wem-RHZ59189"
], - "lta_protection_details": [
- {
- "lta_protection_type": "primary",
- "lta_primary_protection_factor": "20.00"
}, - {
- "lta_protection_type": "fp14"
}
], - "expression_of_wish": {
- "sipp_beneficiaries": [
- {
- "title": "Mr.",
- "first_name": "William",
- "last_name": "Smith",
- "address": "13 Park Row,Edinburgh, United Kingdom",
- "tax_id": "AB123956P",
- "phone_number": "+441332960321",
- "email": "davidbrown@gmail.com",
- "percentage": "75.00"
}, - {
- "title": "Miss.",
- "first_name": "Jessica",
- "last_name": "Smith",
- "address": "14 Park Row,Edinburgh, United Kingdom",
- "tax_id": "KL123956M",
- "phone_number": "+441630960345",
- "email": "jessicasmith@gmail.com",
- "percentage": "25.00"
}
], - "sipp_nominees": [
- {
- "title": "Mr.",
- "first_name": "James",
- "last_name": "Brown",
- "address": "87 Colorado Way,Richmond, United Kingdom",
- "tax_id": "XY123956Z",
- "phone_number": "+441630960322",
- "email": "jamesbrown@gmail.com",
- "percentage": "50.00"
}, - {
- "title": "Mrs.",
- "first_name": "Emily",
- "last_name": "Brown",
- "address": "4 Baldock Street, Newtown, United Kingdom",
- "tax_id": "SY123956P",
- "phone_number": "+441615960345",
- "email": "emilybrown@gmail.com",
- "percentage": "50.00"
}
]
}, - "kyc_aml_status_last_updated": "2020-07-10T07:36:05.884Z",
- "bank_accounts": [
- {
- "bank_account_id": "ba-bc00c28f-b3fc-42b7",
- "investor_id": "inv-XUT11265",
- "account_name": "David Brown",
- "bank_account_type": "contributing_employer",
- "default_account": "yes",
- "bank_account_number": "****5678",
- "account_status": "active",
- "sort_code": "****56",
- "building_society_roll_number": "******72",
- "status": "failed",
- "error_message": "Only one bank account can be set as the default account",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
], - "vulnerable_customer": true,
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
Get details of an investor
investor_id required | string Investor ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/investors/v1/%7Binvestor_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "investor_id": "inv-XUT11265",
- "title": "Mr.",
- "gender": "male",
- "first_name": "David",
- "last_name": "Brown",
- "status": "kyc_pending",
- "email": "davidbrown@gmail.com",
- "mobile_number": "+441234567890",
- "home_number": "+441234587830",
- "office_number": "+442072343456",
- "nationality": "GBR",
- "tax_id": "AB123456C",
- "kyc_aml_status": "not_started",
- "dealing_status": "inactive",
- "id_numbers": [
- {
- "id_type": "passport",
- "id_number": "2324839048381"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "mifid_tax_id": "2382392274",
- "tax_residency_compliant": true,
- "date_of_birth": "1990-12-20",
- "kyc_aml_status_last_updated": "2020-07-10T07:36:05.884Z",
- "bank_accounts": [
- "ba-bc00c28f-b3fc-42b7"
], - "retirement_age": 60,
- "tax_residence": "GB-ENG",
- "employment_status": "employed",
- "mpaa_triggered": true,
- "mpaa_triggered_date": "2023-01-30",
- "workplace_employers": [
- "wem-RHZ59189"
], - "lta_protection_details": [
- {
- "lta_protection_type": "primary",
- "lta_primary_protection_factor": "20.00"
}, - {
- "lta_protection_type": "fp14"
}
], - "expression_of_wish": {
- "sipp_beneficiaries": [
- {
- "title": "Mr.",
- "first_name": "William",
- "last_name": "Smith",
- "address": "13 Park Row,Edinburgh, United Kingdom",
- "tax_id": "AB123956P",
- "phone_number": "+441332960321",
- "email": "davidbrown@gmail.com",
- "percentage": "75.00"
}, - {
- "title": "Miss.",
- "first_name": "Jessica",
- "last_name": "Smith",
- "address": "14 Park Row,Edinburgh, United Kingdom",
- "tax_id": "KL123956M",
- "phone_number": "+441630960345",
- "email": "jessicasmith@gmail.com",
- "percentage": "25.00"
}
], - "sipp_nominees": [
- {
- "title": "Mr.",
- "first_name": "James",
- "last_name": "Brown",
- "address": "87 Colorado Way,Richmond, United Kingdom",
- "tax_id": "XY123956Z",
- "phone_number": "+441630960322",
- "email": "jamesbrown@gmail.com",
- "percentage": "50.00"
}, - {
- "title": "Mrs.",
- "first_name": "Emily",
- "last_name": "Brown",
- "address": "4 Baldock Street, Newtown, United Kingdom",
- "tax_id": "SY123956P",
- "phone_number": "+441615960345",
- "email": "emilybrown@gmail.com",
- "percentage": "50.00"
}
]
}, - "vulnerable_customer": true,
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
Update an existing investor. The system will update only the fields sent in the request. Field mentioned as Nullable can be deleted by updating those values with null. Sending empty values for fields will not update the fields.
investor_id required | string Investor ID |
x-api-key required | string ApiSecretKey |
title | string or null |
gender | string or null |
first_name | string <= 100 characters |
last_name | string [ 2 .. 100 ] characters |
string or null <= 100 characters | |
mobile_number | string or null <= 16 characters |
home_number | string or null <= 16 characters |
office_number | string or null <= 16 characters |
nationality | string or null = 3 characters 3 character country code inline with ISO 3166-1 alpha-3 |
tax_id | string or null Mandatory if the “Tax ID uniqueness validation for investors” configuration is enabled. The status of this configuration can be verified under Firm Configurations in the Admin UI. Uniqueness of the investor's tax_id will only be validated if the configuration is enabled. |
kyc_aml_status | string Enum: "submitted" "kyc_failed_error" "pending" "clear" "not_started" |
dealing_status | string Enum: "inactive" "active" |
Array of objects or null Replaces the array in the server. | |
object or null | |
mifid_tax_id | string or null |
tax_residency_compliant | boolean or null |
date_of_birth | string or null <date> YYYY-MM-DD |
retirement_age | number or null Intended retirement age of the investor. This will only be applicable for the financial product SIPP. |
tax_residence | string or null Enum: "GB-ENG" "GB-NIR" "GB-SCT" "GB-WLS" Residence of the investor for tax purposes. (for example, to claim relief at source) GB-ENG=England GB-NIR=Northern Ireland GB-SCT=Scotland GB-WLS=Wales |
employment_status | string Enum: "employed" "self_employed" "pensioner" "child_under_16" "in_full_time_education" "unemployed" "caring_for_a_person_over_16" "caring_for_a_person_under_16" "other" Status of an investor best describes their personal circumstances. This will only be applicable for the financial product SIPP. |
mpaa_triggered | boolean or null Whether the investor has triggered the Money Purchase Annual Allowance. This will only be applicable for the financial product SIPP. |
mpaa_triggered_date | string or null <date> Date of triggering the Money Purchase Annual Allowance. This is only required if mpaa_triggered is true. This will only be applicable for the financial product SIPP. |
workplace_employers | Array of strings or null Unique IDs of workplace employers who are contributing to the workplace pensions. The incoming list of employers will replace the existing list of employers. |
Array of objects or null Additional details of the lifetime allowance protections of the investor. This will only be applicable for the financial product SIPP. | |
object or null Beneficiary and nominee list of the expression of wish. This will only be applicable for the financial product SIPP. | |
vulnerable_customer | boolean Whether the investor has been identified as a person who is susceptible to harm, due to their personal circumstances. |
reference_version required | integer |
{- "title": "Mr.",
- "gender": "male",
- "first_name": "David",
- "last_name": "Brown",
- "email": "davidbrown@gmail.com",
- "mobile_number": "+441234567890",
- "home_number": "+441234587830",
- "office_number": "+442072343456",
- "nationality": "GBR",
- "tax_id": "AB123456C",
- "kyc_aml_status": "not_started",
- "dealing_status": "inactive",
- "id_numbers": [
- {
- "id_type": "passport",
- "id_number": "2324839048381"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "mifid_tax_id": "2382392274",
- "tax_residency_compliant": true,
- "date_of_birth": "1990-12-20",
- "retirement_age": 60,
- "tax_residence": "GB-ENG",
- "employment_status": "employed",
- "mpaa_triggered": true,
- "mpaa_triggered_date": "2023-01-30",
- "workplace_employers": [
- "wem-RHZ59189"
], - "lta_protection_details": [
- {
- "lta_protection_type": "primary",
- "lta_primary_protection_factor": "20.00"
}, - {
- "lta_protection_type": "fp14"
}
], - "expression_of_wish": {
- "sipp_beneficiaries": [
- {
- "title": "Mr.",
- "first_name": "William",
- "last_name": "Smith",
- "address": "13 Park Row,Edinburgh, United Kingdom",
- "tax_id": "AB123956P",
- "phone_number": "+441332960321",
- "email": "davidbrown@gmail.com",
- "percentage": "75.00"
}, - {
- "title": "Miss.",
- "first_name": "Jessica",
- "last_name": "Smith",
- "address": "14 Park Row,Edinburgh, United Kingdom",
- "tax_id": "KL123956M",
- "phone_number": "+441630960345",
- "email": "jessicasmith@gmail.com",
- "percentage": "25.00"
}
], - "sipp_nominees": [
- {
- "title": "Mr.",
- "first_name": "James",
- "last_name": "Brown",
- "address": "87 Colorado Way,Richmond, United Kingdom",
- "tax_id": "XY123956Z",
- "phone_number": "+441630960322",
- "email": "jamesbrown@gmail.com",
- "percentage": "50.00"
}, - {
- "title": "Mrs.",
- "first_name": "Emily",
- "last_name": "Brown",
- "address": "4 Baldock Street, Newtown, United Kingdom",
- "tax_id": "SY123956P",
- "phone_number": "+441615960345",
- "email": "emilybrown@gmail.com",
- "percentage": "50.00"
}
]
}, - "vulnerable_customer": true,
- "reference_version": 1
}
{- "investor_id": "inv-XUT11265",
- "title": "Mr.",
- "gender": "male",
- "first_name": "David",
- "last_name": "Brown",
- "status": "kyc_pending",
- "email": "davidbrown@gmail.com",
- "mobile_number": "+441234567890",
- "home_number": "+441234587830",
- "office_number": "+442072343456",
- "nationality": "GBR",
- "tax_id": "AB123456C",
- "kyc_aml_status": "not_started",
- "dealing_status": "inactive",
- "id_numbers": [
- {
- "id_type": "passport",
- "id_number": "2324839048381"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "mifid_tax_id": "2382392274",
- "tax_residency_compliant": true,
- "date_of_birth": "1990-12-20",
- "kyc_aml_status_last_updated": "2020-07-10T07:36:05.884Z",
- "bank_accounts": [
- "ba-bc00c28f-b3fc-42b7"
], - "retirement_age": 60,
- "tax_residence": "GB-ENG",
- "employment_status": "employed",
- "mpaa_triggered": true,
- "mpaa_triggered_date": "2023-01-30",
- "workplace_employers": [
- "wem-RHZ59189"
], - "lta_protection_details": [
- {
- "lta_protection_type": "primary",
- "lta_primary_protection_factor": "20.00"
}, - {
- "lta_protection_type": "fp14"
}
], - "expression_of_wish": {
- "sipp_beneficiaries": [
- {
- "title": "Mr.",
- "first_name": "William",
- "last_name": "Smith",
- "address": "13 Park Row,Edinburgh, United Kingdom",
- "tax_id": "AB123956P",
- "phone_number": "+441332960321",
- "email": "davidbrown@gmail.com",
- "percentage": "75.00"
}, - {
- "title": "Miss.",
- "first_name": "Jessica",
- "last_name": "Smith",
- "address": "14 Park Row,Edinburgh, United Kingdom",
- "tax_id": "KL123956M",
- "phone_number": "+441630960345",
- "email": "jessicasmith@gmail.com",
- "percentage": "25.00"
}
], - "sipp_nominees": [
- {
- "title": "Mr.",
- "first_name": "James",
- "last_name": "Brown",
- "address": "87 Colorado Way,Richmond, United Kingdom",
- "tax_id": "XY123956Z",
- "phone_number": "+441630960322",
- "email": "jamesbrown@gmail.com",
- "percentage": "50.00"
}, - {
- "title": "Mrs.",
- "first_name": "Emily",
- "last_name": "Brown",
- "address": "4 Baldock Street, Newtown, United Kingdom",
- "tax_id": "SY123956P",
- "phone_number": "+441615960345",
- "email": "emilybrown@gmail.com",
- "percentage": "50.00"
}
]
}, - "vulnerable_customer": true,
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
This endpoint supports the creation of a Fee Nomination for an investor. A pot can be nominated to deduct all types of fees from all pots of an investor.
investor_id required | string Investor ID |
x-api-key required | string ApiSecretKey |
required | Array of objects (Fee nominee pots) Only one fee nominee pot can be given |
{- "nominations": [
- {
- "nominee_pot_id": "pot-UKW3452800"
}
]
}
{- "nominations": [
- {
- "nominee_pot_id": "pot-UKW3452800"
}
], - "reference_version": 1,
- "investor_id": "inv-XUT11265",
- "created_at": "2023-02-08T07:36:05.884Z",
- "updated_at": "2023-02-10T07:36:05.884Z"
}
This endpoint returns the nominee pot set up for the investor to deduct fees.
investor_id required | string Investor ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/investors/v1/%7Binvestor_id%7D/fee-nominations \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "nominations": [
- {
- "nominee_pot_id": "pot-UKW3452800"
}
], - "reference_version": 1,
- "investor_id": "inv-XUT11265",
- "created_at": "2023-02-08T07:36:05.884Z",
- "updated_at": "2023-02-10T07:36:05.884Z"
}
This endpoint supports the update of a Fee Nomination of an investor.
investor_id required | string Investor ID |
x-api-key required | string ApiSecretKey |
required | Array of objects (Fee nominee pots) Replaces the array in the server. Only one fee nominee pot can be given |
reference_version required | integer Must match with the reference version in the server |
{- "nominations": [
- {
- "nominee_pot_id": "pot-UKW3452800"
}
], - "reference_version": 1
}
{- "nominations": [
- {
- "nominee_pot_id": "pot-UKW3452800"
}
], - "reference_version": 1,
- "investor_id": "inv-XUT11265",
- "created_at": "2023-02-08T07:36:05.884Z",
- "updated_at": "2023-02-10T07:36:05.884Z"
}
This endpoint supports the deletion of a Fee Nomination.
investor_id required | string Investor ID |
x-api-key required | string ApiSecretKey |
curl --request DELETE \ --url https://web_host_name/tenant/investors/v1/%7Binvestor_id%7D/fee-nominations \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "message": "Successfully deleted nominations for investor [inv-XUT11265]"
}
Returns all the tax codes in an array
investor_id | string Investor ID |
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 4000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/investors/v1/tax-codes?investor_id=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "tax_codes": [
- {
- "investor_id": "inv-XUT11265",
- "tax_code": "1080L",
- "effective_date": "2023-04-06",
- "end_date": "2024-04-05",
- "origin": "External API",
- "created_at": "2023-02-08T07:36:05.884Z",
- "updated_at": "2023-02-10T07:36:05.884Z"
}
], - "next_page_available": true
}
ⓘ This feature is currently in BETA mode
The Organisational investors endpoint family allows you to create and manage organisational investors.
When retrieving the organisational investor, the following fields will provide information regarding the organisation investor’s status that can be used for deciding on what subsequent organisation investor action must be permitted.
dealing_status: Normally set to Active once KYB passes, however may be independently set by administrators if required.
kyb_status - the status of the KYB check.
Status - ultimate status of the investor derived from dealing_status and kcb_status.
If the system is not set-up to manage the KYB service then the wealth manager must specify the kyb_status
and dealing_status
on organisational investor creation and update. The status
of the organisational investor will be consider active only when the kyb_status : "clear"
and dealing_status : "active"
Create a new organisational investor in the system.
x-api-key required | string ApiSecretKey |
organisation_name required | string <= 100 characters |
kyb_status | string Default: "not_started" Enum: "submitted" "kyb_failed_error" "pending" "clear" "not_started" Know Your Business Status of the organisation |
dealing_status | string Default: "inactive" Enum: "inactive" "active" Status of the organisation |
Array of objects Contact details of any individual officer of the organisation | |
required | object Correspondence/ Registered address of the organisation |
Array of objects Details of bank account of the organisation. Allowed to create only one bank account when creating a new investor. |
{- "organisation_name": "ABC Company Pvt Ltd",
- "kyb_status": "not_started",
- "dealing_status": "inactive",
- "corporate_officers": [
- {
- "title": "Mr.",
- "first_name": "David",
- "last_name": "Brown",
- "date_of_birth": "1990-12-20",
- "phone_number": "+441234567890",
- "email": "davidbrown@gmail.com",
- "nationality": "GBR",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "officer_type": "manager"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "bank_accounts": [
- {
- "account_name": "David Brown",
- "default_account": "yes",
- "bank_account_number": "12345678",
- "account_status": "active",
- "sort_code": "123456"
}
]
}
{- "investor_id": "org-XUT11265",
- "investor_type": "organisation",
- "organisation_name": "ABC Company Pvt Ltd",
- "status": "kyb_pending",
- "kyb_status": "not_started",
- "dealing_status": "inactive",
- "corporate_officers": [
- {
- "title": "Mr.",
- "first_name": "David",
- "last_name": "Brown",
- "date_of_birth": "1990-12-20",
- "phone_number": "+441234567890",
- "email": "davidbrown@gmail.com",
- "nationality": "GBR",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "officer_type": "manager"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "bank_accounts": [
- {
- "bank_account_id": "ba-bc00c28f-b3fc-42b7",
- "investor_id": "inv-XUT11265",
- "account_name": "David Brown",
- "bank_account_type": "contributing_employer",
- "default_account": "yes",
- "bank_account_number": "****5678",
- "account_status": "active",
- "sort_code": "****56",
- "status": "failed",
- "error_message": "Only one bank account can be set as the default account",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
], - "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
Get details of all organisational investors.
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 3000. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/investor-organisations/v1?page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "next_page_available": "true",
- "organisations": [
- {
- "investor_id": "org-XUT11265",
- "investor_type": "organisation",
- "organisation_name": "ABC Company Pvt Ltd",
- "status": "kyb_pending",
- "kyb_status": "not_started",
- "dealing_status": "inactive",
- "corporate_officers": [
- {
- "title": "Mr.",
- "first_name": "David",
- "last_name": "Brown",
- "date_of_birth": "1990-12-20",
- "phone_number": "+441234567890",
- "email": "davidbrown@gmail.com",
- "nationality": "GBR",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "officer_type": "manager"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "bank_accounts": [
- "ba-bc00c28f-b3fc-42b7"
], - "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
]
}
Get details of an organisational investor.
investor_id required | string Investor ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/investor-organisations/v1/%7Binvestor_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "investor_id": "org-XUT11265",
- "investor_type": "organisation",
- "organisation_name": "ABC Company Pvt Ltd",
- "status": "kyb_pending",
- "kyb_status": "not_started",
- "dealing_status": "inactive",
- "corporate_officers": [
- {
- "title": "Mr.",
- "first_name": "David",
- "last_name": "Brown",
- "date_of_birth": "1990-12-20",
- "phone_number": "+441234567890",
- "email": "davidbrown@gmail.com",
- "nationality": "GBR",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "officer_type": "manager"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "bank_accounts": [
- "ba-bc00c28f-b3fc-42b7"
], - "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
Update an organisational investor. The system will update only the fields sent in the request. Field mentioned as Nullable can be deleted by updating those values with null. Sending empty values for fields will not update the fields.
investor_id required | string Investor ID |
x-api-key required | string ApiSecretKey |
organisation_name | string <= 100 characters |
kyb_status | string Default: "not_started" Enum: "submitted" "kyb_failed_error" "pending" "clear" "not_started" Know Your Business Status of the organisation |
reference_version required | integer |
dealing_status | string Default: "inactive" Enum: "inactive" "active" Status of the organisation |
Array of objects Contact details of any individual officer of the organisation | |
object Correspondence/ Registered address of the organisation |
{- "organisation_name": "ABC Company Pvt Ltd",
- "kyb_status": "not_started",
- "reference_version": 2,
- "dealing_status": "inactive",
- "corporate_officers": [
- {
- "title": "Mr.",
- "first_name": "David",
- "last_name": "Brown",
- "date_of_birth": "1990-12-20",
- "phone_number": "+441234567890",
- "email": "davidbrown@gmail.com",
- "nationality": "GBR",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "officer_type": "manager"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}
}
{- "investor_id": "org-XUT11265",
- "investor_type": "organisation",
- "organisation_name": "ABC Company Pvt Ltd",
- "status": "kyb_pending",
- "kyb_status": "not_started",
- "dealing_status": "inactive",
- "corporate_officers": [
- {
- "title": "Mr.",
- "first_name": "David",
- "last_name": "Brown",
- "date_of_birth": "1990-12-20",
- "phone_number": "+441234567890",
- "email": "davidbrown@gmail.com",
- "nationality": "GBR",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "officer_type": "manager"
}
], - "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "address_line_2": "2nd Lane",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "bank_accounts": [
- "ba-bc00c28f-b3fc-42b7"
], - "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
Pots allows a wealth manager to compartmentalise investments made by (or on behalf of) an investor to represent different savings goals, risk appetite and investment instructions (e.g. model portfolios). An Investor can have multiple pots for a financial product (e.g within the General Investment Account, one pot could be to target a house purchase goal whereas another pot could target savings for school fees etc.). Each pot consists of cash, investment product holdings, both cash and investments or nothing (empty pot - pending investments).
This end point also returns key information related to the pot (e.g. value, total holdings etc.) as well as transaction history for the pot.
Cash : investment_product_id
will be specified as cash
. For cash holdings, free_quantity
and free_value
will return the cash that is settled and available, while locked_quantity
and locked_value
returns the value of cash which is locked (i.e unsettled, ringfenced for a fee deduction etc.) and cannot be used.total_quantity
and total_value
will be the total of free and locked.
Investment Products : For investment product holdings, total_quantity
return the total number of units held of an investment product within the pot, locked-quantity
returns the total number of unit which are locked (e.g. ringfenced to be sold) and free-quantity
returns number of units available for trading. Value of the holdings are calculated using latest available price. So the formula to calculate the value of the investment products holdings will be quantity
*price
.
Cash : type : pending
,direction : in
(if cash is inbound) or out
(if cash is withdrawn - functionality not available yet).
Investment products : type : pending
,direction : in
(buy instruction) or out
(sell instruction).
Cash : type = archived
, direction= in
(if cash is inbound) or out
(if cash is withdrawn - functionality not available yet) and sub-type : "rejected" or "cancelled"
for a failed transaction, and sub-type = "confirmed"or "settled"
for a successful transaction.
Investment Products : type = archived
, direction= in
(buy instruction) or out
(sell instruction) and sub-type = "rejected"or "cancelled"
for a failed transaction, and sub-type = "confirmed"or "settled"
for a successful transaction.
This endpoint facilitates the creation of one or more pots for an investor or a group of investors for a selected financial product. A maximum of five pots can be created with a single request. For the creation of a new pot, either the account_id or investor_id must be provided—only one of these parameters should be included, based on the relevant financial product.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
investor_id | Array of strings This field should be populated only for financial_product_id: |
account_id | string This field should be populated only for financial_product_id: |
financial_product_id required | string Enum: "general_investment_product" "lisa_cash" "lisa_stocks" "sipp_accumulation" "sipp_fad" "stocks_isa" "treasury_management" "stocks_jisa" |
required | Array of objects Maximum of five pots |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b955",
- "investor_id": [
- "inv-XUT11265"
], - "financial_product_id": "sipp_accumulation",
- "pots": [
- {
- "pot_name": "Retirement Pot 1",
- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "pot_currency": "GBP",
- "status": "active"
}, - {
- "pot_name": "Retirement Pot 2",
- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "pot_currency": "CHF",
- "status": "active"
}
]
}
{- "status": "partially_successful",
- "investor_id": [
- "inv-XUT11265"
], - "financial_product_id": "sipp_accumulation",
- "results": [
- {
- "pot_id": "pot-GYQ5423100",
- "pot_name": "Retirement Pot 1",
- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "pot_currency": "GBP",
- "account_id": "SSISA0000000001",
- "status": "active",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-08T07:36:05.884Z",
- "success": true
}, - {
- "success": false,
- "message": "Value [CHF] for [pot_currency] is not valid"
}
]
}
Get all Investment Pots of the investor
investor_id required | string Investor ID |
financial_product_id | string Enum: "general_investment_product" "lisa_cash" "lisa_stocks" "sipp_accumulation" "sipp_fad" "stocks_isa" "treasury_management" "stocks_jisa" multiple financial product IDs as comma seperated string |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/pots/v1?investor_id=SOME_STRING_VALUE&financial_product_id=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "pots": [
- {
- "pot_id": "pot-GYQ5423100",
- "investor_id": [
- "inv-XUT11265"
], - "pot_name": "Retirement Pot",
- "financial_product_id": "general_investment_product",
- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "pot_currency": "GBP",
- "status": "active",
- "reference_version": 1,
- "account_id": "SSISA0000000001",
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
]
}
Get the current value of all the investor’s pots broken down by currency (including cash and investment product holdings), currencies or pots with no holdings will be excluded from the reponse.
investor_id required | string Investor ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/pots/v1/value?investor_id=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "total_values": [
- {
- "pot_currency": "GBP",
- "total_value": "400",
- "total_free_value": "250",
- "total_locked_value": "150",
- "total_cash_value": "300",
- "total_free_cash_value": "200",
- "total_locked_cash_value": "100",
- "total_settled_cash_position": "504.79",
- "pots": [
- {
- "pot_id": "pot-UKW3452850"
}
]
}
]
}
Get the pot values for all pots for a given date. This endpoint requires the Calculate daily holding snapshot job to be enabled to be able to retrieve the pot values for a given date. If no date is provided the current holdings snapshot will be provided.
date | string <date> When queried by the date, the response will return the pot value snapshot as of the given date (by the time 24:00). If the date is current operational date, the snapshot at the time of sending the API request will be sent. |
page_size | integer [ 1 .. 4000 ] Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is [4000]. Results are sorted descending order of the created date & time. |
page_number | integer >= 1 Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted descending order of the created date & time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/pots/v1/values?date=SOME_STRING_VALUE&page_size=SOME_INTEGER_VALUE&page_number=SOME_INTEGER_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "pots_values": [
- {
- "pot_id": "pot-UKW3452850",
- "pot_currency": "GBP",
- "total_value": "600",
- "total_free_value": "300",
- "total_locked_value": "300",
- "total_cash_value": "250",
- "total_free_cash_value": "50",
- "total_locked_cash_value": "200",
- "settled_cash_position": "334.87"
}
], - "next_page_available": true
}
Get a breakdown of all the holdings(cash and investment product holdings) of an investor organised by the pot they belong to.
investor_id required | string ID of the investor |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/pots/v1/holdings?investor_id=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "pots": [
- {
- "pot_id": "pot-GYQ5423100",
- "holdings": [
- {
- "investment_product_id": "F0573GBP1",
- "investment_product_name": "VG 500",
- "price": "257.7856",
- "price_date": "2022-12-29",
- "currency": "GBP",
- "total_quantity": "300",
- "total_value": "534.87",
- "free_quantity": "30",
- "free_value": "34",
- "locked_quantity": "270",
- "locked_value": "500.87",
- "average_book_cost": "34.89",
- "cost_of_holding": "876.98",
- "settled_cash_position": "56.90",
- "additional_external_details": { },
- "total_investment": "1231.21",
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "external_deposit_reference": "string",
- "deposit_reference": "string",
- "accrued_interest": "string",
- "compounded_interest": "string",
- "interest_credited": "string",
- "net_balance": "string",
- "interest_earned": "string",
- "frozen": false
}
]
}
]
}
Update an existing Pot. The system will update only the fields sent in the payload.Field mentioned as Nullable can be deleted by updating those values with null. Sending empty values for fields will not update the fields.
pot_id required | string Pot ID |
x-api-key required | string ApiSecretKey |
pot_name | string [ 1 .. 50 ] characters |
portfolio_template_id | string or null |
status | string Enum: "active" "inactive" |
reference_version required | integer |
{- "pot_name": "Retirement Pot",
- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "status": "active",
- "reference_version": 1
}
{- "pot_id": "pot-GYQ5423100",
- "investor_id": [
- "inv-XUT11265"
], - "pot_name": "Retirement Pot",
- "financial_product_id": "general_investment_product",
- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "pot_currency": "GBP",
- "status": "active",
- "reference_version": 1,
- "account_id": "SSISA0000000001",
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
pot_id required | string Pot ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/pots/v1/%7Bpot_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "pot_id": "pot-GYQ5423100",
- "investor_id": [
- "inv-XUT11265"
], - "pot_name": "Retirement Pot",
- "financial_product_id": "general_investment_product",
- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "pot_currency": "GBP",
- "status": "active",
- "reference_version": 1,
- "account_id": "SSISA0000000001",
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
Get the current value of the pot (including cash and investment product holdings)
pot_id required | string Pot ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/pots/v1/%7Bpot_id%7D/value \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "pot_id": "pot-UKW3452850",
- "pot_currency": "GBP",
- "total_value": "600",
- "total_free_value": "300",
- "total_locked_value": "300",
- "total_cash_value": "250",
- "total_free_cash_value": "50",
- "total_locked_cash_value": "200",
- "settled_cash_position": "334.87"
}
Get a breakdown of all the holdings of a pot (cash and investment product holdings)
pot_id required | string Pot ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/pots/v1/%7Bpot_id%7D/holdings \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "pot_id": "pot-GYQ5423100",
- "holdings": [
- {
- "investment_product_id": "F0573GBP1",
- "investment_product_name": "VG 500",
- "price": "257.7856",
- "price_date": "2022-12-29",
- "currency": "GBP",
- "total_quantity": "300",
- "total_value": "534.87",
- "free_quantity": "30",
- "free_value": "34",
- "locked_quantity": "270",
- "locked_value": "500.87",
- "average_book_cost": "34.89",
- "cost_of_holding": "876.98",
- "settled_cash_position": "56.90",
- "additional_external_details": { },
- "total_investment": "1231.21",
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "external_deposit_reference": "string",
- "deposit_reference": "string",
- "accrued_interest": "string",
- "compounded_interest": "string",
- "interest_credited": "string",
- "net_balance": "string",
- "interest_earned": "string",
- "frozen": false
}
]
}
Get a list of pending and archived transactions of the pot by date range. Only last 1000 records will be recieved if the result contain more that 1000 transactions. In that case, the pagination should be used.
pot_id required | string Pot ID |
from | string From timestamp for the query. This must be in ISO format. Eg. 2021-08-12T07:54:47.011Z. If not present the from is set to 2000-01-01T00:00:00.000Z |
to | string To timestamp for the query. This must be in ISO format. Eg. 2021-08-12T07:54:47.011Z. If not present the to is set to current time. |
sub_transaction_type | string Sub transaction type of the transactions to be retrieved from the API |
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/pots/v1/%7Bpot_id%7D/transactions?from=SOME_STRING_VALUE&to=SOME_STRING_VALUE&sub_transaction_type=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "pot_id": "pot-UKW3452850",
- "transactions": [
- {
- "transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8155",
- "created_at": "2023-01-27T05:45:56.839Z",
- "updated_at": "2023-01-27T05:45:56.839Z",
- "primary_transaction_type": "Contribution",
- "sub_transaction_type": "Lump sum",
- "investment_product_id": "cash",
- "transaction_value": "20000",
- "settlement_date": "2023-01-27",
- "currency": "GBP",
- "direction": "in",
- "type": "archived",
- "sub_type": "settled",
- "origin": "api"
}
], - "next_page_available": true
}
ⓘ This feature is currently in BETA mode
This endpoint enables users to send an API request to transfer cash holdings or units of an investment products between two pots within an account created under financial products, SIPP Accumulation, LISA Stocks and Shares, LISA Cash, ISA Stocks and Shares and GIA.
x-api-key required | string ApiSecretKey |
request_id required | string Unique request ID to ensure idempotency. (ex: UUID) |
source_pot_id required | string Pot ID from which the money should be transferred out. |
destination_pot_id required | string Pot ID to which money should be transferred in. |
investment_product_id required | string Investment product that should be transferred from source pot to destination pot. For cash transfers, indicate the investment product as cash. |
amount required | string Value of cash holdings or number of units of an investment product holdings to transfer. |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b848",
- "source_pot_id": "pot-UKW3452850",
- "destination_pot_id": "pot-UKW3452850",
- "investment_product_id": "cash",
- "amount": "8000.00"
}
{- "transfer_id": "INT-ABCD123456",
- "source_pot_id": "pot-UKW3452850",
- "destination_pot_id": "pot-UBW627935",
- "investment_product_id"": "cash",
- "amount": "8000",
- "status": "success",
- "transactions": [
- {
- "transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8155",
- "pot_id": "pot-UBW627935",
- "created_at": "2023-01-27T05:45:56.839Z",
- "updated_at": "2023-01-27T05:45:56.839Z",
- "investment_product_id": "cash",
- "transaction_value": "8000",
- "primary_transaction_type": "Transfers",
- "sub_transaction_type": "Internal Transfer - Cash In",
- "settlement_date": "2023-01-27",
- "currency": "GBP",
- "type": "archived",
- "sub_type": "settled",
- "transfer_id": "INT-ABCD123456",
- "linked_transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8156"
}, - {
- "transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8156",
- "pot_id": "pot-UKW3452850",
- "created_at": "2023-01-27T05:45:56.839Z",
- "updated_at": "2023-01-27T05:45:56.839Z",
- "primary_transaction_type": "Transfers",
- "sub_transaction_type": "Internal Transfer - Cash Out",
- "investment_product_id": "cash",
- "transaction_value": "8000",
- "settlement_date": "2023-01-27",
- "currency": "GBP",
- "direction": "out",
- "type": "archived",
- "sub_type": "settled",
- "origin": "api",
- "transfer_id": "INT-AAAANNNNNN",
- "linked_transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8155"
}
]
}
ⓘ This feature is currently in BETA mode
This endpoint enables users to retrieve information of inter pot transfer requests.
transfer_id | string Example: transfer_id=INT-AAAA123456 ID generated to uniquely identify an accepted internal transfer request. Single transfer_id is expected. Multiple id's are not allowed. |
page_size | string Example: page_size=10 Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. Results are sorted decending order of the created date & time. |
page_number | string Example: page_number=3 Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
sort | string Default: "desc" Enum: "asc" "desc" Example: sort=asc Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/pots/v1/inter-pot-transfer?transfer_id=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "inter_pot_transfers": [
- {
- "trasnfer_id": "INT-AAAA123456",
- "source_pot_id": "pot-UKW3452850",
- "destination_pot_id": "pot-UBW627935",
- "investment_product_id": "cash",
- "value": "8000.00",
- "status": "success",
- "transactions": [
- {
- "transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8155",
- "created_at": "2023-01-27T05:45:56.839Z",
- "updated_at": "2023-01-27T05:45:56.839Z",
- "pot_id": "pot-UBW627935",
- "primary_transaction_type": "Transfer",
- "sub_transaction_type": "Internal Transfer - Cash In",
- "investment_product_id": "cash",
- "transaction_value": "8000",
- "settlement_date": "2023-01-27",
- "currency": "GBP",
- "direction": "in",
- "type": "archived",
- "sub_type": "settled",
- "origin": "api",
- "parent_transaction_id": "INT-AAAANNNNNN",
- "linked_transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8156"
}, - {
- "transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8156",
- "created_at": "2023-01-27T05:45:56.839Z",
- "updated_at": "2023-01-27T05:45:56.839Z",
- "pot_id": "pot-UKW3452850",
- "primary_transaction_type": "Transfer",
- "sub_transaction_type": "Internal Transfer - Cash Out",
- "investment_product_id": "cash",
- "transaction_value": "8000",
- "settlement_date": "2023-01-27",
- "currency": "GBP",
- "direction": "out",
- "type": "archived",
- "sub_type": "settled",
- "origin": "api",
- "trasnfer_id": "INT-AAAANNNNNN",
- "linked_transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8155"
}
]
}, - {
- "trasnfer_id": "INT-AAAANNNNNN",
- "source_pot_id": "pot-UKW3452850",
- "destination_pot_id": "pot-UBW627935",
- "investment_product_id": "cash",
- "value": "8000.00",
- "status": "failed",
- "reason": "Insufficient holdings in pot [pot-UKW3452850]"
}
], - "next_page_available": true
}
A portfolio template captures how an investor’s cash (once transferred to a pot) should be automatically invested by the system. A portfolio template consists of a set of investment products and the ratios in which these products must be bought, once cleared cash is available to invest.
For example, a portfolio template ‘PT1’ has the following template
Investment Product | Ratio |
---|---|
Investment Product A | 20% |
Investment Product B | 30% |
Investment Product C | 50% |
If GBP 100 is transferred to a pot linked to Portfolio template PT1, the following buy orders will be triggered
Portfolio Templates can be created by the Wealth Manger (generic set of portfolio templates created in the system and a single template will be assigned to an Investor’s pot based on suitability - e.g. robo advisory)
The ratios of investment products within a portfolio template must add up to a 100% - if this is not the case, the system will reject the portfolio creation or update.
Once cleared cash is available in a pot, the system can be instructed to trigger investment product buy requests based on the portfolio template linked to the pot.
Get all the portfolio templates
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/portfolio-templates/v1/?page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "portfolio_templates": [
- {
- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "portfolio_name": "PFT5689",
- "reference_version": 1,
- "ratios": [
- {
- "investment_product_id": "ETF069GBP",
- "ratio": "60"
}, - {
- "investment_product_id": "BND058GBP",
- "ratio": "40"
}
], - "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
], - "next_page_available": true
}
x-api-key required | string ApiSecretKey |
portfolio_name required | string [ 3 .. 50 ] characters User given identifier for the portfolio name. The first character must be a letter, the last character can be a number, letter, or underscore, and other characters can be letters, numbers, spaces, underscores, or dashes. |
required | Array of objects Percentages allocated to different investment products within the portfolio template. |
{- "portfolio_name": "PFT5689",
- "ratios": [
- {
- "investment_product_id": "ETF069GBP",
- "ratio": "60"
}, - {
- "investment_product_id": "BND058GBP",
- "ratio": "40"
}
]
}
{- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "portfolio_name": "PFT5689",
- "reference_version": 1,
- "ratios": [
- {
- "investment_product_id": "ETF069GBP",
- "ratio": "60"
}, - {
- "investment_product_id": "BND058GBP",
- "ratio": "40"
}
], - "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
portfolio_template_id required | string Portfolio ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/portfolio-templates/v1/%7Bportfolio_template_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "portfolio_name": "PFT5689",
- "reference_version": 1,
- "ratios": [
- {
- "investment_product_id": "ETF069GBP",
- "ratio": "60"
}, - {
- "investment_product_id": "BND058GBP",
- "ratio": "40"
}
], - "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
portfolio_template_id required | string Portfolio ID |
x-api-key required | string ApiSecretKey |
portfolio_name | string [ 3 .. 50 ] characters User given identifier for the portfolio name. The first character must be a letter, the last character can be a number, letter, or underscore, and other characters can be letters, numbers, spaces, underscores, or dashes. |
Array of objects Percentages allocated to different investment products within the portfolio template. | |
reference_version required | integer Must match with the reference version in the server. |
{- "portfolio_name": "PFT5689",
- "ratios": [
- {
- "investment_product_id": "ETF069GBP",
- "ratio": "60"
}, - {
- "investment_product_id": "BND058GBP",
- "ratio": "40"
}
], - "reference_version": 1
}
{- "portfolio_template_id": "pft-c60c9472-6668-4f7a-aa69",
- "portfolio_name": "PFT5689",
- "reference_version": 1,
- "ratios": [
- {
- "investment_product_id": "ETF069GBP",
- "ratio": "60"
}, - {
- "investment_product_id": "BND058GBP",
- "ratio": "40"
}
], - "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
Financial Products are the tax wrapper investment vehicles offered by the Wealth Manager (e.g. General Investment Accounts, Stocks and Shares ISAs, SIPPs, LISAs etc.).
The Financial Products endpoint returns all financial products and their configurations setup by the Wealth Manager via the Admin UI.
Returns all the financial products setup for the tenant in an array
product_types | string Enum: "general_investment_product" "lisa_cash" "lisa_stocks" "sipp_accumulation" "sipp_fad" "stocks_isa" "treasury_management" "stocks_jisa" multiple product types as a comma seperated string |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/financial-products/v1?product_types=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "financial_products": [
- {
- "financial_product_id": "stocks_isa",
- "product_type": "stocks_isa",
- "name": "Acorn ISA",
- "availability": [
- "All clients"
], - "additional_cash_currencies": [
- "EUR",
- "USD"
], - "dividend_options": [
- "Auto reinvest always",
- "Offer reinvest option"
], - "investment_preferences": {
- "minimum_one_off_investment": "1000"
}, - "withdrawal_preferences": {
- "minimum_one_off_withdrawal": "1000"
}, - "interest_preferences": {
- "pay_interest": "Yes",
- "interest_accrual_basis": "Daily",
- "interest_payment_frequency": "Daily"
}, - "max_annual_ISA_subscription_limit": "20000",
- "flexible": "NO",
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
]
}
Investment products (e.g. mutual funds, ETFs, stocks etc.) are bought and sold by the investor (or by the wealth manager on the investor’s behalf).
The Investment Products endpoint returns all the investment products that are offered by the wealth manager, as well as the current market price. The wealth manager must specify the universe of supported investment products via the Admin UI.
Returns all the investment products configured for this tenancy. Request can be filtered by status to return all active
or inactive
investment products
status | string Enum: "active" "inactive" status of investment product. If empty will return all investment products. |
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 3000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/investment-products/v1?status=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "investment_products": [
- {
- "investment_product_id": "MAX2854",
- "asset_type": "funds",
- "status": "active",
- "name": "Canada Life Canadian Growth T5",
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
], - "next_page_available": true
}
Returns current prices of all the investment products configured for this tenancy
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 15000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
status | string Enum: "active" "inactive" status of investment product. If empty will return all investment products. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/investment-products/v1/current-prices?page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&status=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "investment_product_unit_prices": [
- {
- "investment_product_id": "FUND345",
- "current_price": "45.78",
- "currency": "GBP",
- "price_on_date": "2019-08-24"
}
], - "next_page_available": true
}
Returns the requested investment product
investment_product_id required | string Investment Product ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/investment-products/v1/%7Binvestment_product_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "investment_product_id": "MAX2854",
- "id_type": "ISIN",
- "name": "Canada Life Canadian Growth T5",
- "asset_type": "funds",
- "asset_sub_type": "Canadian Open End",
- "currency": "CAD",
- "pricing_method": "NAV",
- "fund_asset_type": "Mutual Funds",
- "fund_code": "MAX2854",
- "applicable_financial_products": [
- "gia"
], - "settlement_date_offset": 3,
- "status": "active",
- "close_price": "12.745",
- "close_price_on_date": "2021-09-03",
- "additional_provider_details": { },
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
Returns current price of the requested investment product
investment_product_id required | string Investment Product ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/investment-products/v1/%7Binvestment_product_id%7D/current-price \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "investment_product_id": "FUND345",
- "current_price": "45.78",
- "currency": "GBP",
- "price_on_date": "2019-08-24"
}
Cash Investment Products (e.g., term deposits, instant access accounts, notice accounts, etc.) provide an opportunity for individuals to invest their cash securely while earning interest offered by a financial institution (e.g., banks). These products are designed to cater to different savings needs of the users.
The Cash Investment Products endpoint provides access to all available savings products offered by a counterparty, which includes details of their interest rates, interest calculation details, availability and terms and conditions. The wealth manager defines the range of supported cash investment products via the Admin UI.
This endpoint enables users to retrieve details of cash investment products.
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 3000. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
status | string Enum: "active" "inactive" "discontinued" Status of product |
asset_sub_type | string Enum: "term_deposit" "notice_deposit" "instant_deposit" Asset sub type of the product |
counterparty | string The party who offers the investment product |
enabled_third_parties | string |
enabled_account_types | string Enum: "individual" "power_of_attorney" "court_of_protection" "sipp" "ssas" "trust" "business" "charity" "partnership" "sole_trader" |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/cash-investment-products/v1?page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE&status=SOME_STRING_VALUE&asset_sub_type=SOME_STRING_VALUE&counterparty=SOME_STRING_VALUE&enabled_third_parties=SOME_STRING_VALUE&enabled_account_types=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "cash_investment_products": [
- {
- "asset_type": "cash_investments",
- "asset_sub_type": "term_deposit",
- "investment_product_id": "CASHINV-AHY58878",
- "investment_product_name": "HSBC 3 months term deposit",
- "counterparty": "CPY-AHY58878",
- "currency": "GBP",
- "notice_period": 1,
- "maturity_period": {
- "count": 3,
- "unit": "months"
}, - "interest_type": "fixed",
- "interest_rates": [
- {
- "gross_rate": "6",
- "net_rate": "5",
- "aer_gross": "4",
- "aer_net": "3",
- "start_date": "2024-07-08T07:36:05.884Z",
- "end_date": "2024-09-08T07:36:05.884Z"
}
], - "interest_accrual_frequency": "daily",
- "interest_compound_frequency": "monthly",
- "interest_credit_frequency": "monthly",
- "interest_credit_instruction": "credit_to_pot",
- "minimum_investment": "10000",
- "maximum_investment": "100000",
- "minimum_balance": "1000",
- "top_up_configurations": {
- "top_up_allowed": false,
- "minimum_top_up_investment": "string"
}, - "revenue_mode": {
- "interest_share_percentage": "0.5",
- "billing_percentage": "1"
}, - "withdrawal_type": "none",
- "enabled_third_parties": [
- "WL-GHY56679"
], - "enabled_account_types": [
- "individual",
- "business"
], - "flags": {
- "is_shariah_compliant": true,
- "only_uk_residents": true
}, - "status": "active",
- "activation_date": "2024-09-08T07:36:05.884Z",
- "inactivation_date": "2024-10-08T07:36:05.884Z",
- "discontinuation_date": "2024-11-08T07:36:05.884Z",
- "attachments": [
- {
- "file_id": "FILE-MHS20094",
- "file_name": "Terms and conditions",
- "tags": [
- "application",
- "rules"
]
}
], - "created_at": "2024-09-08T07:36:05.884Z",
- "updated_at": "2024-09-10T07:36:05.884Z"
}
], - "next_page_available": true
}
Returns the requested cash investment product.
investment_product_id required | string Cash Investment Product ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/cash-investment-products/v1/%7Binvestment_product_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "asset_type": "cash_investments",
- "asset_sub_type": "term_deposit",
- "investment_product_id": "CASHINV-AHY58878",
- "investment_product_name": "HSBC 3 months term deposit",
- "counterparty": "CPY-AHY58878",
- "currency": "GBP",
- "notice_period": 1,
- "maturity_period": {
- "count": 3,
- "unit": "months"
}, - "interest_type": "fixed",
- "interest_rates": [
- {
- "gross_rate": "6",
- "net_rate": "5",
- "aer_gross": "4",
- "aer_net": "3",
- "start_date": "2024-07-08T07:36:05.884Z",
- "end_date": "2024-09-08T07:36:05.884Z"
}
], - "interest_accrual_frequency": "daily",
- "interest_compound_frequency": "monthly",
- "interest_credit_frequency": "monthly",
- "interest_credit_instruction": "credit_to_pot",
- "minimum_investment": "10000",
- "maximum_investment": "100000",
- "minimum_balance": "1000",
- "top_up_configurations": {
- "top_up_allowed": false,
- "minimum_top_up_investment": "string"
}, - "revenue_mode": {
- "interest_share_percentage": "0.5",
- "billing_percentage": "1"
}, - "withdrawal_type": "none",
- "enabled_third_parties": [
- "WL-GHY56679"
], - "enabled_account_types": [
- "individual",
- "business"
], - "flags": {
- "is_shariah_compliant": true,
- "only_uk_residents": true
}, - "status": "active",
- "activation_date": "2024-09-08T07:36:05.884Z",
- "inactivation_date": "2024-10-08T07:36:05.884Z",
- "discontinuation_date": "2024-11-08T07:36:05.884Z",
- "attachments": [
- {
- "file_id": "FILE-MHS20094",
- "file_name": "Terms and conditions",
- "tags": [
- "application",
- "rules"
]
}
], - "created_at": "2024-09-08T07:36:05.884Z",
- "updated_at": "2024-09-10T07:36:05.884Z"
}
The Payments endpoint allows you to put cash into a specific pot in your account by sending a payment intent. This intent must capture the following information regarding the payment:
amount
to collect and the currency
payment_type
(card payments, electronic fund transfers etc.).pot_id
).purpose: "cash"
)purpose: "invest"
and investment_instructions
not populated)purpose: "invest"
and investment_instructions
populated). If the pot has a portfolio attached, then the priority will be given to investment instructions. If the investment instructions apply only for a propotion of money coming in, then the rest will be added as cash.Additionaly, if the service_provider
is given as "truelayer"
accept an extra object service_provider_params
where you have to provide the bank_account_id
as a key-value pair and you will recieve this object in response including the fields, bank_account_id
, payment_intent_id
and hpp_url
. (e.g "service_provider_params: {"bank_account_id": "ba-82faf049...", "payment_intent_id: 91aa9de...", "hpp_url":"https://..."}"
).
For "stripe"
, in the response, you will receive the payment_intent_id
, client_secret
and publishable_key
inside that additional object with the value you used for payment_type
as its field name. (e.g. "service_provider_params": {"payment_intent_id: 91aa9de...", "client_secret": "pi_XXXXX", "publishable_key": "pk_test_XXXXX", .....}
).
These values will be used with the client library for each payment call for the following purposes.
payment_intent_id
- to uniquely identify your payment intentclient_secret
- The client secret of the PaymentIntent. Required if a publishable key is used to retrieve the source.publishable_key
- to uniquely identify your payment service accounthpp_url
- The redirect URL for proceed with bank payment (only for Truelayer)Returns all the Payments setup for the tenant in an array.
Payments can be filtered by the pot_id
, payment_type
, purpose
and service_provider
when retrieving payments.
payment_type | string Payment type of the payment to be retrieved from the API (electronic_fund_transfer, card, direct_debit, manual, reversal) |
service_provider | string Service provider of the payment to be retrieved from the API (truelayer, stripe, gocardless, none) |
purpose | string Purpose of the payment to be retrieved from the API (cash, invest) |
sub_transaction_type | string Sub transaction types of the payments to be retrieved from the API. Can give multiple sub transaction types as comma separated values. (ex- Lump sum,Regular contribution) |
investor_id | string investor_id of the payments to be retrieved from the API. Can give multiple investor IDs as comma separated values. (ex- inv-XLZ8990,inv-RFT6758) |
status | string status of the payments to be retrieved from the API. Can give multiple statuses as comma separated values. (ex- succeeded,pending_confirmation) |
source_id | string source_id of the payments to be retrieved from the API. Can give multiple source IDs as comma separated values. (ex- cem-BGJ20491,cem-TGY90961) |
contribution_id | string contribution_id of the payments to be retrieved from the API. Can give multiple contribution IDs as comma separated values. (ex- BCV-GH-BUH2965,RCB-GC-RGH2065) |
batch_id | string batch_id of the payments to be retrieved from the API. |
pot_id | string Pot ID |
external_transaction_reference | string A unique reference to the transaction in the external system |
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
payment_reference | string |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/payments/v1/?payment_type=SOME_STRING_VALUE&service_provider=SOME_STRING_VALUE&purpose=SOME_STRING_VALUE&sub_transaction_type=SOME_STRING_VALUE&investor_id=SOME_STRING_VALUE&status=SOME_STRING_VALUE&source_id=SOME_STRING_VALUE&contribution_id=SOME_STRING_VALUE&batch_id=SOME_STRING_VALUE&pot_id=SOME_STRING_VALUE&external_transaction_reference=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE&payment_reference=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "payments": [
- {
- "transaction_id": "75d65d2b-60c6-45ad-979d-0e3e403e6c7e",
- "investor_id": [
- "inv-XUT11333"
], - "amount": "20000",
- "currency": "GBP",
- "status": "pending_confirmation",
- "pot_id": "pot-UKW3452900",
- "payment_type": "manual",
- "service_provider": "none",
- "sub_transaction_type": "Employer contribution",
- "purpose": "cash",
- "payment_reference": "ABC00030E3A4X",
- "origin": "api"
}
], - "next_page_available": true
}
Create a new Single Payment Intent for a pot. Applicable payment types and service providers may vary based on different payment paths and financial products.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
amount required | string Amount as a numeral string with two decimal points. (ex: 1500.00). Minimum allowed amount is 1.00 |
pot_id required | string |
payment_type required | string Enum: "card" "electronic_fund_transfer" "manual" |
service_provider required | string Enum: "stripe" "truelayer" "none" |
object Parameters based on prerequisites of the selected provider | |
external_transaction_reference | string A unique reference to the transaction in the external system |
currency | string Must be a currency configured for the Pot |
sub_transaction_type | string Enum: "Lump sum" "Lump sum - non relievable" "Employer contribution" "Lump sum - third party" Junior Stocks and Shares ISA pots only accept "Lump sum" payments from 16-17 year old investors or "Lump sum - third party" payments from all investors. For SIPP Accumulation pots, one of the following values must be provided: "Lump sum," "Lump sum - non relievable," or "Employer contribution." All other financial products accept "Lump sum" or if the value is not provided, the system will automatically apply "Lump sum". |
source_id | string Unique ID of the employer or third-party payer. Required for employer contributions. |
purpose required | string Enum: "cash" "invest" |
Array of objects Mandatory only if purpose:"invest" and pot does not have a portfolio template attached (e.g. An execution-only or direct-to-consumer wealth manager). | |
payment_reference | string An external reference associated with the payment |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "amount": "2000.00",
- "pot_id": "pot-UKW3452900",
- "payment_type": "manual",
- "service_provider": "none",
- "currency": "GBP",
- "sub_transaction_type": "Employer contribution",
- "source_id": "cem-ASP43560",
- "purpose": "invest",
- "investment_instructions": [
- {
- "investment_product_id": "isa_1223931892",
- "quantity": "300"
}, - {
- "investment_product_id": "isa_9913091898",
- "quantity": "500"
}
], - "payment_reference": "ABC00030E3A4X"
}
{- "transaction_id": "5badc696-5591-485f-9d7f-428b9b8460c2",
- "amount": "2000.00",
- "currency": "GBP",
- "status": "pending_confirmation",
- "pot_id": "pot-UKW3452900",
- "payment_type": "manual",
- "service_provider": "none",
- "sub_transaction_type": "Employer contribution",
- "source_id": "cem-ASP43560",
- "purpose": "invest",
- "investment_instructions": [
- {
- "investment_product_id": "isa_1223931892",
- "quantity": "300"
}, - {
- "investment_product_id": "isa_9913091898",
- "quantity": "500"
}
], - "payment_reference": "ABC00030E3A4X"
}
Get Payment by transaction ID
transaction_id required | string Transaction ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/payments/v1/%7Btransaction_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "transaction_id": "75d65d2b-60c6-45ad-979d-0e3e403e6c7e",
- "investor_id": [
- "inv-XUT11333"
], - "amount": "20000",
- "currency": "GBP",
- "status": "pending_confirmation",
- "pot_id": "pot-UKW3452900",
- "payment_type": "manual",
- "service_provider": "none",
- "sub_transaction_type": "Employer contribution",
- "purpose": "cash",
- "payment_reference": "ABC00030E3A4X",
- "origin": "api"
}
Enables users to update the status of an existing payment. Users can move the payments that are in processing
state to succeeded
,cancelled
or failed
status using this endpoint.
transaction_id required | string Unique identifier for the transaction |
x-api-key required | string ApiSecretKey |
status required | string Enum: "succeeded" "cancelled" "failed" |
reason | string <= 100 characters This field is populated when the status is failed or cancelled, with reason for failure or cancellation |
{- "status": "succeeded"
}
{- "transaction_id": "04d3fd76-2ea9-4afe-9aeb-0acc21fff8a3",
- "amount": "2000.00",
- "currency": "GBP",
- "status": "succeeded",
- "pot_id": "pot-UKW3452900",
- "payment_type": "manual",
- "service_provider": "none",
- "sub_transaction_type": "Employer contribution",
- "origin": "api",
- "external_transaction_reference": "Ref_1202",
- "purpose": "invest",
- "investment_instructions": [
- {
- "investment_product_id": "isa_1223931892",
- "quantity": "300"
}, - {
- "investment_product_id": "isa_9913091898",
- "quantity": "500"
}
], - "payment_reference": "ABC00030E3A4X"
}
This endpoint enables users to create a series of payment instructions under a single batch. It will streamlines the process of disbursing funds to multiple investors (employees) and create single payment intents for each employee based on the amount ,currency and purpose provided by the employer via this request.
A single payment batch can contain up to 600 individual payments. The payments will be evaluated and processed once the request is accepted and the status of payments can be retrieved via payment batch GET end points. If at least one payment fails validations, then the entire payment batch will be rejected. The failure reasons will be included in GET end points in this instance.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
source_type | string Enum: "workplace_employer" "third_party_payer" Type of the contributor of the payment. Required if the source_id is populated in any level. |
source_id | string Unique ID of the employer. Required if the source_type is "workplace_employer". |
currency required | string Must be a currency configured for the tenant. Currency of the payments. |
amount required | string Amount as a numeral string with two decimal points. (ex: 1500.00). Should be equal to the total aggregated amount of individual payments in the batch. |
payment_type required | string Value: "manual" |
batch_payment_reference | string Unique reference of the batch payment |
required | Array of objects Information of individual payment of the bulk payments request. |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "source_type": "workplace_employer",
- "source_id": "wem-RHZ59189",
- "currency": "GBP",
- "amount": "8000.00",
- "payment_type": "manual",
- "batch_payment_reference": "REF189393",
- "payments": [
- {
- "payment_id": "pid-payrol053124-emp001",
- "pot_id": "pot-ABC3452850",
- "amount": "2000.00",
- "sub_transaction_type": "Employer contribution",
- "purpose": "invest",
- "investment_instructions": [
- {
- "investment_product_id": "ip_1223931892",
- "quantity": "300"
}, - {
- "investment_product_id": "ip_9913091898",
- "quantity": "500"
}
]
}, - {
- "payment_id": "pid-payrol053124-emp002",
- "pot_id": "pot-UKW3452850",
- "amount": "3000.00",
- "sub_transaction_type": "Lump sum",
- "purpose": "invest"
}, - {
- "payment_id": "pid-payrol053124-emp003",
- "pot_id": "pot-SDF4452861",
- "amount": "3000.00",
- "sub_transaction_type": "Lump sum",
- "purpose": "cash"
}
]
}
{- "batch_id": "BULKPAY-AHYL8878",
- "source_type": "workplace_employer",
- "source_id": "wem-RHZ59189",
- "currency": "GBP",
- "amount": "8000.00",
- "payment_type": "manual",
- "status": "pending",
- "batch_payment_reference": "REF189393",
- "payments": [
- {
- "payment_id": "pid-payrol053124-emp001",
- "pot_id": "pot-ABC3452850",
- "amount": "2000.00",
- "sub_transaction_type": "Employer contribution",
- "purpose": "invest",
- "investment_instructions": [
- {
- "investment_product_id": "ip_1223931892",
- "quantity": "300"
}, - {
- "investment_product_id": "ip_9913091898",
- "quantity": "500"
}
]
}, - {
- "payment_id": "pid-payrol053124-emp002",
- "pot_id": "pot-UKW3452850",
- "amount": "3000.00",
- "sub_transaction_type": "Lump sum",
- "purpose": "invest"
}, - {
- "payment_id": "pid-payrol053124-emp003",
- "pot_id": "pot-SDF4452861",
- "amount": "3000.00",
- "sub_transaction_type": "Lump sum",
- "purpose": "cash"
}
]
}
This endpoint enables users to retrieve details of payment batches.
created_date | string Date the payment batch was created. Should be on YYYY-MM-DD format |
status | string Enum: "pending" "payments_creation_failed" "payments_created" "payments_settlement_in_progress" "payments_settled" "payments_partially_settled" "payments_settlement_failed" Status of payment batch. One or more of the statuses defined for a payment batch. Multiple statuses can be provided in a single request |
include_details | string Default: true Enum: "true" "false" Decide whether to retrieve all batch payments with information or only batch_id values of payment batches |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/bulk-payments/v1/?created_date=SOME_STRING_VALUE&status=SOME_STRING_VALUE&include_details=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "payment_batches": [
- {
- "batch_id": "BULKPAY-AHYL8877",
- "source_id": "wem-RHZ59189",
- "currency": "GBP",
- "amount": "8000.00",
- "payment_type": "manual",
- "status": "payments_settlement_failed"
}, - {
- "batch_id": "BULKPAY-AHYL8878",
- "source_id": "wem-ASP43561",
- "currency": "GBP",
- "amount": "9000.00",
- "payment_type": "manual",
- "status": "pending",
- "batch_payment_reference": "REF189393"
}, - {
- "batch_id": "BULKPAY-AHYL8879",
- "source_id": "wem-ASP43562",
- "currency": "GBP",
- "amount": "10000.00",
- "payment_type": "manual",
- "status": "payments_creation_failed",
- "erroneous_payments": [
- {
- "payment_id": "pid-payrol053124-emp001",
- "error": "Invalid sub_transaction_type"
}
]
}
]
}
This endpoint enables users to retrieve information of a payment batch using the batch_id
.
batch_id required | string Batch ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/bulk-payments/v1/%7Bbatch_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "batch_id": "BULKPAY-AHYL8879",
- "source_id": "wem-ASP43562",
- "currency": "GBP",
- "amount": "10000.00",
- "payment_type": "manual",
- "status": "payments_partially_settled",
- "batch_payment_reference": "REF189393",
- "source_type": "workplace_employer",
- "payments": [
- {
- "transaction_id": "8tgdz796-5501-48y6-6d7f-125b9g5460u2",
- "external_payment_id": "pid-payrol053124-emp001",
- "pot_id": "pot-GEW3852051",
- "source_id": "cem-HSY43667",
- "batch_id": "BULKPAY-FRTL0575",
- "amount": "100.00",
- "sub_transaction_type": "Employer contribution",
- "currency": "GBP",
- "payment_type": "Manual",
- "service_provider": "none",
- "status": "processing",
- "purpose": "cash"
}, - {
- "transaction_id": "5badc696-5591-485f-9d7f-428b9b8460c2",
- "external_payment_id": "pid-payrol0538924-emp001",
- "pot_id": "pot-UKW3452850",
- "batch_id": "BULKPAY-AHYL8879",
- "amount": "100.00",
- "sub_transaction_type": "Lump sum",
- "currency": "GBP",
- "payment_type": "Manual",
- "service_provider": "none",
- "status": "succeeded",
- "purpose": "invest",
- "investment_instructions": [
- {
- "investment_product_id": "isa_1223931892",
- "quantity": "300"
}, - {
- "investment_product_id": "isa_9913091898",
- "quantity": "500"
}
]
}
]
}
The recurring contribution endpoints allow a tenant to manage their investors regular contribution requests.
Returns all the recurring contributions set up for investors in an array.
Recurring Contributions can be requested using filters contribution_id
, pot_id
, investor_id
, payment_type
, sub_transaction_type
, financial_product_id
and status
or a combination of these filters.
contribution_id | string Contribution ID |
pot_id | string Pot ID |
financial_product_id | string Financial Product ID |
investor_id | string Investor ID |
payment_type | string Enum: "direct_debit" "manual" Payment type of the payment to be retrieved from the API |
sub_transaction_type | string Enum: "Regular contribution" "Regular contribution - non relievable" "Regular contribution - Employer" Sub Transaction Type of the recurring contribution |
status | string Enum: "Pending" "Active" "Finished" "Rejected" "Paused" "Cancelled" Status of the recurring contribution |
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/recurring-contributions/v1?contribution_id=SOME_STRING_VALUE&pot_id=SOME_STRING_VALUE&financial_product_id=SOME_STRING_VALUE&investor_id=SOME_STRING_VALUE&payment_type=SOME_STRING_VALUE&sub_transaction_type=SOME_STRING_VALUE&status=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "recurring_contributions": [
- {
- "contribution_id": "RCB-GC-AB24DE7",
- "contribution_name": "Contributions to SIPP",
- "pot_id": "pot-UKW3452900",
- "financial_product_id": "sipp_accumulation",
- "investor_id": "inv-XUT11333",
- "amount": "2000.00",
- "sub_transaction_type": "Regular contribution - Employer",
- "currency": "GBP",
- "payment_type": "direct_debit",
- "service_provider": "gocardless",
- "purpose": "invest",
- "investment_instructions": [
- {
- "investment_product_id": "isa_1223931892",
- "quantity": "300"
}, - {
- "investment_product_id": "isa_9913091898",
- "quantity": "500"
}
], - "source_id": "cem-ASP43560",
- "payment_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2027-04-02"
}, - "service_provider_params": {
- "status": "Subscription created",
- "authorization_reference": "MD000VDMMYGD0T",
- "contribution_reference": "SB000A6A5EVJHE",
- "customer_reference": "CU000Y5VVH7TDQ",
- "request_id": "BRQ0004CZJA19GF",
- "reason": "Paid out",
}, - "status": "Active",
- "next_payment_dates": [
- "2023-04-16",
- "2023-04-30"
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "reason": "string",
- "reference_version": 1
}
], - "next_page_available": true
}
Create a new recurring payment for an investor pot to manage and trigger payments on a pre-defined schedule. Recurring payments can be set up either through a chosen service provider or managed manually by the system.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
contribution_name required | string <= 100 characters User given identifier for the contribution |
pot_id required | string Pot ID of investor to direct the payment |
financial_product_id required | string Financial Product ID |
investor_id required | string Investor ID of the investor making the contribution. For a joint pot, Investor ID of the party making contribution should be included. |
amount required | string Amount as a numeral string with two decimal points. (ex: 1500.00) Should be greater than or equal to the minimum investment for the financial product. |
sub_transaction_type required | string Enum: "Regular contribution" "Regular contribution - non relievable" "Regular contribution - Employer" Sub transaction type for recurring contribution. Regular contribution - non relievable and Regular contribution - Employer are only allowed for pots linked to SIPP Accumulation product type |
currency required | string Must be a currency configured for the Pot |
payment_type required | string Enum: "direct_debit" "manual" Type of payment. Select “manual” to manage payments through the system without a service provider. |
service_provider required | string Enum: "gocardless" "none" Service provider managing the recurring payment subscription or select “none“ to manage payments through the system without a service provider. |
purpose required | string Enum: "cash" "invest" invest option is allowed only if investment_instructions given or a portfolio is attached, if not the purpose should be cash. |
Array of objects Mandatory only if purpose:"invest" and pot does not have a portfolio template attached (e.g. An execution-only or direct-to-consumer wealth manager). | |
source_id | string Required only for payments intents for employer contributions made towards SIPP Accumulation Products |
required | object Parameters based on payment schedule |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "contribution_name": "Contributions to SIPP",
- "pot_id": "pot-UKW3452900",
- "financial_product_id": "sipp_accumulation",
- "investor_id": "inv-XUT11333",
- "amount": "2000.00",
- "sub_transaction_type": "Regular contribution - Employer",
- "currency": "GBP",
- "payment_type": "direct_debit",
- "service_provider": "gocardless",
- "purpose": "invest",
- "investment_instructions": [
- {
- "investment_product_id": "isa_1223931892",
- "quantity": "300"
}, - {
- "investment_product_id": "isa_9913091898",
- "quantity": "500"
}
], - "source_id": "cem-ASP43560",
- "payment_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2027-04-02"
}
}
{- "contribution_id": "RCB-GC-AB24DE7",
- "contribution_name": "Contributions to SIPP",
- "pot_id": "pot-UKW3452900",
- "financial_product_id": "sipp_accumulation",
- "investor_id": "inv-XUT11333",
- "amount": "2000.00",
- "sub_transaction_type": "Regular contribution - Employer",
- "currency": "GBP",
- "payment_type": "direct_debit",
- "service_provider": "gocardless",
- "purpose": "invest",
- "investment_instructions": [
- {
- "investment_product_id": "isa_1223931892",
- "quantity": "300"
}, - {
- "investment_product_id": "isa_9913091898",
- "quantity": "500"
}
], - "source_id": "cem-ASP43560",
- "payment_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2027-04-02"
}, - "service_provider_params": {
- "status": "Pending service provider setup"
}, - "status": "Pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "reference_version": 1
}
Update an active recurring payment that is set up in the system.
contribution_id required | string Contribution ID |
x-api-key required | string ApiSecretKey |
amount | string Amount as a numeral string with two decimal points. (ex: 1500.00) Should be greater than or equal to the minimum investment for the financial product. |
contribution_name | string <= 100 characters User given identifier for the contribution |
reference_version | integer |
{- "amount": "1500.00",
- "contribution_name": "New contributions to SIPP",
- "reference_version": 1
}
{- "status": "Active",
- "service_provider_params": {
- "status": "Subscription created",
- "authorization_reference": "MD000VDMMYGD0T",
- "contribution_reference": "SB000A6A5EVJHE",
- "customer_reference": "CU000Y5VVH7TDQ",
- "request_id": "BRQ0004CZJA19GF",
- "reason": "Paid out",
}, - "next_payment_dates": [
- "2023-09-01",
- "2023-10-01"
], - "contribution_name": "New contributions to SIPP",
- "amount": "1500.00",
- "reference_version": 2,
- "created_at": "2023-08-17T08:35:40.041Z",
- "updated_at": "2023-09-17T08:35:40.041Z",
- "value": {
- "contribution_id": "RCB-GC-AB24DE7",
- "contribution_name": "Contributions to SIPP",
- "pot_id": "pot-UKW3452900",
- "financial_product_id": "sipp_accumulation",
- "investor_id": "inv-XUT11333",
- "amount": "2000.00",
- "sub_transaction_type": "Regular contribution - Employer",
- "currency": "GBP",
- "payment_type": "direct_debit",
- "service_provider": "gocardless",
- "purpose": "cash",
- "source_id": "cem-ASP43560",
- "payment_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2027-04-02"
}
}
}
Pause a recurring payment setup in the system. Recurring payments with the status ‘Active' can be paused through this endpoint.
contribution_id required | string Contribution ID |
x-api-key required | string ApiSecretKey |
pause_cycles | integer The number of cycles to pause a subscription for. A cycle is one duration of interval and interval_unit. This should be a non zero positive value. |
{- "pause_cycles": 1
}
{- "status": "Paused",
- "service_provider_params": {
- "status": "Subscription paused",
- "authorization_reference": "MD000VDMMYGD0T",
- "contribution_reference": "SB000A6A5EVJHE",
- "customer_reference": "CU000Y5VVH7TDQ",
- "request_id": "BRQ0004CZJA19GF",
- "reason": "Paid out",
}, - "next_payment_dates": [
- "2023-10-01",
- "2023-11-01"
], - "value": {
- "contribution_id": "RCB-GC-AB24DE7",
- "contribution_name": "Contributions to SIPP",
- "pot_id": "pot-UKW3452900",
- "financial_product_id": "sipp_accumulation",
- "investor_id": "inv-XUT11333",
- "amount": "2000.00",
- "sub_transaction_type": "Regular contribution - Employer",
- "currency": "GBP",
- "payment_type": "direct_debit",
- "service_provider": "gocardless",
- "purpose": "cash",
- "source_id": "cem-ASP43560",
- "payment_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2027-04-02"
}
}
}
Resume a paused recurring payment that is set up in the system. Recurring payments with the status ‘Paused' can be resumed through this endpoint.
contribution_id required | string Contribution ID |
x-api-key required | string ApiSecretKey |
{ }
{- "status": "Active",
- "service_provider_params": {
- "status": "Subscription resumed",
- "authorization_reference": "MD000VDMMYGD0T",
- "contribution_reference": "SB000A6A5EVJHE",
- "customer_reference": "CU000Y5VVH7TDQ",
- "request_id": "BRQ0004CZJA19GF",
- "reason": "Paid out",
}, - "next_payment_dates": [
- "2023-09-01",
- "2023-10-01"
], - "value": {
- "contribution_id": "RCB-GC-AB24DE7",
- "contribution_name": "Contributions to SIPP",
- "pot_id": "pot-UKW3452900",
- "financial_product_id": "sipp_accumulation",
- "investor_id": "inv-XUT11333",
- "amount": "2000.00",
- "sub_transaction_type": "Regular contribution - Employer",
- "currency": "GBP",
- "payment_type": "direct_debit",
- "service_provider": "gocardless",
- "purpose": "cash",
- "source_id": "cem-ASP43560",
- "payment_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2027-04-02"
}
}
}
Cancel a recurring payment setup in the system. Recurring payments with the status ‘Active', ‘Resumed’ or 'Paused’ can be cancelled through this endpoint. Cancelled payments cannot be active again.
contribution_id required | string Contribution ID |
x-api-key required | string ApiSecretKey |
reason | string <= 200 characters Reason to cancel the recurring payment. |
{- "reason": "Cancelling due to payment failures"
}
{- "status": "Cancelled",
- "reason": "Cancelling due to payment failures",
- "service_provider_params": {
- "status": "Subscription cancelled",
- "authorization_reference": "MD000VDMMYGD0T",
- "contribution_reference": "SB000A6A5EVJHE",
- "customer_reference": "CU000Y5VVH7TDQ",
- "request_id": "BRQ0004CZJA19GF",
- "reason": "Paid out",
}, - "created_at": "2023-08-17T08:35:40.041Z",
- "updated_at": "2023-09-17T08:35:40.041Z",
- "reference_version": 1,
- "value": {
- "contribution_id": "RCB-GC-AB24DE7",
- "contribution_name": "Contributions to SIPP",
- "pot_id": "pot-UKW3452900",
- "financial_product_id": "sipp_accumulation",
- "investor_id": "inv-XUT11333",
- "amount": "2000.00",
- "sub_transaction_type": "Regular contribution - Employer",
- "currency": "GBP",
- "payment_type": "direct_debit",
- "service_provider": "gocardless",
- "purpose": "cash",
- "source_id": "cem-ASP43560",
- "payment_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2027-04-02"
}
}
}
The "Transactions" endpoint grouping encompasses various endpoints associated with transactions. This section includes a collection of endpoints that facilitate creation and retrieval of different types of transactions.
A transaction to buy or sell an investment product can be specified in units (i.e. buy/sell n number of units of the investment product) or as a value (i.e. buy/sell up to n value of the investment product). Also, these endpoints support single or bulk buy/sell transactions.
The "Retrieve All Transactions” endpoint enables users to retrieve any transaction as per their specific requirements. Users have the flexibility to filter and obtain a particular transaction by providing a transaction ID / parent transaction ID/ aggregated transaction ID or filter out a specific set of transactions based on various criteria such as the sub transaction type, investor, account, pot, status, or creation within a specified time period.
transaction_id | string Unique identifier for the transaction |
parent_transaction_id | string Unique identifier for parent transaction |
aggregated_transaction_id | string Unique identifier for the aggregated transaction |
external_transaction_reference | string A unique reference to the transaction in the external system |
investor_id | string Investor ID |
account_id | string Account ID |
pot_id | string Pot ID |
sub_transaction_type | string Sub transaction type |
sub_type | string Status of the transaction. Multiple statuses as comma separated string can be entered |
start_date | string The start date of the transactions to be retrieved from the API. Should be on YYYY-MM-DD format |
end_date | string The end date of the transactions to be retrieved from the API. Should be on YYYY-MM-DD format |
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is [4000]. Results are sorted descending order of the created date & time |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted descending order of the created date & time |
sort | string Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
updated_date | string The date the transactions were last updated. Should be on YYYY-MM-DD format. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/transactions/v1/?transaction_id=SOME_STRING_VALUE&parent_transaction_id=SOME_STRING_VALUE&aggregated_transaction_id=SOME_STRING_VALUE&external_transaction_reference=SOME_STRING_VALUE&investor_id=SOME_STRING_VALUE&account_id=SOME_STRING_VALUE&pot_id=SOME_STRING_VALUE&sub_transaction_type=SOME_STRING_VALUE&sub_type=SOME_STRING_VALUE&start_date=SOME_STRING_VALUE&end_date=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE&updated_date=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "transactions": [
- {
- "transaction_id": "80784c92-8f9d-4150-b83c-dc6d217a8155",
- "pot_id": "pot-UKW3452850",
- "created_at": "2023-01-27T05:45:56.839Z",
- "updated_at": "2023-01-27T05:45:56.839Z",
- "primary_transaction_type": "Contribution",
- "sub_transaction_type": "Lump sum",
- "investment_product_id": "cash",
- "transaction_value": "20000",
- "settlement_date": "2023-01-27",
- "currency": "GBP",
- "direction": "in",
- "type": "archived",
- "sub_type": "settled",
- "origin": "api"
}
], - "next_page_available": true
}
This endpoint enables users to create a transaction on WealthOS platform. A successful request will result in the creation of a transaction and updates to holdings. The system will return the transaction_id
and other transaction details.
x-api-key required | string ApiSecretKey |
request_id required | string Unique request id to ensure idempotency. (ex: UUID) |
external_transaction_reference | string A unique reference to the transaction in the external system |
sub_transaction_type required | string Enum: "Buy" "Sell" "Withdrawal" "Interest" Sub transaction type. |
pot_id required | string Pot ID |
currency required | string Currency of the transaction |
investment_product_id | string Investment product id of the transaction. Mandatory only if sub_transaction_type: |
execution_price | string Executed price of the Buy/Sell transaction. Up to 4 decimal values. Mandatory only if sub_transaction_type: |
transaction_quantity | string Traded investment product quantity for Buy/Sell transactions. Mandatory only if sub_transaction_type: |
effective_transaction_value | string The adjusted value of the transaction after considering cost of the transaction. This value will update the pot/account balances of the investor. Mandatory only if sub_transaction_type: |
transaction_value | string Value of the transaction. Up to 2 decimal values. Mandatory only if sub_transaction_type: |
trade_date | string Date the trade was taken executed. Mandatory only if sub_transaction_type: |
settlement_date required | string Actual settled day of the transaction. |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b860",
- "external_transaction_reference": "412917b0-92b0-4d44-812e-bb715bd4df40",
- "sub_transaction_type": "Buy",
- "pot_id": "pot-UKW3452850",
- "currency": "GBP",
- "investment_product_id": "EPCCTST7",
- "transaction_quantity": "10.45",
- "execution_price": "25.0000",
- "effective_transaction_value": "260.85",
- "trade_date": "2024-07-24",
- "settlement_date": "2024-07-24"
}
{- "transaction_id": "b8084c32-f466-4c18-a88a-2f9ace0fe3fe",
- "external_transaction_reference": "412917b0-92b0-4d44-812e-bb715bd4df40",
- "sub_transaction_type": "Buy",
- "pot_id": "pot-UKW3452850",
- "currency": "GBP",
- "investment_product_id": "EPCCTST7",
- "transaction_quantity": "10.45",
- "execution_price": "25.0000",
- "effective_transaction_value": "260.85",
- "trade_date": "2024-07-24",
- "settlement_date": "2024-07-24",
- "origin": "api",
- "created_at": "2024-07-24T05:07:03.374Z",
- "updated_at": "2024-07-24T05:07:03.374Z"
}
Invoke execution of one or more buy transactions as defined in the request
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
pot_id required | string |
required | Array of objects (Instruction(buy|sell)) |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "pot_id": "pot-UKW3452850",
- "investment_instructions": [
- {
- "investment_product_id": "EPCCTST7",
- "quantity": "10",
- "client_order_id": "cl-02456s42sd3"
}, - {
- "investment_product_id": "EPCCTST9",
- "quantity": "-10"
}
]
}
{- "status": "partially_success",
- "pot_id": "pot-UKW3452850",
- "results": [
- {
- "transaction_quantity": "10",
- "success": true,
- "transaction_id": "738b9aaa-6320-4132-b7c7-1a57d607c15e",
- "investment_product_id": "EPCCTST7",
- "client_order_id": "cl-02456s42sd3",
- "primary_transaction_type": "Buy",
- "sub_transaction_type": "Buy",
- "type": "pending",
- "sub_type": "instructed",
- "currency": "GBP",
- "direction": "in",
- "created_at": "2023-01-27T11:33:32.285Z",
- "updated_at": "2023-01-27T11:33:32.285Z",
- "trade_date": "2023-01-27",
- "origin": "api"
}, - {
- "message": "Transaction quantity is lower than the minimum allowed (EPCCTST9)",
- "success": false
}
]
}
Invoke execution of one or more Sell transactions as defined in the request
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
pot_id required | string |
Array of objects (Instruction(buy|sell)) |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "pot_id": "pot-UKW3452850",
- "sell_instructions": [
- {
- "investment_product_id": "EPCCTST7",
- "quantity": "10",
- "client_order_id": "cl-02456s42sd3"
}, - {
- "investment_product_id": "EPCCTST9",
- "quantity": "-10"
}
]
}
{- "status": "partially_success",
- "pot_id": "pot-UKW3452850",
- "results": [
- {
- "transaction_quantity": "10",
- "success": true,
- "transaction_id": "738b9aaa-6320-4132-b7c7-1a57d607c15e",
- "investment_product_id": "EPCCTST7",
- "client_order_id": "cl-02456s42sd3",
- "primary_transaction_type": "Sell",
- "sub_transaction_type": "Sell",
- "type": "pending",
- "sub_type": "instructed",
- "currency": "GBP",
- "direction": "out",
- "created_at": "2023-01-27T11:33:32.285Z",
- "updated_at": "2023-01-27T11:33:32.285Z",
- "trade_date": "2023-01-27",
- "origin": "api"
}, - {
- "message": "Transaction quantity is lower than the minimum allowed (EPCCTST9)",
- "success": false
}
]
}
The Switch Instruction endpoints allow you to switch existing holdings (cash and investment products) to a new set of investment products via a single instruction. You can specify the holdings you want to sell along with a mode
and value
(e.g. number of units to be sold, total value of holding to be sold or % of holding to be sold) and the investment products you want to buy (using the proceeds of the sales and and/or free cash available in the pot). The buy instructions can also be specified with a mode
and value
(e.g. number of units to buy, total value of holding to be bought or % of proceeds to be used to buy specific investment product).
You can view the status of your switch instruction at any point through the API (both the overall 'parent' switch instruction as well as the individual 'child' buy/sell transactions).
Retrieve the status of an existing switch instruction from the switch_transaction_id
. If the status of the individual buy/sell transactions are required, you must send the request with include_details = true
.
switch_transaction_id required | string Unique identifier of the switch instruction |
include_details | boolean If set to |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/transactions/v1/switch?switch_transaction_id=SOME_STRING_VALUE&include_details=SOME_BOOLEAN_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "status": "sell_in_progress",
- "switch_transaction_id": "def85ee2-c98d-44d8-a644-c91caa84fa6e",
- "pot_id": "pot-UKW3452855",
- "sell_instructions": [
- {
- "investment_product_id": "ETF069GBP1",
- "mode": "value",
- "value": "300"
}
], - "buy_instructions": [
- {
- "investment_product_id": "ETF931GBP5",
- "mode": "percentage",
- "value": "100"
}
], - "transactions": [
- {
- "investment_product_id": "ETF069GBP1",
- "status": "scheduled",
- "side": "sell",
- "transaction_id": "de78ce12-0ad4-4a10-af51-11a572912449",
- "value": "300",
- "created_at": "2023-01-29T23:33:09.460Z",
- "updated_at": "2023-01-29T23:33:09.460Z"
}
], - "origin": "api",
- "created_at": "2023-01-29T23:33:06.678Z",
- "updated_at": "2023-01-29T23:33:06.678Z",
- "reason": "string"
}
Send a switch instruction with details of the investment products to be sold, free cash to be used (if any) and investment products to be bought.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (eg: UUID) |
pot_id required | string Identifier of the pot the instruction is sent to |
required | Array of objects (each buy or sell instruction of the Switch request) |
required | Array of objects (each buy or sell instruction of the Switch request) |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "pot_id": "pot-UKW3452855",
- "sell_instructions": [
- {
- "investment_product_id": "ETF032GBP1",
- "mode": "value",
- "value": "500"
}
], - "buy_instructions": [
- {
- "investment_product_id": "ETF069GBP1",
- "mode": "value",
- "value": "20"
}
]
}
{- "status": "sell_in_progress",
- "switch_transaction_id": "def85ee2-c98d-44d8-a644-c91caa84fa6e",
- "pot_id": "pot-UKW3452855",
- "origin": "api",
- "sell_instructions": [
- {
- "investment_product_id": "ETF032GBP1",
- "mode": "value",
- "value": "500"
}
], - "buy_instructions": [
- {
- "investment_product_id": "ETF069GBP1",
- "mode": "value",
- "value": "20"
}
]
}
The rebalancing feature provides advisors and portfolio managers the ability to evaluate which pots have drifted significantly from their target portfolios, and trigger a rebalance execution for these pots to bring the holdings back to parity with the pot's target portfolio. Driven by a single rebalance request, the system completely orchestrates this multi-day buy/sell process across a host of different pots, with status updates being provided via API endpoints and web sockets.
Evaluate if a pot or a group of pots has deviated significatly from the target portfolio and eligible for rebalancing. The request can be sent for a pot (or a group of pots), all pots belonging to an investor (or a group of investors) or all pots linked to a portfolio (or a group of portfolios). The response will indicate if the pot is eligible for rebalance and % deviation from the target portfolio template.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (eg: UUID) |
type required | string Enum: "pot" "investor" "portfolio" Rebalance request triggering type. This describe the types of elements included in the values field |
values required | Array of strings List of unique IDs from the mentioned type to trigger the rebalance process |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "type": "pot",
- "values": [
- "pot-UKW3452850",
- "pot-SDQ5239730"
]
}
{- "rebalance_request_id": "re-d3b39bc2-0ff5-40c0-9575-f5139b959c1b",
- "status": "processing",
- "created_at": "2019-08-24T14:15:22Z"
}
Retrieve details of a rebalace evaluation request using the rebalance_request_id
.
rebalance_evaluation_id required | string Unique identifier of the rebalance evaluation request |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/pots/v1/rebalance-evaluation-status?rebalance_evaluation_id=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "rebalanceEvaluation": {
- "rebalance_request_id": "fh584838fff",
- "status": "completed",
- "pot_details": [
- {
- "pot_id": "pot-GYA4736947",
- "rebalance_eligibility_status": "eligible",
- "investor_id": [
- "inv-QXR38578"
], - "portfolio_template_id": "pft-5472de57-d291-4914-930e-0bbf5cb0cc47",
- "portfolio_deviation": "50"
}
], - "reason": "string",
- "warning": "The following IDs were not found [pot-PXO9735796, pot-LPO9735006]",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "next_page_available": true
}
This endpoint allows you to trigger the rebalancing of a pot (or a group of pots), all pots belonging to an investor (or a group of investors) or all pots linked to a portfolio (or a group of portfolios). The response will contain a rebalance_request_id
and status
of the request.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (eg: UUID) |
type required | string Enum: "pot" "investor" "portfolio" Rebalance request triggering type. This describe the types of elements included in the values field |
values required | Array of strings List of unique IDs from the mentioned type to trigger the rebalance process |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "type": "pot",
- "values": [
- "pot-UKW3452850",
- "pot-SDQ5239730"
]
}
{- "rebalance_request_id": "fh584838fff",
- "status": "processing",
- "created_at": "2019-08-24T14:15:22Z"
}
Retrieve details of a rebalace request using the rebalance_request_id
.
rebalance_request_id required | string Unique identifier of the rebalance request |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/pots/v1/rebalance-results?rebalance_request_id=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "rebalanceExecution": {
- "rebalance_request_id": "fh584838fff",
- "status": "completed",
- "pot_details": [
- {
- "pot_id": "pot-UKW3452850",
- "status": "in_progress",
- "portfolio_template_id": "pft-5472de57-d291-4914-930e-0bbf5cb0cc47",
- "investor_id": [
- "inv-XUT11265"
], - "portfolio_deviation": "50",
- "reason": "string",
- "instruction_id": "d4c55e5e-c827-47ed-8811-b312f0cef2d2",
- "sell_instructions": [
- {
- "investment_product_id": "F0654GBP1",
- "mode": "value",
- "value": "1000"
}
], - "buy_instructions": [
- {
- "investment_product_id": "F1573GBP2",
- "mode": "percentage",
- "value": "100"
}
], - "transactions": [
- {
- "investment_product_id": "F0654GBP1",
- "status": "instructed",
- "side": "sell",
- "transaction_id": "066e9ac1-30fe-434a-856a-91deea3ea7b1",
- "value": "1000",
- "created_at": "2023-01-30T08:21:24.260Z",
- "updated_at": "2023-01-30T08:21:24.260Z"
}
]
}
], - "reason": "string",
- "warning": "The following IDs were not found [pot-PXO9735796, pot-LPO9735006]",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "next_page_available": true
}
Wealth Managers require various types of rates (e.g. spot fx rates, interest rates) for valuations, currency conversations etc.
The Rates endpoint returns all the configured rate types along with the latest available rate.
Returns rate details of the requested rate type.
rate_type required | string Value: "fx-spot" Type of Rate |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/rates/v1?rate_type=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "rates": [
- {
- "rate_id": "USDCAD",
- "rate_type": "fx-spot",
- "rate": "1.27863",
- "rate_on_date": "20220203"
}
]
}
The Fees endpoints allow a wealth manager to manage fees in terms of creating and charging an external fee or retrieving information on fee configurations setup in the system for recurring fee computations.
ⓘ This feature is currently in BETA mode
Returns the fee codes setup in the system for recurring fee computations.
fee_codes | string Fee codes to be retrieved from the API. Can give multiple fee codes as comma separated values. (ex- FF_50,PF_75) |
status | string Status of the fee code to be retrieved from the API (Active, Inactive) |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/fees/v1/codes?fee_codes=SOME_STRING_VALUE&status=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "fee_codes": [
- {
- "fee_code": "FF_50",
- "fee_type": "Flat_fee_percentage_based",
- "fee_rate": "50.00",
- "fee_rates": [
- {
- "min": "0",
- "max": "100000",
- "rate": "50.00"
}
], - "status": "Active",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}
ⓘ This feature is currently in BETA mode
Returns the fee types in the system for recurring fee computations set up at Investor, Financial Product and Portfolio levels.
fee_calculation_entity | string Level at which the recurring fee sub transaction type is setup. Can give multiple fee calculation entities as comma separated values to be retrieved via the API.(Options - Investor, Financial Product, Portfolio, Investor Account) |
fee_calculation_method | string Fee calculation method used for fee computation for this fee sub transaction type to be retrieved via the API.(Options - Daily Accrual) |
sub_transaction_type | string Fee Sub transaction type set up for the entity. Can give multiple Sub transaction types as comma separated values.(ex- Service fees,Platform fees) |
fee_codes | string Fee codes of the fee setup to be retrieved from the API. Can give multiple fee codes as comma separated values.(ex- FF_50,PF_75) |
assigned_to | string Instances of the entity for which the fee sub transaction type is setup.(Options - All, a single instance, or an array of instances of the entity) |
start_date | string <date> Start date of the fee setup to be retrieved from the API. Should be on YYYY-MM-DD format. |
end_date | string <date> End date of the fee setup to be retrieved from the API. Should be on YYYY-MM-DD format. |
status | string Status of the fee code to be retrieved from the API (Active, Inactive) |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/fees/v1/setups?fee_calculation_entity=SOME_STRING_VALUE&fee_calculation_method=SOME_STRING_VALUE&sub_transaction_type=SOME_STRING_VALUE&fee_codes=SOME_STRING_VALUE&assigned_to=SOME_STRING_VALUE&start_date=SOME_STRING_VALUE&end_date=SOME_STRING_VALUE&status=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "fee_setups": [
- {
- "fee_setup_id": "6efa81d9-073f-4ac2-9e09-66d6934b57e3",
- "fee_calculation_entity": "Investor",
- "fee_calculation_method": "Daily Accrual",
- "primary_transaction_type": "Fees",
- "sub_transaction_type": "Advisor ongoing fee",
- "fee_code": "FF_50",
- "assigned_to": "All",
- "start_date": "2022-10-31",
- "end_date": "2023-10-31",
- "status": "Active",
- "created_at": "2022-10-26T13:24:00.459Z",
- "updated_at": "2022-10-26T13:24:00.459Z"
}
]
}
ⓘ This feature is currently in BETA mode
Returns the asset exclusions in the system for recurring fee computations set up at Investor, Financial Product and Portfolio levels.
fee_exemption_entity | string Level at which the recurring fee sub transaction type is setup. Can give multiple fee exemption entities as comma separated values to be retrieved via the API.(Options - Investor,Financial Product,Portfolio) |
sub_transaction_type | string Fee Sub transaction type set up for the entity. Can give multiple Sub transaction types as comma separated values.(ex- Service fees,Platform fees) |
assigned_to | string Instances of the entity for which the fee sub transaction type is setup.(Options - All or a single instance ) |
start_date | string <date> Start date of the fee setup to be retrieved from the API. Should be on YYYY-MM-DD format. |
end_date | string <date> End date of the fee setup to be retrieved from the API. Should be on YYYY-MM-DD format. |
status | string Status of the fee code to be retrieved from the API (Active, Inactive) |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/fees/v1/exemptions?fee_exemption_entity=SOME_STRING_VALUE&sub_transaction_type=SOME_STRING_VALUE&assigned_to=SOME_STRING_VALUE&start_date=SOME_STRING_VALUE&end_date=SOME_STRING_VALUE&status=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "fee_exemptions": [
- {
- "fee_exemption_id": "c4b7bca6-7020-42c2-b74b-2116fb23b124",
- "fee_exemption_entity": "Investor",
- "primary_transaction_type": "Fees",
- "sub_transaction_type": "Service fees",
- "assigned_to": "All",
- "exempted_assets": [
- "cash"
], - "start_date": "2023-01-26",
- "end_date": "2023-02-26",
- "status": "Active",
- "created_at": "2023-01-26T16:01:49.002Z",
- "updated_at": "2023-01-26T16:01:49.002Z"
}
]
}
This endpoint supports the creation of a single fee deduction from an investor's pot. A sucessful fee creation will result in the creation of a fee transaction and updates to holdings. The system will return the transaction_id
and other fee transaction details.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
pot_id required | string <= 64 characters Pot ID |
currency required | string Currency of the Fee. It must be a currency configured for the pot. |
transaction_value required | string Fee Amount upto 2 decimal places |
sub_transaction_type required | string Enum: "Ancillary fee" "Advisor ongoing fee" "One-off advisor fee" "Custody fees" "Commission" "Management fee" "Fee credit" "Fee rebate" "Commission rebate" If the pot is a pension pot only Ancillary fee, Advisor ongoing fee, One-off advisor fee, Custody fees and Commission will be valid sub transaction types |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "pot_id": "pot-UKW3459999",
- "currency": "GBP",
- "transaction_value": "123.45",
- "sub_transaction_type": "Custody fees"
}
{- "transaction_id": "378f7443-515c-4947-be3f-e7bd51be68c2",
- "investment_product_id": "cash",
- "transaction_value": "123.45",
- "pot_id": "pot-UKW3459999",
- "primary_transaction_type": "Fees",
- "sub_transaction_type": "Custody fees",
- "type": "archived",
- "sub_type": "settled",
- "currency": "GBP",
- "direction": "out",
- "external_transaction_reference": "string",
- "created_at": "2023-01-30T00:42:36.624Z",
- "updated_at": "2023-01-30T00:42:36.624Z",
- "trade_date": "2023-01-30",
- "settlement_date": "2023-01-30",
- "origin": "api",
- "selldown_triggered": true,
- "selldown_transaction_details": [
- {
- "transaction_id": "564f6da2-fb02-4ccd-aceb-d2c71ca55b2f",
- "pot_id": "pot-FRK0757974",
- "transaction_value": "10",
- "investment_product_id": "GBR88160R1014",
- "primary_transaction_type": "Sell",
- "sub_transaction_type": "Fee sell",
- "type": "pending",
- "sub_type": "instructed",
- "currency": "GBP",
- "direction": "out",
- "created_at": "2025-05-27T11:39:26.646Z",
- "updated_at": "2025-05-27T11:39:26.646Z",
- "trade_date": "2025-05-21"
}
]
}
This endpoint supports the creation of a single withdrawal from an investor's pot. A sucessful withdrawal creation will result in the creation of a withdrawal transaction and updates to holdings.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
pot_id required | string <= 64 characters Pot ID |
currency required | string Currency of the Withdrawal.must be a currency configured for the Pot |
transaction_value required | string Withdrawal Amount upto 2 decimal places |
sub_transaction_type required | string Enum: "Withdrawal" "Income Withdrawal" "Closing withdrawal" Withdrawal sub transaction type. "Income Withdrawal" sub-transaction type will only applicable for SIPP FAD. "Closing withdrawal" sub-transaction type will only applicable for ISA. "Withdrawal" sub transaction type is applicable for ISA, LISA and GIA. |
bank_account_id required | string Bank Account ID |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "pot_id": "pot-SDQ5659730",
- "currency": "USD",
- "transaction_value": "123.45",
- "sub_transaction_type": "Withdrawal",
- "bank_account_id": "ba-example-bank-account"
}
{- "transaction_id": "0fec1e58-b197-4052-99cf-2218496c5482",
- "investment_product_id": "string",
- "transaction_value": "string",
- "pot_id": "pot-SDQ5659730",
- "primary_transaction_type": "Withdrawal",
- "sub_transaction_type": "Withdrawal",
- "type": "pending",
- "sub_type": "scheduled",
- "currency": "string",
- "direction": "in",
- "external_transaction_reference": "string",
- "created_at": "string",
- "updated_at": "string",
- "trade_date": "string",
- "settlement_date": "string",
- "origin": "api",
- "tax_transaction_id": "d2573eae-7b29-48cb-b1b9-ffef5f09db8c",
- "net_transaction_value": "string",
- "tax_payable_on_transaction": "string",
- "total_withdrawal_for_tax_period": "string",
- "tax_free_allowance_for_tax_period": "string",
- "additional_pay_ytd": "string",
- "taxable_withdrawal_for_tax_period": "string",
- "tax_payable_for_tax_period": "string",
- "tax_paid_for_tax_period": "string",
- "tax_unpaid_ytd": "string",
- "tax_overpaid_ytd": "string",
- "withdrawal_charge_applicable": true,
- "withdrawal_charge": "string"
}
This endpoint supports the creation of a ufpls withdrawal from an investor's SIPP Accumulation pot.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
investor_id required | string <= 64 characters Investor ID |
bank_account_id | string A unique id assigned by the WealthOS system to the bank account of the investor. If not specified, the default bank account of the investor will be considered for the transaction crediting. If a default bank account is not setup specifying a bank account id in the request is mandatory. If a bank account id is specified while there is a bank account id, the specified account id will be taken into effect overriding the default bank account. |
required | Array of objects Array of UFPLS instructions |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "investor_id": "inv-SDQ5659730",
- "bank_account_id": "ba-example-bank-account",
- "ufpls_instructions": [
- {
- "pot_id": "pot-AG17683",
- "ufpls_amount": "2000.00"
}
]
}
{- "ufpls_withdrawal_id": "UFPLS-example-index",
- "investor_id": "inv-SDQ5659730",
- "bank_account_id": "ba-example-bank-account",
- "status": "partially_success",
- "ufpls_request_information": [
- {
- "pot_id": "pot-AG17683",
- "ufpls_amount": "2000.00"
}
], - "ufpls_payout": [
- {
- "pot_id": "pot-AG17683",
- "tax_free_cash_paid": "1000.00",
- "taxable_amount": "1000.00",
- "tax_paid": "300.00",
- "net_taxed_amount_paid": "700.00",
- "lsa_utilised": "1000.00",
- "lsdba_utilised": "1000.00",
- "transaction_ids": {
- "ufpls_income_withdrawal": "6d9562e5-a3bb-421d-8bc2-a3bbf2e04bcf",
- "ufpls_tax_free_income": "5dfd421d-a3bb-421d-8bc2-c808f2e04plj",
- "paye_tax": "8bc262e5-a3bb-421d-8bc2-c924f2e04rfv"
}
}
], - "failed_requests": [
- {
- "pot_id": "pot-AGS17683",
- "error_message": "ufpls percentage requested is greater than free cash available in the pot."
}
]
}
The recurring withdrawal endpoints allow a tenant to manage regular withdrawals of investor pots.
Create a new recurring withdrawal for an investor pot which will be run by the scheduler setup in the system.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
withdrawal_name required | string <= 100 characters User given identifier for the withdrawal |
investor_id required | string Investor ID of the investor making the withdrawal. For a joint pot, Investor ID of the party making withdrawal should be included. |
pot_id required | string Pot ID of investor to direct the withdrawal |
bank_account_id required | string Bank account ID of the investor where the withdrawn cash will go to |
amount required | string Amount as a numeral string with two decimal points. (ex: 1500.00) Should be greater than or equal to the minimum withdrawal amount of the financial product. |
currency required | string Must be a currency configured for the Pot |
required | object Parameters based on withdrawal schedule |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "withdrawal_name": "Withdrawals to SIPP",
- "investor_id": "inv-XUT11265",
- "pot_id": "pot-GYQ5423100",
- "bank_account_id": "ba-92yu982d-at6u-4242-9856-83",
- "amount": "100.00",
- "currency": "GBP",
- "withdrawal_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2026-11-02"
}
}
{- "withdrawal_id": "RCW-AB24DE7",
- "withdrawal_name": "Withdrawals to SIPP",
- "investor_id": "inv-AUX11265",
- "pot_id": "pot-GYQ5423100",
- "bank_account_id": "ba-92yu982d-at6u-4242-9856-83",
- "amount": "100.00",
- "currency": "GBP",
- "withdrawal_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2026-11-02"
}, - "status": "active",
- "next_withdrawal_date": "2023-05-01T00:00:00.000Z",
- "created_at": "2023-04-04T15:12:30.000Z",
- "updated_at": "2023-04-04T15:12:30.000Z",
- "reference_version": 1
}
Returns all the recurring withdrawals set up for investors in an array.
Recurring Withdrawals can be requested using filters withdrawal_id
, pot_id
, investor_id
, financial_product_id
and status
or a combination of these filters.
withdrawal_id | string Withdrawal ID |
pot_id | string Pot ID |
financial_product_id | string Financial Product ID |
investor_id | string Investor ID |
status | string Enum: "active" "cancelled" "finished" Status of the recurring withdrawal |
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/recurring-withdrawals/v1?withdrawal_id=SOME_STRING_VALUE&pot_id=SOME_STRING_VALUE&financial_product_id=SOME_STRING_VALUE&investor_id=SOME_STRING_VALUE&status=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "recurring_withdrawals": [
- {
- "withdrawal_id": "RCW-AB24DE7",
- "withdrawal_name": "Withdrawals to SIPP",
- "investor_id": "inv-AUX11265",
- "pot_id": "pot-GYQ5423100",
- "bank_account_id": "ba-92yu982d-at6u-4242-9856-83",
- "amount": "100.00",
- "currency": "GBP",
- "withdrawal_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2026-11-02"
}, - "status": "active",
- "next_withdrawal_date": "2023-05-01T00:00:00.000Z",
- "created_at": "2023-04-04T15:12:30.000Z",
- "updated_at": "2023-04-04T15:12:30.000Z",
- "reference_version": 1
}
], - "next_page_available": true
}
Update an active recurring withdrawal that is set up in the system.
withdrawal_id required | string Withdrawal ID |
x-api-key required | string ApiSecretKey |
amount | string Amount as a numeral string with two decimal points. (ex: 1500.00) Should be greater than or equal to the minimum withdrawal amount of the financial product. |
withdrawal_name | string <= 100 characters User given identifier for the withdrawal |
end_date | string <date> Date to conclude the recurring withdrawal. Should be in YYYY-MM-DD format |
reference_version required | number |
{- "amount": "1500.00",
- "withdrawal_name": "New withdrawals to SIPP",
- "end_date": "2024-10-30",
- "reference_version": 1
}
{- "status": "active",
- "withdrawal_name": "New withdrawals to SIPP",
- "amount": "1500.00",
- "value": {
- "withdrawal_id": "RCW-AB2AE86",
- "withdrawal_name": "Withdrawals to SIPP",
- "pot_id": "pot-GYQ5423100",
- "financial_product_id": "stocks_isa",
- "investor_id": "inv-XUT11265",
- "amount": "100.00",
- "currency": "GBP",
- "withdrawal_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2026-11-02"
}, - "next_withdrawal_date": "2023-05-01T00:00:00.000Z",
- "created_at": "2023-04-04T15:12:30.000Z",
- "updated_at": "2023-04-04T15:12:30.000Z",
- "reference_version": 1
}
}
Cancel a recurring withdrawal setup in the system. Recurring withdrawals with the status ‘Active' can be cancelled through this endpoint. Cancelled withdrawals cannot be active again.
withdrawal_id required | string Withdrawal ID |
x-api-key required | string ApiSecretKey |
{ }
{- "status": "Cancelled",
- "value": {
- "withdrawal_id": "RCW-AB2AE86",
- "withdrawal_name": "Withdrawals to SIPP",
- "pot_id": "pot-GYQ5423100",
- "financial_product_id": "stocks_isa",
- "investor_id": "inv-XUT11265",
- "amount": "100.00",
- "currency": "GBP",
- "withdrawal_schedule": {
- "interval_unit": "monthly",
- "interval": 2,
- "date": 1,
- "start_date": "2026-04-02",
- "end_date": "2026-11-02"
}, - "next_withdrawal_date": "2023-05-01T00:00:00.000Z",
- "created_at": "2023-04-04T15:12:30.000Z",
- "updated_at": "2023-04-04T15:12:30.000Z",
- "reference_version": 1
}
}
The utility endpoint allows the Wealth Manager to upload information required by the system to support the daily operations (e.g. file uploads for daily jobs, calendar updates etc.)
Copy a file from the Wealth Manager's data store (system must have read permission for this store) to an internal data store
x-api-key required | string ApiSecretKey |
required | Array of objects file path array for the file(s) from external data store. |
{- "file_paths": [
- {
- "type": "bk",
- "path": "wos-dev13-reconciliation-files-us-east-2/custodian-files/bk-220908-2.FID"
}
]
}
{- "bucket": "wos-dev13-reconciliation-files-us-east-2",
- "keys": [
- "morganstanley/input_files/2023-01-27_bk_bk-220908-2.FID"
]
}
The Bank Account endpoint allows a wealth manager to create, update and retrieve the bank account details of an investor. An investor can have one or more bank accounts within the system and a default bank account should always be configured.
Every bank account has an account status that represents the active
or inactive
status of an account. Only active
bank accounts can be used for any transactions in the system.
Currently bank accounts can be created for investors and contributing employers. The ownership is reflected in the bank_account_type
field.
x-api-key required | string ApiSecretKey |
investor_id required | string |
contributing_party_id | string This is contributing employer ID for contributing employer bank accounts. Field is required for contributing employer bank accounts. |
account_name required | string <= 100 characters |
bank_account_type required | string Enum: "investor" "contributing_employer" This is 'investor' for investor bank accounts and 'contributing_employer' for contributing employer bank accounts. |
default_account required | string Enum: "yes" "no" Only one account should be the default |
bank_account_number required | string [ 6 .. 8 ] characters Unique for the investor |
account_status | string Enum: "active" "inactive" If not populated, will be defaulted to inactive |
sort_code | string [ 6 .. 8 ] characters Mandatory if region is UK |
building_society_roll_number | string [ 1 .. 18 ] characters |
{- "investor_id": "inv-XUT11265",
- "contributing_party_id": "cem-ZWV37971",
- "account_name": "David Brown",
- "bank_account_type": "investor",
- "default_account": "no",
- "bank_account_number": "12345678",
- "account_status": "active",
- "sort_code": "123456",
- "building_society_roll_number": "12345672"
}
{- "bank_account_id": "ba-20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "investor_id": "inv-XUT11265",
- "account_name": "David Brown",
- "bank_account_type": "investor",
- "default_account": "no",
- "bank_account_number": "****5678",
- "account_status": "active",
- "sort_code": "****56",
- "building_society_roll_number": "******72",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
investor_id required | string Valid Investor ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/bank-accounts/v1?investor_id=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "bankAccounts": [
- {
- "bank_account_id": "ba-20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "investor_id": "inv-XUT11265",
- "account_name": "David Brown",
- "bank_account_type": "investor",
- "default_account": "no",
- "bank_account_number": "****5678",
- "account_status": "active",
- "sort_code": "****56",
- "building_society_roll_number": "******72",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
]
}
bank_account_id required | string Bank Account ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/bank-accounts/v1/%7Bbank_account_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "bank_account_id": "ba-20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "investor_id": "inv-XUT11265",
- "account_name": "David Brown",
- "bank_account_type": "investor",
- "default_account": "no",
- "bank_account_number": "****5678",
- "account_status": "active",
- "sort_code": "****56",
- "building_society_roll_number": "******72",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
Update an existing Bank Account. The system will update only the fields sent in the request. Field mentioned as Nullable can be deleted by updating those values with null. Sending empty values for fields will not update the fields.
bank_account_id required | string Bank Account ID |
x-api-key required | string ApiSecretKey |
account_name | string <= 100 characters |
default_account | string Enum: "yes" "no" Only one account should be the default |
account_status | string Enum: "active" "inactive" |
reference_version required | integer |
{- "account_name": "David Brown",
- "default_account": "no",
- "account_status": "inactive",
- "reference_version": 2
}
{- "bank_account_id": "ba-20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "investor_id": "inv-XUT11265",
- "account_name": "David Brown",
- "bank_account_type": "investor",
- "default_account": "no",
- "bank_account_number": "****5678",
- "account_status": "active",
- "sort_code": "****56",
- "building_society_roll_number": "******72",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
An investor account is designed to manage a group of pots attached to a single financial product. A user can maintain multiple accounts for a given financial product if the product regulations support this setup.
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 4000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
account_id | string Multiple account IDs as comma seperated string |
investor_id | string Multiple investor IDs as comma seperated string |
financial_product_id | string Enum: "general_investment_product" "lisa_cash" "lisa_stocks" "sipp_accumulation" "sipp_fad" "stocks_isa" "treasury_management" Multiple financial product IDs as comma seperated string |
account_type | string Enum: "individual" "business" Type of the account. Can give multiple account types as comma separated values. |
account_sub_type | string Enum: "individual" "power_of_attorney" "court_of_protection" "sipp" "ssas" "trust" "business" "charity" "sole_trader" "partnership" Sub type of the account. Can give multiple account sub types as comma separated values. |
status | string Enum: "active" "pending_cancellation" "pending_closure" "cancelled" "closed" "matured" "inactive" Multiple statuses as comma seperated string |
isa_account_type | string Enum: "X" "Z" "B" "G" ISA financial product specific account type. Can give multiple account types as comma separated values. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/investor-accounts/v1?page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&account_id=SOME_STRING_VALUE&investor_id=SOME_STRING_VALUE&financial_product_id=SOME_STRING_VALUE&account_type=SOME_STRING_VALUE&account_sub_type=SOME_STRING_VALUE&status=SOME_STRING_VALUE&isa_account_type=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "investor_accounts": [
- {
- "account_id": "SIPPACC1674797806011",
- "investor_id": "inv-XUT11265",
- "financial_product_id": "treasury_management",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "date_of_account_activation": "2023-01-27T05:36:46.011Z",
- "status": "active",
- "current_year_subscription": "true",
- "first_subscription_date_for_current_year": "2023-01-27T05:41:15.651Z",
- "current_year_total_contribution": "22000",
- "current_year_total_withdrawals": "string",
- "current_year_RAS_claimed": "string",
- "current_year_gross_contribution": "string",
- "current_year_RAS_claims_pending": "string",
- "current_year_MPAA_utilized": "string",
- "current_year_MPAA_remaining": "string",
- "current_year_LISA_bonus_claimed": "string",
- "current_year_LISA_bonus_pending": "string",
- "current_year_withdrawal_charges": "string",
- "current_year_pending_withdrawals": "string",
- "total_contribution": "string",
- "total_gross_contribution": "string",
- "total_bonus_claimed": "string",
- "total_withdrawals": "string",
- "total_withdrawal_charges": "string",
- "isa_allowance_remaining": "20000",
- "lisa_allowance_remaining": "4000",
- "lsdba_percentage_used": "2.12",
- "lsa_percentage_used": "1.12",
- "lsdba_utilised": "12321.23",
- "lsa_utilised": "12312.11",
- "total_pcls_amount": "1236.21",
- "custodian_account_reference": "CAR573838383",
- "custodian_id": "CID594898ff",
- "custodian_client_reference": "CCR578fh8",
- "regulator_advisor_id": "RAI48483jd",
- "life_events": [
- {
- "event_id": "LISALETI-SCX540",
- "event_type": "Terminal illness",
- "status": "completed"
}
], - "account_ownership": "individual",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z",
- "pot_id": [
- "pot-UKW3459995"
], - "hmrc_data": {
- "status": "hmrc_process_not_started",
- "lisa_investor_reference": "string",
- "reason": "string"
}, - "isa_account_type": "X",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}, - "total_gross_pension_withdrawal_life_time": "string",
- "current_year_total_gross_pension_withdrawal": "string",
- "total_net_pension_withdrawal_life_time": "string",
- "current_year_total_net_pension_withdrawal": "string",
- "current_year_total_tax_paid": "string",
- "total_tax_paid_life_time": "string",
- "current_year_total_gross_drawdown_withdrawal": "string",
- "total_gross_drawdown_withdrawal_life_time": "string",
- "current_year_total_net_drawdown_withdrawal": "string",
- "total_net_drawdown_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_drawdown": "string",
- "total_tax_paid_from_drawdown_life_time": "string",
- "current_year_total_gross_ufpls_withdrawal": "string",
- "total_gorss_ufpls_withdrawal_life_time": "string",
- "current_year_total_net_ufpls_withdrawal": "string",
- "total_net_ufpls_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_ufpls": "string",
- "total_tax_paid_from_ufpls_life_time": "string",
- "current_year_total_tax_free_cash_paid_from_ufpls": "string",
- "total_tax_free_cash_paid_from_ufpls_life_time": "string",
- "current_year_total_gross_taxable_ufpls_withdrawal": "string",
- "total_gross_taxable_ufpls_withdrawal_life_time": "string",
- "personal_allowance_utilized": "string",
- "additional_pay": "string",
- "tax_overpaid": "string"
}
], - "next_page_available": true
}
This endpoint facilitates the creation of an investor account for a selected financial product, using an external account ID as the unique identifier. Currently this endpoint supports creation of investor accounts for Treasury Management
financial product.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
account_id required | string <= 20 characters Investor account ID |
investor_id required | string |
financial_product_id required | string Value: "treasury_management" |
account_type | string Enum: "individual" "business" Type of the account |
account_sub_type | string Enum: "individual" "power_of_attorney" "court_of_protection" "sipp" "ssas" "trust" "business" "charity" "sole_trader" "partnership" Sub type of the account
|
date_of_account_activation | string <date> The first date the account was opened by the investor. For LISA accounts, this will be set with the date of the initial subscription to the account. |
additional_external_details | object This field is used to capture additional information or flags specific to the investor account, represented as key-value pairs. |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "account_id": "CASHACC1674797806000",
- "investor_id": "inv-XUT11265",
- "financial_product_id": "treasury_management",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "date_of_account_activation": "2024-08-27",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}
}
{- "account_id": "CASHACC1674797806011",
- "investor_id": "inv-XUT11265",
- "financial_product_id": "treasury_management",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "date_of_account_activation": "2024-08-27T00:00:00.000Z",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}, - "status": "active",
- "reference_version": 1,
- "created_at": "2024-08-28T11:10:49.606Z",
- "updated_at": "2024-08-28T11:10:49.606Z"
}
account_id required | string Unique identifier of the investor account |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/investor-accounts/v1/%7Baccount_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "account_id": "SSISA1663750577493",
- "investor_id": "inv-XUT11265",
- "financial_product_id": "treasury_management",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "date_of_account_activation": "2022-09-21T08:56:17.493Z",
- "status": "active",
- "pot_id": [
- "pot-UKW3459995"
], - "current_year_subscription": "false",
- "first_subscription_date_for_current_year": "2019-08-24T14:15:22Z",
- "current_year_total_contribution": "string",
- "current_year_total_withdrawals": "string",
- "current_year_total_isa_contribution": "string",
- "current_year_total_isa_withdrawals": "string",
- "current_year_RAS_claimed": "string",
- "current_year_gross_contribution": "string",
- "current_year_MPAA_utilized": "string",
- "current_year_MPAA_remaining": "string",
- "current_year_RAS_claims_pending": "string",
- "current_year_LISA_bonus_claimed": "string",
- "current_year_LISA_bonus_pending": "string",
- "current_year_withdrawal_charges": "string",
- "current_year_pending_withdrawals": "string",
- "total_contribution": "string",
- "total_gross_contribution": "string",
- "total_bonus_claimed": "string",
- "total_withdrawals": "string",
- "total_withdrawal_charges": "string",
- "total_market_value": "0",
- "isa_allowance_remaining": "20000",
- "lisa_allowance_remaining": "4000",
- "lsdba_percentage_used": "2.12",
- "lsa_percentage_used": "string",
- "custodian_account_reference": "CAR573838383",
- "custodian_id": "CID594898ff",
- "custodian_client_reference": "CCR578fh8",
- "regulator_advisor_id": "RAI48483jd",
- "life_events": [
- {
- "event_id": "LISALETI-SCX540",
- "event_type": "Terminal illness",
- "status": "completed"
}
], - "account_ownership": "individual",
- "reference_version": 1,
- "created_at": "2022-12-29T10:36:03.064Z",
- "updated_at": "2022-12-29T10:36:03.064Z",
- "hmrc_data": {
- "status": "hmrc_process_not_started",
- "lisa_investor_reference": "string",
- "reason": "string"
}, - "isa_account_type": "X",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}, - "total_gross_pension_withdrawal_life_time": "string",
- "current_year_total_gross_pension_withdrawal": "string",
- "total_net_pension_withdrawal_life_time": "string",
- "current_year_total_net_pension_withdrawal": "string",
- "current_year_total_tax_paid": "string",
- "total_tax_paid_life_time": "string",
- "current_year_total_gross_drawdown_withdrawal": "string",
- "total_gross_drawdown_withdrawal_life_time": "string",
- "current_year_total_net_drawdown_withdrawal": "string",
- "total_net_drawdown_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_drawdown": "string",
- "total_tax_paid_from_drawdown_life_time": "string",
- "current_year_total_gross_ufpls_withdrawal": "string",
- "total_gorss_ufpls_withdrawal_life_time": "string",
- "current_year_total_net_ufpls_withdrawal": "string",
- "total_net_ufpls_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_ufpls": "string",
- "total_tax_paid_from_ufpls_life_time": "string",
- "current_year_total_tax_free_cash_paid_from_ufpls": "string",
- "total_tax_free_cash_paid_from_ufpls_life_time": "string",
- "current_year_total_gross_taxable_ufpls_withdrawal": "string",
- "total_gross_taxable_ufpls_withdrawal_life_time": "string",
- "personal_allowance_utilized": "string",
- "additional_pay": "string",
- "tax_overpaid": "string"
}
Update an existing investor account. The system will update only the fields sent in the payload. Field mentioned as Nullable can be deleted by updating those values with null. Custodian details including the custodian_id, custodian_account_reference, custodian_client_ref and regulator_advisor_id can be updated for an account through this endpoint only.
account_id required | string Unique identifier of the investor account |
x-api-key required | string ApiSecretKey |
custodian_account_reference | string or null <= 64 characters |
custodian_id | string or null <= 64 characters |
custodian_client_reference | string or null <= 64 characters |
regulator_advisor_id | string or null <= 64 characters |
reference_version required | integer |
{- "custodian_account_reference": "CAR573838383",
- "custodian_id": "CID594898ff",
- "custodian_client_reference": "CCR578fh8",
- "regulator_advisor_id": "RAI48483jd",
- "reference_version": 1
}
{- "account_id": "SSISA1663750577493",
- "investor_id": "inv-XUT11265",
- "financial_product_id": "treasury_management",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "date_of_account_activation": "2022-09-21T08:56:17.493Z",
- "status": "active",
- "pot_id": [
- "pot-UKW3459995"
], - "current_year_subscription": "false",
- "first_subscription_date_for_current_year": "2019-08-24T14:15:22Z",
- "current_year_total_contribution": "string",
- "current_year_total_withdrawals": "string",
- "current_year_total_isa_contribution": "string",
- "current_year_total_isa_withdrawals": "string",
- "current_year_RAS_claimed": "string",
- "current_year_gross_contribution": "string",
- "current_year_MPAA_utilized": "string",
- "current_year_MPAA_remaining": "string",
- "current_year_RAS_claims_pending": "string",
- "current_year_LISA_bonus_claimed": "string",
- "current_year_LISA_bonus_pending": "string",
- "current_year_withdrawal_charges": "string",
- "current_year_pending_withdrawals": "string",
- "total_contribution": "string",
- "total_gross_contribution": "string",
- "total_bonus_claimed": "string",
- "total_withdrawals": "string",
- "total_withdrawal_charges": "string",
- "total_market_value": "0",
- "isa_allowance_remaining": "20000",
- "lisa_allowance_remaining": "4000",
- "lsdba_percentage_used": "2.12",
- "lsa_percentage_used": "string",
- "custodian_account_reference": "CAR573838383",
- "custodian_id": "CID594898ff",
- "custodian_client_reference": "CCR578fh8",
- "regulator_advisor_id": "RAI48483jd",
- "life_events": [
- {
- "event_id": "LISALETI-SCX540",
- "event_type": "Terminal illness",
- "status": "completed"
}
], - "account_ownership": "individual",
- "reference_version": 1,
- "created_at": "2022-12-29T10:36:03.064Z",
- "updated_at": "2022-12-29T10:36:03.064Z",
- "hmrc_data": {
- "status": "hmrc_process_not_started",
- "lisa_investor_reference": "string",
- "reason": "string"
}, - "isa_account_type": "X",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}, - "total_gross_pension_withdrawal_life_time": "string",
- "current_year_total_gross_pension_withdrawal": "string",
- "total_net_pension_withdrawal_life_time": "string",
- "current_year_total_net_pension_withdrawal": "string",
- "current_year_total_tax_paid": "string",
- "total_tax_paid_life_time": "string",
- "current_year_total_gross_drawdown_withdrawal": "string",
- "total_gross_drawdown_withdrawal_life_time": "string",
- "current_year_total_net_drawdown_withdrawal": "string",
- "total_net_drawdown_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_drawdown": "string",
- "total_tax_paid_from_drawdown_life_time": "string",
- "current_year_total_gross_ufpls_withdrawal": "string",
- "total_gorss_ufpls_withdrawal_life_time": "string",
- "current_year_total_net_ufpls_withdrawal": "string",
- "total_net_ufpls_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_ufpls": "string",
- "total_tax_paid_from_ufpls_life_time": "string",
- "current_year_total_tax_free_cash_paid_from_ufpls": "string",
- "total_tax_free_cash_paid_from_ufpls_life_time": "string",
- "current_year_total_gross_taxable_ufpls_withdrawal": "string",
- "total_gross_taxable_ufpls_withdrawal_life_time": "string",
- "personal_allowance_utilized": "string",
- "additional_pay": "string",
- "tax_overpaid": "string"
}
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 4000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
account_id | string Multiple account IDs as comma seperated string |
investor_id | string Multiple investor IDs as comma seperated string |
financial_product_id | string Enum: "general_investment_product" "lisa_cash" "lisa_stocks" "sipp_accumulation" "sipp_fad" "stocks_isa" "treasury_management" "stocks_jisa" Multiple financial product IDs as comma seperated string |
account_type | string Enum: "individual" "business" Type of the account. Can give multiple account types as comma separated values. |
account_sub_type | string Enum: "individual" "power_of_attorney" "court_of_protection" "sipp" "ssas" "trust" "business" "charity" "sole_trader" "partnership" Sub type of the account. Can give multiple account sub types as comma separated values. |
status | string Enum: "active" "pending_cancellation" "pending_closure" "cancelled" "closed" "matured" "inactive" Multiple statuses as comma seperated string |
isa_account_type | string Enum: "X" "Z" "B" "G" ISA financial product specific account type. Can give multiple account types as comma separated values. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/investor-accounts/v2?page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&account_id=SOME_STRING_VALUE&investor_id=SOME_STRING_VALUE&financial_product_id=SOME_STRING_VALUE&account_type=SOME_STRING_VALUE&account_sub_type=SOME_STRING_VALUE&status=SOME_STRING_VALUE&isa_account_type=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "investor_accounts": [
- {
- "account_id": "SIPPACC1674797806011",
- "investor_id": [
- "inv-QXR38578"
], - "financial_product_id": "sipp_accumulation",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "jisa": {
- "maturity_date": "2025-06-30T00:00:00.000Z",
- "maturity_instruction_status": "Pending",
- "maturity_instruction": "Continue with ISA",
- "reason": "Investor has reached the maturity age and is eligible for conversion."
}, - "date_of_account_activation": "2023-01-27T05:36:46.011Z",
- "status": "active",
- "current_year_subscription": "true",
- "first_subscription_date_for_current_year": "2023-01-27T05:41:15.651Z",
- "current_year_total_contribution": "22000",
- "current_year_total_withdrawals": "string",
- "current_year_RAS_claimed": "string",
- "current_year_gross_contribution": "string",
- "current_year_RAS_claims_pending": "string",
- "current_year_MPAA_utilized": "string",
- "current_year_MPAA_remaining": "string",
- "current_year_LISA_bonus_claimed": "string",
- "current_year_LISA_bonus_pending": "string",
- "current_year_withdrawal_charges": "string",
- "current_year_pending_withdrawals": "string",
- "total_contribution": "string",
- "total_gross_contribution": "string",
- "total_bonus_claimed": "string",
- "total_withdrawals": "string",
- "total_withdrawal_charges": "string",
- "isa_allowance_remaining": "20000",
- "lisa_allowance_remaining": "4000",
- "jisa_allowance_remaining": "8000",
- "lsdba_percentage_used": "2.12",
- "lsa_percentage_used": "1.12",
- "lsdba_utilised": "12321.23",
- "lsa_utilised": "12312.11",
- "total_pcls_amount": "1236.21",
- "custodian_account_reference": "CAR573838383",
- "custodian_id": "CID594898ff",
- "custodian_client_reference": "CCR578fh8",
- "regulator_advisor_id": "RAI48483jd",
- "life_events": [
- {
- "event_id": "LISALETI-SCX540",
- "event_type": "Terminal illness",
- "status": "completed"
}
], - "account_ownership": "individual",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z",
- "pot_id": [
- "pot-MKQ5634576",
- "pot-DFT5033872"
], - "hmrc_data": {
- "status": "hmrc_process_not_started",
- "lisa_investor_reference": "string",
- "reason": "string"
}, - "isa_account_type": "X",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}, - "related_parties": {
- "individuals": [
- {
- "title": "Mr.",
- "first_name": "Eleanor",
- "last_name": "Thompson",
- "tax_id": "AB123456C",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441225960123",
- "email": "eleanor.thompson@example.com",
- "relationship": [
- "signatory",
- "trustee"
], - "kyc_aml_status": "clear",
- "kyc_aml_status_updated_at": "2025-02-11T10:15:30Z"
}
], - "organisations": [
- {
- "organisation_name": "Omega Solutions Ltd.",
- "representative": "Sophie Carter",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441189602345",
- "email": "contact@omegasolutions.co.uk",
- "relationship": [
- "trustee",
- "beneficiary"
], - "kyb_aml_status": "in_progress",
- "kyb_aml_status_updated_at": "2025-02-11T12:30:00Z"
}
]
}, - "total_gross_pension_withdrawal_life_time": "string",
- "current_year_total_gross_pension_withdrawal": "string",
- "total_net_pension_withdrawal_life_time": "string",
- "current_year_total_net_pension_withdrawal": "string",
- "current_year_total_tax_paid": "string",
- "total_tax_paid_life_time": "string",
- "current_year_total_gross_drawdown_withdrawal": "string",
- "total_gross_drawdown_withdrawal_life_time": "string",
- "current_year_total_net_drawdown_withdrawal": "string",
- "total_net_drawdown_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_drawdown": "string",
- "total_tax_paid_from_drawdown_life_time": "string",
- "current_year_total_gross_ufpls_withdrawal": "string",
- "total_gorss_ufpls_withdrawal_life_time": "string",
- "current_year_total_net_ufpls_withdrawal": "string",
- "total_net_ufpls_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_ufpls": "string",
- "total_tax_paid_from_ufpls_life_time": "string",
- "current_year_total_tax_free_cash_paid_from_ufpls": "string",
- "total_tax_free_cash_paid_from_ufpls_life_time": "string",
- "current_year_total_gross_taxable_ufpls_withdrawal": "string",
- "total_gross_taxable_ufpls_withdrawal_life_time": "string",
- "personal_allowance_utilized": "string",
- "additional_pay": "string",
- "tax_overpaid": "string",
- "past_gross_contributions": {
- "gross_contribution_year-1": "2000",
- "gross_contribution_year-2": "1500",
- "gross_contribution_year-3": "1000"
}
}
], - "next_page_available": true
}
This endpoint facilitates the creation of an investor account for a selected financial product. Currently, this endpoint supports the creation of investor accounts for Treasury Management
and Stocks JISA
financial products.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
account_id | string <= 20 characters Investor account ID. In the absence of an Account ID in the request , one will be generated automatically. |
investor_id required | Array of strings If multiple investors are linked to the account, include their corresponding Investor IDs in the investor_id array. Note that the addition of multiple investors is only allowed when the financial_product_id is |
financial_product_id required | string Enum: "treasury_management" "stocks_jisa" |
account_type | string Enum: "individual" "business" Type of the account.
|
account_sub_type | string or null Enum: "individual" "power_of_attorney" "court_of_protection" "sipp" "ssas" "trust" "business" "charity" "sole_trader" "partnership" Sub type of the account
|
date_of_account_activation | string <date> The date the account was opened by the investor. date_of_account_activation should be provided only if an external account_id is provided in the request. |
additional_external_details | object This field is used to capture additional information or flags specific to the investor account, represented as key-value pairs. |
object Individual and organisation related parties of an account. |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "account_id": "CASHACC1674797806011",
- "investor_id": [
- "inv-XUT11265"
], - "financial_product_id": "treasury_management",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "date_of_account_activation": "2024-08-27",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}, - "related_parties": {
- "individuals": [
- {
- "title": "Mr.",
- "first_name": "Eleanor",
- "last_name": "Thompson",
- "tax_id": "AB123456C",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441225960123",
- "email": "eleanor.thompson@example.com",
- "relationship": [
- "signatory",
- "trustee"
], - "kyc_aml_status": "clear"
}
], - "organisations": [
- {
- "organisation_name": "Omega Solutions Ltd.",
- "representative": "Sophie Carter",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441189602345",
- "email": "contact@omegasolutions.co.uk",
- "relationship": [
- "trustee",
- "beneficiary"
], - "kyb_aml_status": "in_progress"
}
]
}
}
{- "account_id": "CASHACC1674797806011",
- "investor_id": [
- "inv-XUT11265"
], - "financial_product_id": "treasury_management",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "date_of_account_activation": "2024-08-27T00:00:00.000Z",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}, - "status": "active",
- "related_parties": {
- "individuals": [
- {
- "title": "Mr.",
- "first_name": "Eleanor",
- "last_name": "Thompson",
- "tax_id": "AB123456C",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441225960123",
- "email": "eleanor.thompson@example.com",
- "relationship": [
- "signatory",
- "trustee"
], - "kyc_aml_status": "clear",
- "kyc_aml_status_updated_at": "2025-02-11T10:15:30Z"
}
], - "organisations": [
- {
- "organisation_name": "Omega Solutions Ltd.",
- "representative": "Sophie Carter",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441189602345",
- "email": "contact@omegasolutions.co.uk",
- "relationship": [
- "trustee",
- "beneficiary"
], - "kyb_aml_status": "in_progress",
- "kyb_aml_status_updated_at": "2025-02-11T12:30:00Z"
}
]
}, - "reference_version": 1,
- "created_at": "2024-08-28T11:10:49.606Z",
- "updated_at": "2024-08-28T11:10:49.606Z"
}
account_id required | string Unique identifier of the investor account |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/investor-accounts/v2/%7Baccount_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "account_id": "SSISA1663750577493",
- "investor_id": [
- "inv-QXR38578"
], - "financial_product_id": "stocks_isa",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "jisa": {
- "maturity_date": "2025-06-30T00:00:00.000Z",
- "maturity_instruction_status": "Pending",
- "maturity_instruction": "Continue with ISA",
- "reason": "Investor has reached the maturity age and is eligible for conversion."
}, - "date_of_account_activation": "2022-09-21T08:56:17.493Z",
- "tax_year": "2025",
- "status": "active",
- "pot_id": [
- "pot-MKQ5634576",
- "pot-DFT5033872"
], - "current_year_subscription": "false",
- "first_subscription_date_for_current_year": "2019-08-24T14:15:22Z",
- "current_year_total_contribution": "string",
- "current_year_total_withdrawals": "string",
- "current_year_total_isa_contribution": "string",
- "current_year_total_isa_withdrawals": "string",
- "current_year_total_jisa_contribution": "string",
- "current_year_RAS_claimed": "string",
- "current_year_gross_contribution": "string",
- "current_year_MPAA_utilized": "string",
- "current_year_MPAA_remaining": "string",
- "current_year_RAS_claims_pending": "string",
- "current_year_LISA_bonus_claimed": "string",
- "current_year_LISA_bonus_pending": "string",
- "current_year_withdrawal_charges": "string",
- "current_year_pending_withdrawals": "string",
- "total_contribution": "string",
- "total_gross_contribution": "string",
- "total_bonus_claimed": "string",
- "total_withdrawals": "string",
- "total_withdrawal_charges": "string",
- "total_market_value": "0",
- "isa_allowance_remaining": "20000",
- "jisa_allowance_remaining": "8000",
- "lisa_allowance_remaining": "4000",
- "lsdba_percentage_used": "2.12",
- "lsa_percentage_used": "1.12",
- "lsdba_utilised": "12321.23",
- "lsa_utilised": "12312.11",
- "custodian_account_reference": "CAR573838383",
- "custodian_id": "CID594898ff",
- "custodian_client_reference": "CCR578fh8",
- "regulator_advisor_id": "RAI48483jd",
- "life_events": [
- {
- "event_id": "LISALETI-SCX540",
- "event_type": "Terminal illness",
- "status": "completed"
}
], - "account_ownership": "individual",
- "reference_version": 1,
- "created_at": "2022-12-29T10:36:03.064Z",
- "updated_at": "2022-12-29T10:36:03.064Z",
- "hmrc_data": {
- "status": "hmrc_process_not_started",
- "lisa_investor_reference": "string",
- "reason": "string"
}, - "isa_account_type": "X",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}, - "related_parties": {
- "individuals": [
- {
- "title": "Mr.",
- "first_name": "Eleanor",
- "last_name": "Thompson",
- "tax_id": "AB123456C",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441225960123",
- "email": "eleanor.thompson@example.com",
- "relationship": [
- "signatory",
- "trustee"
], - "kyc_aml_status": "clear",
- "kyc_aml_status_updated_at": "2025-02-11T10:15:30Z"
}
], - "organisations": [
- {
- "organisation_name": "Omega Solutions Ltd.",
- "representative": "Sophie Carter",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441189602345",
- "email": "contact@omegasolutions.co.uk",
- "relationship": [
- "trustee",
- "beneficiary"
], - "kyb_aml_status": "in_progress",
- "kyb_aml_status_updated_at": "2025-02-11T12:30:00Z"
}
]
}, - "total_gross_pension_withdrawal_life_time": "string",
- "current_year_total_gross_pension_withdrawal": "string",
- "total_net_pension_withdrawal_life_time": "string",
- "current_year_total_net_pension_withdrawal": "string",
- "current_year_total_tax_paid": "string",
- "total_tax_paid_life_time": "string",
- "current_year_total_gross_drawdown_withdrawal": "string",
- "total_gross_drawdown_withdrawal_life_time": "string",
- "current_year_total_net_drawdown_withdrawal": "string",
- "total_net_drawdown_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_drawdown": "string",
- "total_tax_paid_from_drawdown_life_time": "string",
- "current_year_total_gross_ufpls_withdrawal": "string",
- "total_gorss_ufpls_withdrawal_life_time": "string",
- "current_year_total_net_ufpls_withdrawal": "string",
- "total_net_ufpls_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_ufpls": "string",
- "total_tax_paid_from_ufpls_life_time": "string",
- "current_year_total_tax_free_cash_paid_from_ufpls": "string",
- "total_tax_free_cash_paid_from_ufpls_life_time": "string",
- "current_year_total_gross_taxable_ufpls_withdrawal": "string",
- "total_gross_taxable_ufpls_withdrawal_life_time": "string",
- "personal_allowance_utilized": "string",
- "additional_pay": "string",
- "tax_overpaid": "string",
- "past_gross_contributions": {
- "gross_contribution_year-1": "2000",
- "gross_contribution_year-2": "1500",
- "gross_contribution_year-3": "1000"
}
}
Update an existing investor account. The system will update only the fields sent in the payload. Field mentioned as Nullable can be deleted by updating those values with null. Custodian details including the custodian_id, custodian_account_reference, custodian_client_ref and regulator_advisor_id can be updated for an account through this endpoint only. Updating related_parties is allowed via this endpoint only for Treasury Management
investor accounts.
account_id required | string Unique identifier of the investor account |
x-api-key required | string ApiSecretKey |
custodian_account_reference | string or null <= 64 characters |
custodian_id | string or null <= 64 characters |
custodian_client_reference | string or null <= 64 characters |
regulator_advisor_id | string or null <= 64 characters |
object Individual and organisation related parties of an account for update request. | |
status | string Enum: "active" "inactive" Only allowed if financial_product_type is |
reference_version required | integer |
{- "custodian_account_reference": "CAR573838383",
- "custodian_id": "CID594898ff",
- "custodian_client_reference": "CCR578fh8",
- "regulator_advisor_id": "RAI48483jd",
- "related_parties": {
- "individuals": [
- {
- "title": "Mr.",
- "first_name": "Eleanor",
- "last_name": "Thompson",
- "tax_id": "AB123456C",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441225960123",
- "email": "eleanor.thompson@example.com",
- "relationship": [
- "signatory",
- "trustee"
], - "kyc_aml_status": "clear"
}
], - "organisations": [
- {
- "organisation_name": "Omega Solutions Ltd.",
- "representative": "Sophie Carter",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441189602345",
- "email": "contact@omegasolutions.co.uk",
- "relationship": [
- "trustee",
- "beneficiary"
], - "kyb_aml_status": "in_progress"
}
]
}, - "status": "active",
- "reference_version": 1
}
{- "account_id": "SSISA1663750577493",
- "investor_id": [
- "inv-QXR38578"
], - "financial_product_id": "stocks_isa",
- "account_type": "individual",
- "account_sub_type": "power_of_attorney",
- "jisa": {
- "maturity_date": "2025-06-30T00:00:00.000Z",
- "maturity_instruction_status": "Pending",
- "maturity_instruction": "Continue with ISA",
- "reason": "Investor has reached the maturity age and is eligible for conversion."
}, - "date_of_account_activation": "2022-09-21T08:56:17.493Z",
- "tax_year": "2025",
- "status": "active",
- "pot_id": [
- "pot-MKQ5634576",
- "pot-DFT5033872"
], - "current_year_subscription": "false",
- "first_subscription_date_for_current_year": "2019-08-24T14:15:22Z",
- "current_year_total_contribution": "string",
- "current_year_total_withdrawals": "string",
- "current_year_total_isa_contribution": "string",
- "current_year_total_isa_withdrawals": "string",
- "current_year_total_jisa_contribution": "string",
- "current_year_RAS_claimed": "string",
- "current_year_gross_contribution": "string",
- "current_year_MPAA_utilized": "string",
- "current_year_MPAA_remaining": "string",
- "current_year_RAS_claims_pending": "string",
- "current_year_LISA_bonus_claimed": "string",
- "current_year_LISA_bonus_pending": "string",
- "current_year_withdrawal_charges": "string",
- "current_year_pending_withdrawals": "string",
- "total_contribution": "string",
- "total_gross_contribution": "string",
- "total_bonus_claimed": "string",
- "total_withdrawals": "string",
- "total_withdrawal_charges": "string",
- "total_market_value": "0",
- "isa_allowance_remaining": "20000",
- "jisa_allowance_remaining": "8000",
- "lisa_allowance_remaining": "4000",
- "lsdba_percentage_used": "2.12",
- "lsa_percentage_used": "1.12",
- "lsdba_utilised": "12321.23",
- "lsa_utilised": "12312.11",
- "custodian_account_reference": "CAR573838383",
- "custodian_id": "CID594898ff",
- "custodian_client_reference": "CCR578fh8",
- "regulator_advisor_id": "RAI48483jd",
- "life_events": [
- {
- "event_id": "LISALETI-SCX540",
- "event_type": "Terminal illness",
- "status": "completed"
}
], - "account_ownership": "individual",
- "reference_version": 1,
- "created_at": "2022-12-29T10:36:03.064Z",
- "updated_at": "2022-12-29T10:36:03.064Z",
- "hmrc_data": {
- "status": "hmrc_process_not_started",
- "lisa_investor_reference": "string",
- "reason": "string"
}, - "isa_account_type": "X",
- "additional_external_details": {
- "non_uk_account": true,
- "non_uk_tax_payer": true,
- "non_uk_tax_payer_reason": "Residing in another country for employment purposes",
- "pep": true,
- "pep_reason": "Previously held a government ministerial position"
}, - "related_parties": {
- "individuals": [
- {
- "title": "Mr.",
- "first_name": "Eleanor",
- "last_name": "Thompson",
- "tax_id": "AB123456C",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441225960123",
- "email": "eleanor.thompson@example.com",
- "relationship": [
- "signatory",
- "trustee"
], - "kyc_aml_status": "clear",
- "kyc_aml_status_updated_at": "2025-02-11T10:15:30Z"
}
], - "organisations": [
- {
- "organisation_name": "Omega Solutions Ltd.",
- "representative": "Sophie Carter",
- "address": {
- "postal_code": "EC1A 1BB",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "phone_number": "+441189602345",
- "email": "contact@omegasolutions.co.uk",
- "relationship": [
- "trustee",
- "beneficiary"
], - "kyb_aml_status": "in_progress",
- "kyb_aml_status_updated_at": "2025-02-11T12:30:00Z"
}
]
}, - "total_gross_pension_withdrawal_life_time": "string",
- "current_year_total_gross_pension_withdrawal": "string",
- "total_net_pension_withdrawal_life_time": "string",
- "current_year_total_net_pension_withdrawal": "string",
- "current_year_total_tax_paid": "string",
- "total_tax_paid_life_time": "string",
- "current_year_total_gross_drawdown_withdrawal": "string",
- "total_gross_drawdown_withdrawal_life_time": "string",
- "current_year_total_net_drawdown_withdrawal": "string",
- "total_net_drawdown_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_drawdown": "string",
- "total_tax_paid_from_drawdown_life_time": "string",
- "current_year_total_gross_ufpls_withdrawal": "string",
- "total_gorss_ufpls_withdrawal_life_time": "string",
- "current_year_total_net_ufpls_withdrawal": "string",
- "total_net_ufpls_withdrawal_life_time": "string",
- "current_year_total_tax_paid_from_ufpls": "string",
- "total_tax_paid_from_ufpls_life_time": "string",
- "current_year_total_tax_free_cash_paid_from_ufpls": "string",
- "total_tax_free_cash_paid_from_ufpls_life_time": "string",
- "current_year_total_gross_taxable_ufpls_withdrawal": "string",
- "total_gross_taxable_ufpls_withdrawal_life_time": "string",
- "personal_allowance_utilized": "string",
- "additional_pay": "string",
- "tax_overpaid": "string",
- "past_gross_contributions": {
- "gross_contribution_year-1": "2000",
- "gross_contribution_year-2": "1500",
- "gross_contribution_year-3": "1000"
}
}
The projection endpoint provides a projection of pension accounts.
For SIPP Accumulation accounts, projection is provided for the end of the 1st, 3rd, and 5th years and the retirement year by default.
For monthly drawdown, projection is provided for end of the 5th and 10th years and the year when investor’s age where the pension fund goes to zero by default. If it is not going to zero before investor ages 100 years, response will be The pension will last beyond the 100th year
ⓘ This feature is currently in BETA mode
This endpoint supports to project accumulation of a pension account.
x-api-key required | string ApiSecretKey |
name required | string <= 100 characters Name of the investor |
date_of_birth required | string <date> Should be today or an earlier date |
intended_retirement_age required | integer At most should be 100. Should be greater than current age |
current_pension_value required | number Current value of the pension pot. Can contain up to 2 decimal points |
growth_rate required | number Annual growth rate of the pot. Can contain up to 2 decimal points |
Array of objects | |
one_off_payment | number One-off payments are added to the initial value as tax relievable. Can contain up to 2 decimal points |
transfer_in | number Transfer-ins are added to the initial value as tax relievable. Can contain up to 2 decimal points |
Array of objects | |
projection_coverage_years | Array of arrays Projection is given for the requested coverage years and the retirement year. If not given, projection is given for 1st, 3rd, 5th and retirement year. Can contains positive integers less than 100 |
{- "name": "David Brown",
- "date_of_birth": "1963-07-19",
- "intended_retirement_age": 60,
- "current_pension_value": 1000,
- "growth_rate": 2.5,
- "recurring_contributions": [
- {
- "frequency": "Monthly",
- "amount": 600
}
], - "one_off_payment": 500,
- "transfer_in": 500,
- "fees": [
- {
- "fee_type": "Management fee",
- "frequency": "Monthly",
- "amount": 600
}
], - "projection_coverage_years": [
- 5
]
}
{- "name": "David Brown",
- "date_of_birth": "1963-07-19",
- "intended_retirement_age": 60,
- "current_pension_value": 1000,
- "growth_rate": 2.5,
- "recurring_contributions": [
- {
- "frequency": "Monthly",
- "amount": 600
}
], - "one_off_payment": 500,
- "transfer_in": 500,
- "fees": [
- {
- "fee_type": "Management fee",
- "frequency": "Monthly",
- "amount": 600
}
], - "projection_coverage_years": [
- 5
], - "pension_projections": [
- {
- "coverage_year": 5,
- "date": "2028-05-09",
- "value": 1167.682
}
], - "inflation_rate": 2
}
ⓘ This feature is currently in BETA mode
This endpoint supports to project drawdown of a pension account.
x-api-key required | string ApiSecretKey |
name required | string <= 100 characters Name of the investor |
date_of_birth required | string <date> Should be today or an earlier date |
current_pension_value required | number Current value of the pension pot. Can contain up to 2 decimal points |
growth_rate required | number Annual growth rate of the pot. Can contain up to 2 decimal points |
Array of objects | |
one_off_payment | number One-off payments are added to the initial value as tax relievable. Can contain up to 2 decimal points |
transfer_in | number Transfer-ins are added to the initial value as tax relievable. Can contain up to 2 decimal points |
Array of objects | |
one_off_withdrawal | number One-off withdrawals are deducted from the initial value. Can contain up to 2 decimal points |
Array of objects | |
projection_coverage_years | Array of arrays Projection is given for the requested coverage years. If not given, projection is given for 5th and 10th years. Can contain positive integers less than 100 |
{- "name": "David Brown",
- "date_of_birth": "1963-07-19",
- "current_pension_value": 1000,
- "growth_rate": 2.5,
- "recurring_contributions": [
- {
- "frequency": "Monthly",
- "amount": 600
}
], - "one_off_payment": 500,
- "transfer_in": 500,
- "fees": [
- {
- "fee_type": "Management fee",
- "frequency": "Monthly",
- "amount": 600
}
], - "one_off_withdrawal": 500,
- "recurring_withdrawals": [
- {
- "frequency": "Monthly",
- "amount": 600
}
], - "projection_coverage_years": [
- 5
]
}
{- "name": "David Brown",
- "date_of_birth": "1963-07-19",
- "current_pension_value": 1000,
- "growth_rate": 2.5,
- "recurring_contributions": [
- {
- "frequency": "Monthly",
- "amount": 600
}
], - "one_off_payment": 500,
- "transfer_in": 500,
- "fees": [
- {
- "fee_type": "Management fee",
- "frequency": "Monthly",
- "amount": 600
}
], - "one_off_withdrawal": 500,
- "recurring_withdrawals": [
- {
- "frequency": "Monthly",
- "amount": 600
}
], - "projection_coverage_years": [
- 5
], - "age_pension_runout": 60,
- "pension_projections": [
- {
- "coverage_year": 5,
- "date": "2028-05-09",
- "value": 1167.682
}
], - "inflation_rate": 2
}
Returns a paged array of crystallisation requests.
crystallisation_id | string Crystallisation ID |
investor_id | string Investor ID |
status | string Enum: "Accepted" "Partially completed" "Completed" "Rejected" "Failed" Status of crystallisation request |
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. Results are sorted decending order of the created date & time. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. Results are sorted decending order of the created date & time. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/pots/v1/crystallisation?crystallisation_id=SOME_STRING_VALUE&investor_id=SOME_STRING_VALUE&status=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "crystallisations": [
- {
- "crystallisation_id": "SIPPCR-AB24DE7",
- "investor_id": "inv-XUT11200",
- "bank_account_id": "ba-bc00c28f-b3fc-42b7",
- "crystallisation_instructions": [
- {
- "pot_id": "pot-GYQ5423100",
- "value": "1000"
}
], - "drawdown_instructions": [
- {
- "pot_id": "pot-XWL3855774",
- "purpose": "cash",
- "percentage": "30"
}, - {
- "pot_id": "pot-SDQ5009730",
- "purpose": "invest",
- "percentage": "70"
}
], - "reason": "Free cash not available",
- "status": "Accepted",
- "allocation_details": [
- {
- "accumulation_pot_id": "pot-GYQ5423100",
- "crystallisation_amount": "1000",
- "pcls_amount": "250",
- "drawdown_amount": "750",
- "drawdown_allocation": [
- {
- "pot_id": "pot-XWL3855774",
- "amount": "225"
}, - {
- "pot_id": "pot-SDQ5009730",
- "amount": "525"
}
]
}
], - "investor_drawdown_statistics": {
- "total_crystallisation_amount": "7000",
- "total_drawdown_amount": "5250",
- "lsdba_percentage_used": "1.23%",
- "lsa_percentage_used": "3.21%",
- "pcls_allowance_utilized": "1750",
- "pcls_allowance_remaining": "266525"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "next_page_available": true
}
Returns a response of crystallisation request.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
investor_id required | string Investor ID of the investor making the crystallisation |
bank_account_id required | string Bank account ID of Investor |
required | Array of objects Crystallisation instructions |
required | Array of objects Drawdown instructions |
{- "request_id": "266ea41d-adf5-480b-af50-15b940c2b846",
- "investor_id": "inv-XUT11200",
- "bank_account_id": "ba-bc00c28f-b3fc-42b7",
- "crystallisation_instructions": [
- {
- "pot_id": "pot-GYQ5423100",
- "value": "1000"
}
], - "drawdown_instructions": [
- {
- "pot_id": "pot-XWL3855774",
- "purpose": "cash",
- "percentage": "30"
}, - {
- "pot_id": "pot-SDQ5009730",
- "purpose": "invest",
- "percentage": "70"
}
]
}
{- "crystallisation_id": "SIPPCR-AB24DE7",
- "investor_id": "inv-XUT11200",
- "bank_account_id": "ba-bc00c28f-b3fc-42b7",
- "crystallisation_instructions": [
- {
- "pot_id": "pot-GYQ5423100",
- "value": "1000"
}
], - "drawdown_instructions": [
- {
- "pot_id": "pot-XWL3855774",
- "purpose": "cash",
- "percentage": "30"
}, - {
- "pot_id": "pot-SDQ5009730",
- "purpose": "invest",
- "percentage": "70"
}
], - "status": [
- "Accepted"
]
}
The "LISA Transactions" section is tailored exclusively for the financial product Lifetime ISA (LISA). It includes a specialized set of endpoints designed to handle transactions related to LISA accounts' unique features and requirements.
Update withdrawal payment date of a scheduled LISA withdrawal transaction. The system will update only the fields sent in the request. Field mentioned as Nullable can be deleted by updating those values with null. Sending empty values for fields will not update the fields.
transaction_id required | string Transaction ID of the withdrawal transaction that needs to be updated |
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> The system generated unique request ID |
reference_verison required | integer Reference version of the transaction |
trade_date required | string Trade Date of the withdrawal |
{- "request_id": "20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "reference_verison": 1,
- "trade_date": "2020-09-01"
}
{- "transaction_id": "0fec1e58-b197-4052-99cf-2218496c5482",
- "investment_product_id": "string",
- "transaction_value": "string",
- "pot_id": "pot-SDQ5659730",
- "primary_transaction_type": "Withdrawal",
- "sub_transaction_type": "Withdrawal",
- "type": "pending",
- "sub_type": "scheduled",
- "currency": "string",
- "direction": "in",
- "external_transaction_reference": "string",
- "created_at": "string",
- "updated_at": "string",
- "trade_date": "string",
- "settlement_date": "string",
- "origin": "api",
- "withdrawal_charge_applicable": true,
- "withdrawal_charge": "string"
}
Workplace employers are an entity where organizations can create workplace employers and manage them.
This API endpoint allows you to create, update, and retrieve workplace employers. Additionally, it provides the capability to view the employees (investors) attached to a particular workplace employer.
This endpoint will create a workplace contributing employer in the system.
x-api-key required | string ApiSecretKey |
name required | string <= 100 characters Name of the workplace employer |
registration_number required | string Registration number of the workplace employer, this should be unique for employers. |
required | object Registered address of the workplace employer |
required | object Address of designated location for receiving official communications |
company_structure | string Value: "LLC" Structure of the company. |
object Contact details of an individual of the company. | |
kyb_aml_status | string Default: "not_started" Enum: "submitted" "kyb_failed_error" "pending" "clear" "not_started" Know Your Business status of the company |
status required | string Enum: "active" "inactive" Status of the workplace employer. Only the employers with the kyb_aml_status as clear can be set to active. |
{- "name": "Romayo Ltd",
- "registration_number": "1234567",
- "registered_address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "correspondence_address": {
- "postal_code": "A3 2CF",
- "address_line": "17",
- "street_name": "Flower Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "company_structure": "LLC",
- "contact_details": {
- "name": "Adam Clark",
- "email": "adamclark@gmail.com",
- "phone_number": "+441234567890"
}, - "kyb_aml_status": "clear",
- "status": "active"
}
{- "name": "Romayo Ltd",
- "registration_number": "1234567",
- "registered_address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "correspondence_address": {
- "postal_code": "A3 2CF",
- "address_line": "17",
- "street_name": "Flower Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "company_structure": "LLC",
- "contact_details": {
- "name": "Adam Clark",
- "email": "adamclark@gmail.com",
- "phone_number": "+441234567890"
}, - "kyb_aml_status": "clear",
- "status": "active",
- "workplace_employer_id": "wem-AHY58878",
- "reference_version": 1,
- "created_at": "2023-07-08T07:36:05.884Z",
- "updated_at": "2023-07-10T07:36:05.884Z"
}
This endpoint will retrieve all workplace contributing employers in the system.
page_size | string Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. |
page_number | string Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/workplace-employers/v1?page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "workplace_employers": [
- {
- "name": "Romayo Ltd",
- "registration_number": "1234567",
- "registered_address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "correspondence_address": {
- "postal_code": "A3 2CF",
- "address_line": "17",
- "street_name": "Flower Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "company_structure": "LLC",
- "contact_details": {
- "name": "Adam Clark",
- "email": "adamclark@gmail.com",
- "phone_number": "+441234567890"
}, - "kyb_aml_status": "clear",
- "status": "active",
- "workplace_employer_id": "wem-AHY58878",
- "reference_version": 1,
- "created_at": "2023-07-08T07:36:05.884Z",
- "updated_at": "2023-07-10T07:36:05.884Z"
}
], - "next_page_available": true
}
This endpoint will retrieve details of a particular workplace employer in the system.
workplace_employer_id required | string Workplace Employer ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/workplace-employers/v1/%7Bworkplace_employer_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "name": "Romayo Ltd",
- "registration_number": "1234567",
- "registered_address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "correspondence_address": {
- "postal_code": "A3 2CF",
- "address_line": "17",
- "street_name": "Flower Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "company_structure": "LLC",
- "contact_details": {
- "name": "Adam Clark",
- "email": "adamclark@gmail.com",
- "phone_number": "+441234567890"
}, - "kyb_aml_status": "clear",
- "status": "active",
- "workplace_employer_id": "wem-AHY58878",
- "reference_version": 1,
- "created_at": "2023-07-08T07:36:05.884Z",
- "updated_at": "2023-07-10T07:36:05.884Z"
}
This endpoint will update certain fields of a workplace employer in the system.
workplace_employer_id required | string Workplace Employer ID |
x-api-key required | string ApiSecretKey |
name | string <= 100 characters Name of the workplace employer |
registration_number | string Registration number of the workplace employer, this should be unique for employers. |
object Registered address of the workplace employer | |
object Address of designated location for receiving official communications | |
company_structure | string Value: "LLC" Structure of the company. |
object Contact details of an individual of the company. | |
kyb_aml_status | string Default: "not_started" Enum: "submitted" "kyb_failed_error" "pending" "clear" "not_started" Know Your Business status of the company |
status | string Enum: "active" "inactive" Status of the workplace employer. Only the employers with the kyb_aml_status as clear can be set to active. |
reference_version required | number |
{- "name": "Romayo Ltd",
- "registration_number": "1234567",
- "registered_address": {
- "postal_code": "D2 2DF",
- "address_line": "14",
- "street_name": "Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "correspondence_address": {
- "postal_code": "B3 2CF",
- "address_line": "17",
- "street_name": "Church Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "company_structure": "LLC",
- "contact_details": {
- "name": "Clark Kent",
- "email": "clarkkent@gmail.com",
- "phone_number": "+441234567890"
}, - "kyb_aml_status": "clear",
- "status": "active",
- "reference_version": 1
}
{- "name": "Romayo Ltd",
- "registration_number": "1234567",
- "registered_address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "correspondence_address": {
- "postal_code": "A3 2CF",
- "address_line": "17",
- "street_name": "Flower Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "company_structure": "LLC",
- "contact_details": {
- "name": "Adam Clark",
- "email": "adamclark@gmail.com",
- "phone_number": "+441234567890"
}, - "kyb_aml_status": "clear",
- "status": "active",
- "workplace_employer_id": "wem-AHY58878",
- "reference_version": 1,
- "created_at": "2023-07-08T07:36:05.884Z",
- "updated_at": "2023-07-10T07:36:05.884Z"
}
This endpoint will provide investor details attached to a certain workplace employer.
workplace_employer_id required | string Workplace Employer ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/workplace-employers/v1/%7Bworkplace_employer_id%7D/investors \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "workplace_employer_id": "wem-AHY58878",
- "investors": [
- {
- "investor_id": "inv-XUT11265",
- "title": "Mr",
- "first_name": "John",
- "last_name": "Doe",
- "tax_id": "AB123456C"
}
]
}
The "Cash Investments" include a collection of endpoints that facilitate instructions for cash investment products.
The endpoint facilitates the creation of buy instruction for a cash investment product. The endpoint ensures that necessary validation checks are performed to verify account eligibility, and adherence to investment thresholds
x-api-key required | string ApiSecretKey |
request_id required | string Unique request id to ensure idempotency. (ex: UUID) |
required | object |
{- "request_id": "54523457845sdferhefGhiy9ur4",
- "investment_instructions": {
- "pot_id": "pot-NAH5143230",
- "value": "110",
- "investment_product_id": "CASHINV-EUQ86362",
- "client_order_id": "hsbc_new",
- "is_a_topup": false
}
}
{- "aggregated_transaction_id": "c106b5e7-aac5-4466-9698-fe4ea792a63r",
- "transaction_id": "c106b5e7-aac5-4466-9698-fe4ea792a67e",
- "investment_product_id": "CASHINV-EUQ86362",
- "pot_id": "pot-NAH5143230",
- "counterparty_id": "CPY-AHY58878",
- "primary_transaction_type": "Buy",
- "sub_transaction_type": "Cash deposit buy",
- "transaction_value": "110",
- "type": "pending",
- "sub_type": "scheduled",
- "currency": "GBP",
- "direction": "in",
- "origin": "api",
- "is_a_topup": false,
- "created_at": "2024-10-20T14:49:59.878Z",
- "updated_at": "2024-10-20T14:49:59.878Z"
}
This end point facilitates redemption requests for investments placed in cash deposit products.
x-api-key required | string ApiSecretKey |
request_id required | string Unique request id to ensure idempotency. (ex: UUID) |
pot_id required | string System generated ID of pot |
investment_product_id required | string System generated investment product ID |
deposit_reference required | string System generated reference of the deposit |
redemption_type required | string Enum: "partial" "full" Indicates if the redemption is partial or full (closure) |
currency required | string Value: "GBP" Currency of the deposit |
transaction_value | string Amount being redeemed. Must be in correct pattern (upto 2 decimal places, eg: 25, 332.3, 1050.25). Required for |
{- "request_id": "54523457845sdferhefGhiy9ur4",
- "pot_id": "pot-NAH5143230",
- "investment_product_id": "CASHINV-EUQ86362",
- "deposit_reference": "REDEMP-EUQ86362",
- "redemption_type": "partial",
- "currency": "GBP",
- "transaction_value": "1000.00"
}
{- "transaction_id": "c106b5e7-aac5-4466-9698-fe4ea792a63r",
- "aggregated_transaction_id": "e2af9f53-1cfc-4081-aab5-09250bd7d059",
- "pot_id": "pot-NAH5143230",
- "investment_product_id": "CASHINV-EUQ86362",
- "deposit_reference": "REDEMP-EUQ86362",
- "redemption_type": "partial",
- "currency": "GBP",
- "transaction_value": "1000.00",
- "primary_transaction_type": "Sell",
- "sub_transaction_type": "Cash deposit - full redemption",
- "type": "pending",
- "sub_type": "pending",
- "created_at": "2024-10-20T14:49:59.878Z",
- "updated_at": "2024-10-20T14:49:59.878Z"
}
This endpoint enables status updates for cash investment transactions (cash deposits buys, and redemptions). Status updates are only permitted for transactions in intermediate states and the transactions in terminal statuses can not be modified.
transaction_id required | string Unique identifier for the transaction. |
x-api-key required | string ApiSecretKey |
status required | string Value: "cancelled" The next desired state of the transaction. |
reason | string <= 200 characters Reason to update the transaction status. |
{- "status": "cancelled",
- "reason": "Unexpected delay"
}
{- "aggregated_transaction_id": "c106b5e7-aac5-4466-9698-fe4ea792a63r",
- "transaction_id": "c106b5e7-aac5-4466-9698-fe4ea792a67e",
- "investment_product_id": "CASHINV-EUQ86362",
- "pot_id": "pot-NAH5143230",
- "counterparty_id": "CPY-AHY58878",
- "primary_transaction_type": "Buy",
- "sub_transaction_type": "Cash deposit buy",
- "transaction_value": "2000.00",
- "type": "archived",
- "sub_type": "cancelled",
- "currency": "GBP",
- "direction": "in",
- "origin": "api",
- "is_a_topup": false,
- "created_at": "2024-10-20T14:49:59.878Z",
- "updated_at": "2024-10-20T14:49:59.878Z"
}
ⓘ This feature is currently in BETA mode
This API endpoint allows you to to retrieve counterparties.
This endpoint will retrieve all counterparties in the system.
page_size | string Page size for the query. This end-point has pagination capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. |
page_number | string Page number for the query. This end-point has pagination capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. |
sort | string Default: "desc" Enum: "asc" "desc" Sorting order; results are sorted by creation time. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/counterparties/v1?page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "counterparties": [
- {
- "counterparty_id": "CPY-AHY58878",
- "counterparty_name": "HSBC",
- "counterparty_type": "bank",
- "instruction_schedule": {
- "buy_frequency": "daily",
- "buy_schedule_time": "17:00h",
- "grace_period": 1
}, - "sell_instruction_schedule": {
- "sell_frequency": "daily",
- "sell_schedule_time": "17:00h",
- "grace_period": 1
}, - "bank_accounts": [
- {
- "bank_account_id": "ba-20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "account_name": "HSBC General Account",
- "bank_account_number": "******9343",
- "sort_code": "******89",
- "account_status": "active"
}
], - "status": "active",
- "attachments": [
- {
- "file_id": "FILE-MHS20094",
- "file_name": "Terms and conditions",
- "tags": [
- "application",
- "rules"
]
}
], - "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
], - "next_page_available": true
}
This endpoint will retrieve details of a particular counterparty in the system.
counterparty_id required | string Counterparty ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/counterparties/v1/%7Bcounterparty_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "counterparty_id": "CPY-AHY58878",
- "counterparty_name": "HSBC",
- "counterparty_type": "bank",
- "instruction_schedule": {
- "buy_frequency": "daily",
- "buy_schedule_time": "17:00h",
- "grace_period": 1
}, - "sell_instruction_schedule": {
- "sell_frequency": "daily",
- "sell_schedule_time": "17:00h",
- "grace_period": 1
}, - "bank_accounts": [
- {
- "bank_account_id": "ba-20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "account_name": "HSBC General Account",
- "bank_account_number": "******9343",
- "sort_code": "******89",
- "account_status": "active"
}
], - "status": "active",
- "attachments": [
- {
- "file_id": "FILE-MHS20094",
- "file_name": "Terms and conditions",
- "tags": [
- "application",
- "rules"
]
}
], - "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
ⓘ This feature is currently in BETA mode
This API endpoint allows you to create transfers and and retrieve the history of a transfer.
Transfer solution provider allowed currently is origo
Create a new transfer In.
x-api-key required | string ApiSecretKey |
request_id required | string <uuid> Unique request ID to ensure idempotency. (ex: UUID) |
service_provider required | string Enum: "origo" "wealthos" The transfer service provider facilitating the transfer. |
transfer_type required | string Enum: "cash" "in_specie" Defines whether the transfer is cash or in-specie. Only 'cash' is allowed currently. |
encash_all required | boolean Instruction to denote whether all pre-retirement benefits should be included in the settlement during the transfer process. This can be true only when transfer_type=cash. |
acquiring_account_id required | string The investor account ID where the transfer is directed. |
acquiring_pot_id required | string The investor pot ID where the transfer is directed. The pot should be under the investor_account id provided for acquiring_account_id. |
ceding_account_id required | string The account reference of the ceding party from which the transfer originates. |
case_contact_id | string Identifier of contact point within the receiving organisation for case queries. Required when a default value is not set in the system. Optional when a default value is set in the system. System automatically sets the default value if the request doesn’t have a value. If the request has a value and system has a default value, the value in the transfer request will be taken in. The input value should match with a contact setup under origo static data. If not, the request will be rejected. |
age_evidence_seen_by_receiving_provider | boolean Indicates that evidence of age has been supplied by the client. |
member_subject_to_bankruptcy_order | boolean Indicates that the client has received a court order regarding bankruptcy. |
object Adviser firm associated with the transfer. | |
nb_application_received_date required | string <date> The date that the transfer request was received from the investor. Should be on YYYY-MM-DD format. |
payment_account_id | string Identifier (assigned by the service_provider) of the bank account of the receiving organisation that is used to receive cash. Required when a default value is not set in the system. Optional when a default value is set in the system. System automatically sets the default value if the request doesn’t have a value. The input value should match with an acquiring bank account setup under origo static data. If not, the request will be rejected. |
scheme_reference_identifier | string Identifier (assigned by the service_provider) of the PSTRN record of the receiving organisation related to the scheme type of the transfer. Required when a default value is not set in the system and scheme_type=SIPP. Optional when a default value is set in the system and scheme_type=SIPP. System automatically sets the default value if the request doesn’t have a value. If the request has a value and the system has a default value, the value in the transfer will be taken. The input value should match with a PSTRN setup under origo static data. If not, the request will be rejected. |
ceding_provider_id required | string Identifier (assigned by the service_provider) of the ceding organisation. The input value should match with an organization setup under origo static data. If not, the request will be rejected. |
transfer_note | string <= 500 characters Initial information the receiving organisation wishes to make known to the ceding organisation regarding the transfer. |
approximate_value_of_pre_retirement_benefits required | string Approximate value of pre-retirement benefits to transfer. Numeral string with two decimal point precision |
financial_product_id required | string Value: "sipp_accumulation" Only "sipp_accumulation" is allowed currently |
purpose | string Enum: "cash" "invest" Default value will be "cash" if not set. When set to "cash", transferred funds remain as cash in the acquiring pot. When set to "invest" and the pot has a portfolio attached, it will trigger portfolio investment instructions based on the portfolio configuration. |
{- "request_id": "e6ac449f-4b29-6116-ac05-b3c9d27ef2f1",
- "service_provider": "origo",
- "scheme_type": "sipp",
- "transfer_type": "cash",
- "encash_all": true,
- "acquiring_account_id": "SIPPACC1729649516361",
- "acquiring_pot_id": "pot-IPY5525148",
- "ceding_account_id": "5823364",
- "nb_application_received_date": "2024-10-27",
- "ceding_provider_id": "12251",
- "approximate_value_of_pre_retirement_benefits": "100.50",
- "financial_product_id": "sipp_accumulation",
- "case_contact_id": "5648",
- "age_evidence_seen_by_receiving_provider": true,
- "member_subject_to_bankruptcy_order": true,
- "payment_account_id": "37643",
- "scheme_reference_identifier": "4844",
- "purpose": "cash"
}
{- "transfer_id": "TRF-IN-PRC7054758",
- "service_provider": "origo",
- "scheme_type": "sipp",
- "financial_product_id": "sipp_accumulation",
- "transfer_type": "cash",
- "encash_all": true,
- "acquiring_account_id": "SIPPACC1727260918931",
- "acquiring_pot_id": "pot-OBO1112665",
- "ceding_account_id": "Test145824",
- "investor_details": {
- "investor_id": "inv-FFI43881",
- "given_name": "Emma",
- "family_name": "Williams",
- "date_of_birth": "1965-09-09",
- "national_insurance_number": "AB569869D",
- "age_evidence_seen_by_receiving_provider": true,
- "member_subject_to_bankruptcy_order": true,
- "postcode": "EC1Y 8SY",
- "country": "GB",
- "enhanced_or_primary_protection": "No",
- "scottish_tax_status": "Rest of UK",
- "tax_residence": "GB-ENG"
}, - "receiving_contract": {
- "adviser_firm": {
- "adviser_firm_name": "string",
- "adviser_firm_details": "string",
- "adviser_firm_postcode": "string",
- "adviser_firm_telephone": "string"
}, - "nb_application_received_date": "2019-08-24",
- "payment_account_id": "string",
- "scheme_reference_identifier": "string"
}, - "ceding_contract": {
- "ceding_provider_id": "12722",
- "transaction_type": "P2P",
- "reference_number": "Test Account Tes545se",
- "approximate_value_of_pre_retirement_benefits": 2500
}, - "transfer_creation_date": "2024-10-21T02:10:47.161Z",
- "scheme_reference_identifier": "14562",
- "transfer_note": "Note 14587",
- "created_at": "2024-10-21T02:10:47.339Z",
- "purpose": "cash"
}
Retrieve all transfers
financial_product_id | string Enum: "sipp_accumulation" "sipp_fad" |
service_provider | string Enum: "wealthos" "origo" |
service_provider_status | string Enum: "Unallocated" "In Progress" "Funds Received" "Funds sent" "Cancelled" "Out of Scope" "Not Found" "Already Transferred" |
investor_id | string |
transfer_status | string Enum: "Created" "Pending" "In progress" "Ceding completed" "Acquiring received" "Acquiring completed" "Rejected" "Cancelled" |
updated_at | string Should be on YYYY-MM-DD format |
page_size | string Page size for the query. This end-point has pagination capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is [1000]. |
page_number | string Page number for the query. This end-point has pagination capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/transfers/v1?financial_product_id=SOME_STRING_VALUE&service_provider=SOME_STRING_VALUE&service_provider_status=SOME_STRING_VALUE&investor_id=SOME_STRING_VALUE&transfer_status=SOME_STRING_VALUE&updated_at=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "transfers": [
- {
- "transfer_id": "TRF-IN-PRC7054758",
- "direction": "in",
- "service_provider": "origo",
- "financial_product_id": "sipp_accumulation",
- "transfer_type": "cash",
- "transfer_status": "Created",
- "reject_reason": "string",
- "service_provider_status": "Unallocated",
- "encash_all": true,
- "acquiring_account_id": "string",
- "acquiring_pot_id": "pot-OBO1112665",
- "case_contact_id": "string",
- "ceding_account_id": "string",
- "investor_details": {
- "investor_id": "inv-FFI43881",
- "given_name": "Emma",
- "family_name": "Williams",
- "date_of_birth": "1965-09-09",
- "national_insurance_number": "AB569869D",
- "age_evidence_seen_by_receiving_provider": true,
- "member_subject_to_bankruptcy_order": true,
- "postcode": "EC1Y 8SY",
- "country": "GB",
- "enhanced_or_primary_protection": "No",
- "scottish_tax_status": "Rest of UK",
- "tax_residence": "GB-ENG"
}, - "receiving_contract": {
- "adviser_firm": {
- "adviser_firm_name": "string",
- "adviser_firm_details": "string",
- "adviser_firm_postcode": "string",
- "adviser_firm_telephone": "string"
}, - "nb_application_received_date": "2019-08-24",
- "payment_account_id": "string",
- "scheme_reference_identifier": "string"
}, - "ceding_contract": {
- "ceding_provider_id": "string",
- "transaction_type": "string",
- "reference_number": "string",
- "approximate_value_of_pre_retirement_benefits": 0,
- "ceding_provider_name": "string",
- "product_type": "string",
- "retirement_date": "string",
- "scheme_reference_number": "string"
}, - "case_id": "string",
- "client_transfer_id": "string",
- "ceding_contact_details": {
- "name": "string",
- "email": "string",
- "telephone": "string",
- "additional_information": "string"
}, - "allowances": {
- "money_purchase_annual_allowance": true,
- "reduced_lifetime_allowance": true
}, - "expected_completion_date": "2019-08-24",
- "scheduled_completion_date": "2019-08-24",
- "transfer_payment": {
- "payment_reference": "string",
- "total_payment_amount": 0,
- "larger_payment_indicator": true,
- "payment_method_type": "string",
- "pre_retirement_payment": "string",
- "payment_account": {
- "account_name": "string",
- "sortcode": "string",
- "account_number": "string",
- "roll_number": "string",
- "additional_information": "string"
}, - "payment_cheque_account": {
- "payee_name": "string",
- "line": [
- "string"
], - "postcode": "string"
}
}, - "date_funds_sent": "2019-08-24T14:15:22Z",
- "amount_received": "string",
- "date_funds_received": "2019-08-24T14:15:22Z",
- "funds_delayed_reason": "Additional public holiday",
- "transaction_id": "76c970a4-3c5a-4012-aea8-234e91a643e5",
- "transaction_reconciled": true,
- "transfer_creation_date": "2024-10-21T02:10:47.161Z",
- "transfer_delay_reason": "Additional Checks Required",
- "created_at": "2024-10-21T02:10:47.339Z",
- "updated_at": "2024-10-21T02:10:47.339Z",
- "purpose": "cash"
}
], - "next_page_available": true
}
Get the latest summary of a transfer by transfer_id.
transfer_id required | string Transfer ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/transfers/v1/%7Btransfer_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "transfer_id": "TRF-IN-WHS4697677",
- "direction": "in",
- "service_provider": "origo",
- "transfer_type": "cash",
- "transfer_status": "In progress",
- "service_provider_status": "Unallocated",
- "encash_all": true,
- "acquiring_account_id": "SIPPACC1731477396232",
- "acquiring_pot_id": "pot-YHS7473175",
- "case_contact_id": "5906",
- "ceding_account_id": "5823364",
- "investor_details": {
- "investor_id": "inv-AKY33138",
- "given_name": "Barry",
- "family_name": "Allen",
- "date_of_birth": "1960-12-09",
- "national_insurance_number": "AX799984C",
- "age_evidence_seen_by_receiving_provider": true,
- "member_subject_to_bankruptcy_order": true,
- "postcode": "S2 2DF",
- "country": "GB",
- "enhanced_or_primary_protection": "No",
- "scottish_tax_status": "Rest of UK",
- "tax_residence": "GB-ENG"
}, - "receiving_contract": {
- "nb_application_received_date": "2024-10-27",
- "payment_account_id": 37643,
- "scheme_reference_identifier": 10749
}, - "ceding_contract": {
- "ceding_provider_id": 12251,
- "transaction_type": "P2P",
- "reference_number": "5823364",
- "approximate_value_of_pre_retirement_benefits": 100
}, - "case_id": "377551",
- "client_transfer_id": "364415",
- "transfer_creation_date": "2024-12-02T15:55:06.719Z",
- "created_at": "2024-12-02T15:55:06.999Z",
- "updated_at": "2024-12-02T15:58:02.704Z"
}
This endpoint allows users to cancel transfer requests that are in 'Created' or 'In-progress' status. A successful request will result in the transfer status being updated to 'Cancelled' and will return the updated transfer details. This endpoint currently supports SIPP transfers where the service provider is Origo.
transfer_id required | string Transfer ID |
cancellation_reason | string Enum: "By Client Pre Completion" "Client Death" "Deferment" "Duplicate" "Data Entry Error" "Incorrect Ceding Provider" Mandatory when cancelling a transfer in |
comment | string |
{- "comment": "Client requested cancellation due to change in circumstances",
- "cancellation_reason": "By Client Pre Completion"
}
{- "transfer_id": "TRF-IN-PRC7054758",
- "service_provider": "origo",
- "scheme_type": "sipp",
- "transfer_type": "cash",
- "encash_all": true,
- "acquiring_account_id": "SIPPACC1727260918931",
- "acquiring_pot_id": "pot-OBO1112665",
- "ceding_account_id": "Test145824",
- "case_contact_id": 6198,
- "investor_details": {
- "investor_id": "inv-FFI43881",
- "given_name": "Emma",
- "family_name": "Williams",
- "date_of_birth": "1965-09-09",
- "national_insurance_number": "AB569869D",
- "age_evidence_seen_by_receiving_provider": true,
- "member_subject_to_bankruptcy_order": true,
- "postcode": "EC1Y 8SY",
- "country": "GB",
- "enhanced_or_primary_protection": "No",
- "scottish_tax_status": "Rest of UK",
- "tax_residence": "GB-ENG"
}, - "receiving_contract": {
- "adviser_firm": {
- "adviser_firm_name": "Financial Advisory Services Ltd",
- "adviser_firm_details": "Independent financial advisory firm",
- "adviser_firm_postcode": "EC1A 1BB",
- "adviser_firm_telephone": "020 7123 4567"
}, - "nb_application_received_date": "2019-08-24",
- "payment_account_id": "37643",
- "scheme_reference_identifier": "10749"
}, - "ceding_contract": {
- "ceding_provider_id": "12722",
- "transaction_type": "P2P",
- "reference_number": "Test Account Tes545se",
- "approximate_value_of_pre_retirement_benefits": 2500
}, - "transfer_creation_date": "2024-10-21T02:10:47.161Z",
- "scheme_reference_identifier": "14562",
- "purpose": "cash",
- "transfer_note": "Note 14587",
- "comment": "Client requested cancellation due to change in circumstances",
- "transfer_status": "Cancelled",
- "cancellation_reason": "By Client Pre Completion",
- "created_at": "2024-10-21T02:10:47.339Z",
- "updated_at": "2024-12-02T15:58:02.704Z"
}
API endpoints for managing distribution partners (White Label Partners, IFA Firms, and Individual IFAs) in the platform.
Enables creation and management of these entities while maintaining their hierarchical relationships, where IFAs belong to IFA Firms, and IFA Firms can optionally belong to White Label Partners. There are endpoints also to manage the assignment and de-assignment of distribution partners from different investor entities (currently limited to assignment at account level and will be extended in the future to manage assignment at investor level as well as pot level).
x-api-key required | string ApiSecretKey |
request_id required | string Unique request identifier. |
partner_name required | string Name of the Distribution partner. |
partner_type required | string Enum: "white_label" "ifa_firm" "ifa" Type of the Distribution partner. |
parent_partner_id | string ID of the parent partner, Required only for IFAs. |
contact_name | string Name of the contact person. Mainly for ifa_firm and white_label partners. |
object | |
object |
{- "request_id": "20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "partner_name": "ABC Inc",
- "partner_type": "white_label",
- "parent_partner_id": "iff-gfv35697",
- "contact_name": "David Brown",
- "contact_details": {
- "email": "davidbrown@gmail.com",
- "phone": "+441234567890",
- "address": {
- "street_1": "49",
- "street_2": "Featherstone Street",
- "city": "London",
- "state": "England",
- "postal_code": "BS1 2AB",
- "country": "GBR"
}
}, - "regulatory_details": {
- "registration_number": "123456",
- "regulator_auth_number": "654321"
}
}
{- "distribution_partner_id": "ifa-gfv35697",
- "partner_name": "ABC Inc",
- "partner_type": "white_label",
- "parent_partner_id": "iff-gfv35697",
- "contact_name": "string",
- "contact_details": {
- "email": "davidbrown@gmail.com",
- "phone": "+441234567890",
- "address": {
- "street_1": "49",
- "street_2": "Featherstone Street",
- "city": "London",
- "state": "England",
- "postal_code": "BS1 2AB",
- "country": "GBR"
}
}, - "regulatory_details": {
- "registration_number": "123456",
- "regulator_auth_number": "654321"
}, - "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
distribution_partner_id required | string Distribution Partner Id |
x-api-key required | string ApiSecretKey |
request_id required | string Unique request identifier. |
reference_version required | integer Should match with the current reference version of the resource |
partner_name | string Name of the Distribution partner. |
contact_name | string Name of the contact person. Mainly for ifa_firm and white_label partners. |
object | |
object |
{- "request_id": "20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "reference_version": 2,
- "partner_name": "ABC Inc",
- "contact_name": "string",
- "contact_details": {
- "email": "davidbrown@gmail.com",
- "phone": "+441234567890",
- "address": {
- "street_1": "49",
- "street_2": "Featherstone Street",
- "city": "London",
- "state": "England",
- "postal_code": "BS1 2AB",
- "country": "GBR"
}
}, - "regulatory_details": {
- "registration_number": "123456",
- "regulator_auth_number": "654321"
}
}
{- "distribution_partner_id": "ifa-gfv35697",
- "partner_name": "ABC Inc",
- "partner_type": "white_label",
- "parent_partner_id": "iff-gfv35697",
- "contact_name": "string",
- "contact_details": {
- "email": "davidbrown@gmail.com",
- "phone": "+441234567890",
- "address": {
- "street_1": "49",
- "street_2": "Featherstone Street",
- "city": "London",
- "state": "England",
- "postal_code": "BS1 2AB",
- "country": "GBR"
}
}, - "regulatory_details": {
- "registration_number": "123456",
- "regulator_auth_number": "654321"
}, - "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
distribution_partner_id required | string Distribution Partner Id |
include_hierarchies | boolean Include parent and child partner details |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/distribution-partners/v1/%7Bdistribution_partner_id%7D?include_hierarchies=SOME_BOOLEAN_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "distribution_partner_id": "ifa-gfv35697",
- "partner_name": "ABC Inc",
- "partner_type": "white_label",
- "parent_partner_id": "iff-gfv35697",
- "contact_name": "string",
- "contact_details": {
- "email": "davidbrown@gmail.com",
- "phone": "+441234567890",
- "address": {
- "street_1": "49",
- "street_2": "Featherstone Street",
- "city": "London",
- "state": "England",
- "postal_code": "BS1 2AB",
- "country": "GBR"
}
}, - "regulatory_details": {
- "registration_number": "123456",
- "regulator_auth_number": "654321"
}, - "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z",
- "hierarchies": {
- "parent": {
- "distribution_partner_id": "ifa-gfv35697",
- "partner_name": "ABC Inc",
- "partner_type": "ifa"
}, - "children": [
- {
- "distribution_partner_id": "ifa-gfv35697",
- "partner_name": "ABC Inc",
- "partner_type": "ifa"
}
]
}
}
action required | string Enum: "assign" "de-assign" Action to perform. Currently only action "assign" is supported. |
x-api-key required | string ApiSecretKey |
request_id required | string Unique request identifier. |
distribution_partner_id required | string Unique system generated distribution partner identifier. |
entity_type required | string Enum: "investor" "account" "pot" Type of the entity distribution partner is assigned to. Currenlty only types "account" and "investor" are supported. |
entity_id required | string Unique system generated ID for the entity. An entity can be an investor, account or a pot. |
{- "request_id": "20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "distribution_partner_id": "ifa-gfv35697",
- "entity_type": "account",
- "entity_id": "LISAC1699158978930"
}
{- "distribution_partner_id": "ifa-gfv35697",
- "entity_type": "account",
- "entity_id": "LISAC1699158978930"
}
entity_id required | string Id of an investor, account or a pot. Currenlty only an account id is supported. |
entity_type required | string Enum: "investor" "account" "pot" Type of the entity. Currenlty only types "account" and "investor" are supported. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/distribution-partner-assignments/v1/distribution-partners?entity_id=SOME_STRING_VALUE&entity_type=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "distribution_partners": [
- {
- "distribution_partner_id": "ifa-gfv35697",
- "partner_name": "ABC Inc",
- "partner_type": "white_label",
- "parent_partner_id": "iff-gfv35697",
- "assignment_date": "2020-07-08T07:36:05.884Z"
}
]
}
distribution_partner_id required | string Id of the distribution partner. |
entity_type | string Enum: "investor" "account" "pot" Type of the entity. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/distribution-partner-assignments/v1/entities?distribution_partner_id=SOME_STRING_VALUE&entity_type=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "distribution_partner_id": "ifa-gfv35697",
- "partner_name": "ABC Inc",
- "partner_type": "white_label",
- "assigned_entities": [
- {
- "entity_type": "account",
- "entity_id": "LISAC1699158978930",
- "assignment_date": "2020-07-08T07:36:05.884Z"
}
]
}
This endpoint will retrieve details of a particular file in the system.
file_id required | string File ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/files/v1/%7Bfile_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "file_id": "FILE-AHY58878",
- "file_name": "HSBC",
- "tags": [
- "block 1"
], - "uploaded_date": "1990-12-09"
}
This endpoint will provide a download url of a particular file in the system.
file_id required | string File ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/files/v1/%7Bfile_id%7D/url \ --header 'x-api-key: REPLACE_KEY_VALUE'
{
}
The interest endpoint grouping consists of various endpoints applicable to interest calculation module within the system
The endpoint supports retrieval of daily values of interest calculations
deposit_reference required | string Example: deposit_reference=CDR-TUY96080 Unique ID assigned to the deposit by the system. |
start_date | string Example: start_date=2025-01-01 The start date of the daily interest snapshot to be retrieved from the API. Should be on YYYY-MM-DD format. |
end_date | string Example: end_date=2025-02-01 The end date of the daily interest snapshot to be retrieved from the API. Should be on YYYY-MM-DD format. |
page_size | string Example: page_size=10 Page size for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_number, both page_size and page_number will be defaulted to 1000 and 1. Max page size is 8000. |
page_number | string Example: page_number=3 Page number for the query. This end-point has paginations capabilities. This value should be a positive integer value. If this is not provided or provided without page_size, both page_size and page_number will be defaulted to 1000 and 1. |
sort | string Default: "desc" Enum: "asc" "desc" Example: sort=asc Sorting order; results are sorted by interest calculation date. |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/interests/v1/daily-breakdown?deposit_reference=SOME_STRING_VALUE&start_date=SOME_STRING_VALUE&end_date=SOME_STRING_VALUE&page_size=SOME_STRING_VALUE&page_number=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "deposit_reference": "CDR-INJ04880",
- "daily_breakdown": [
- {
- "investment_product_id": "CASHINV-LAL37178",
- "external_deposit_reference": "HNB-997743",
- "interest_calculation_date": "2025-02-06",
- "daily_interest_rate": "0.0001323287671233",
- "daily_interest": "43.67",
- "accrued_interest": "0.00",
- "interest_earned": "87.34",
- "compounded_interest": "87.34",
- "interest_credited": "0.00",
- "net_balance": "330087.34"
}, - {
- "investment_product_id": "CASHINV-LAL37178",
- "external_deposit_reference": "HNB-997743",
- "interest_calculation_date": "2025-02-05",
- "daily_interest_rate": "0.0001323287671233",
- "daily_interest": "43.67",
- "accrued_interest": "0.00",
- "interest_earned": "43.67",
- "compounded_interest": "43.67",
- "interest_credited": "0.00",
- "net_balance": "330043.67"
}
], - "next_page_available": false
}
The third-party payers endpoint allows users to create, update, and retrieve third-party payers. Third-party payers can be created for investors, and investors can have single or multiple active third-party payers.
x-api-key required | string ApiSecretKey |
type required | string Enum: "individual" "organisation" Type of the third-party payer |
title | string Title of the individual |
first_name | string <= 100 characters Required only if type: individual |
last_name | string [ 2 .. 100 ] characters Required only if type: individual |
organisation_name | string <= 100 characters Required only if type: organisation |
representative | string <= 200 characters Name of the representative of the organisation in its relationship with the investor. Applicable only when the payer type is |
phone_number | string Phone number of the third-party payer |
string Email address of the third-party payer | |
investor_id required | string ID of the investor |
date_of_birth | string <date> Date of birth of the third-party payer. Mandatory only if type: individual. Should be on YYYY-MM-DD format. |
relationship_to_investor required | string Enum: "parent" "grandparent" "legal_guardian" "other" The value of relationship_to_investor must always be “other” when type is |
aml_status required | string Enum: "submitted" "kyc_failed_error" "pending" "clear" "not_started" Specifies the KYC (Know Your Customer) / KYB (Know Your Business) AML status of the third-party payer. |
object | |
status | string Enum: "active" "inactive"
|
{- "type": "individual",
- "title": "Mr",
- "first_name": "John",
- "last_name": "Doe",
- "organisation_name": "ABC Corporation Ltd",
- "representative": "Jane Smith",
- "phone_number": "+441234567890",
- "email": "john.doe@example.com",
- "investor_id": "inv-QXR38578",
- "date_of_birth": "1980-01-01",
- "relationship_to_investor": "parent",
- "aml_status": "clear",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "status": "active"
}
{- "third_party_payer_id": "tpp-ZWY58878",
- "type": "individual",
- "title": "Mr",
- "first_name": "John",
- "last_name": "Doe",
- "organisation_name": "ABC Corporation Ltd",
- "representative": "Jane Smith",
- "phone_number": "+441234567890",
- "email": "john.doe@example.com",
- "investor_id": "inv-QXR38578",
- "date_of_birth": "1980-01-01",
- "relationship_to_investor": "parent",
- "aml_status": "clear",
- "address": {
- "address_line": "14",
- "city": "London",
- "state": "England",
- "country": "GBR",
- "postal_code": "S2 2DF"
}, - "status": "active",
- "created_at": "2020-01-01T00:00:00.000Z",
- "updated_at": "2020-01-01T00:00:00.000Z",
- "reference_version": 1
}
investor_id required | string Valid Investor ID |
status | string Enum: "active" "inactive" Status of the third-party payer |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/third-party-payers/v1?investor_id=SOME_STRING_VALUE&status=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "thirdPartyPayers": [
- {
- "third_party_payer_id": "tpp-ZWY58878",
- "type": "individual",
- "title": "Mr",
- "first_name": "John",
- "last_name": "Doe",
- "organisation_name": "ABC Corporation Ltd",
- "representative": "Jane Smith",
- "phone_number": "+441234567890",
- "email": "john.doe@example.com",
- "investor_id": "inv-QXR38578",
- "date_of_birth": "1980-01-01",
- "relationship_to_investor": "parent",
- "aml_status": "clear",
- "address": {
- "address_line": "14",
- "city": "London",
- "state": "England",
- "country": "GBR",
- "postal_code": "S2 2DF"
}, - "status": "active",
- "created_at": "2020-01-01T00:00:00.000Z",
- "updated_at": "2020-01-01T00:00:00.000Z",
- "reference_version": 1
}
]
}
third_party_payer_id required | string Third Party Payer ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/third-party-payers/v1/%7Bthird_party_payer_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "third_party_payer_id": "tpp-ZWY58878",
- "type": "individual",
- "title": "Mr",
- "first_name": "John",
- "last_name": "Doe",
- "organisation_name": "ABC Corporation Ltd",
- "representative": "Jane Smith",
- "phone_number": "+441234567890",
- "email": "john.doe@example.com",
- "investor_id": "inv-QXR38578",
- "date_of_birth": "1980-01-01",
- "relationship_to_investor": "parent",
- "aml_status": "clear",
- "address": {
- "address_line": "14",
- "city": "London",
- "state": "England",
- "country": "GBR",
- "postal_code": "S2 2DF"
}, - "status": "active",
- "created_at": "2020-01-01T00:00:00.000Z",
- "updated_at": "2020-01-01T00:00:00.000Z",
- "reference_version": 1
}
third_party_payer_id required | string Third Party Payer ID |
x-api-key required | string ApiSecretKey |
title | string Title of the individual |
first_name | string <= 100 characters Required only if type: individual |
last_name | string [ 2 .. 100 ] characters Required only if type: individual |
organisation_name | string <= 100 characters Required only if type: organisation |
representative | string <= 200 characters Name of the representative of the organisation in its relationship with the investor. Applicable only when the payer type is |
phone_number | string Phone number of the third-party payer |
string Email address of the third-party payer | |
date_of_birth | string <date> Date of birth of the third-party payer. Mandatory only if type: individual. Should be on YYYY-MM-DD format. |
relationship_to_investor | string Enum: "parent" "grandparent" "legal_guardian" "other" The value of relationship_to_investor must always be “other” when type is |
aml_status | string Enum: "submitted" "kyc_failed_error" "pending" "clear" "not_started" Specifies the KYC (Know Your Customer) / KYB (Know Your Business) AML status of the third-party payer. |
object | |
status | string Enum: "active" "inactive"
|
reference_version required | integer |
{- "title": "Mr",
- "first_name": "John",
- "last_name": "Doe",
- "organisation_name": "ABC Corporation Ltd",
- "representative": "Jane Smith",
- "phone_number": "+441234567890",
- "email": "john.doe@example.com",
- "date_of_birth": "1980-01-01",
- "relationship_to_investor": "parent",
- "aml_status": "clear",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "status": "active",
- "reference_version": 1
}
{- "third_party_payer_id": "tpp-ZWY58878",
- "type": "individual",
- "title": "Mr",
- "first_name": "John",
- "last_name": "Doe",
- "organisation_name": "ABC Corporation Ltd",
- "representative": "Jane Smith",
- "phone_number": "+441234567890",
- "email": "john.doe@example.com",
- "investor_id": "inv-QXR38578",
- "date_of_birth": "1980-01-01",
- "relationship_to_investor": "parent",
- "aml_status": "clear",
- "address": {
- "address_line": "14",
- "city": "London",
- "state": "England",
- "country": "GBR",
- "postal_code": "S2 2DF"
}, - "status": "active",
- "created_at": "2020-01-01T00:00:00.000Z",
- "updated_at": "2020-01-01T00:00:00.000Z",
- "reference_version": 1
}
x-api-key required | string ApiSecretKey |
name required | string <= 100 characters Name of the contributing employer |
investor_id required | string ID of the investor |
registration_number required | string Registration number of the contributing employer |
required | object |
status required | string Enum: "active" "inactive" Status of the contributing employer |
Array of objects Allow to create only one bank account when creating a new contributing employer. |
{- "name": "Acme Ltd",
- "investor_id": "inv-XUT11265",
- "registration_number": "12345678",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "status": "active",
- "bank_accounts": [
- {
- "account_name": "David Brown",
- "default_account": "no",
- "bank_account_number": "99005678",
- "account_status": "active",
- "sort_code": "778856",
- "building_society_roll_number": "11332272"
}
]
}
{- "contributing_employer_id": "cem-ZWY58878",
- "name": "Acme Ltd",
- "investor_id": "inv-QXR38578",
- "registration_number": "12345678",
- "address": {
- "address_line": "14",
- "city": "London",
- "state": "England",
- "country": "GBR",
- "postal_code": "S2 2DF"
}, - "status": "active",
- "bank_accounts": [
- {
- "bank_account_id": "ba-20b904f7-8d05-4efd-bd36-4ec3b1ce8e03",
- "investor_id": "inv-QXR38578",
- "contributing_party_id": "cem-ZWY58878",
- "account_name": "David Brown",
- "bank_account_type": "contributing_employer",
- "default_account": "no",
- "bank_account_number": "****5678",
- "account_status": "active",
- "sort_code": "****56",
- "building_society_roll_number": "******72",
- "reference_version": 1,
- "created_at": "2020-07-08T07:36:05.884Z",
- "updated_at": "2020-07-10T07:36:05.884Z"
}
], - "reference_version": 1,
- "created_at": "2020-01-01T00:00:00.000Z",
- "updated_at": "2020-01-01T00:00:00.000Z"
}
investor_id | string Valid Investor ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url 'https://web_host_name/tenant/contributing-employers/v1?investor_id=SOME_STRING_VALUE' \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "contributingEmployers": [
- {
- "contributing_employer_id": "cem-ZWY58878",
- "name": "Acme Ltd",
- "investor_id": "inv-QXR38578",
- "registration_number": "12345678",
- "address": {
- "address_line_1": "123 Main Street",
- "address_line_2": "Suite 100",
- "city": "San Francisco",
- "state": "CA",
- "country": "US",
- "postal_code": "94105"
}, - "status": "active",
- "bank_accounts": [
- "ba-bc00c28f-b3fc-42b7"
], - "reference_version": 1,
- "created_at": "2020-01-01T00:00:00.000Z",
- "updated_at": "2020-01-01T00:00:00.000Z"
}
]
}
contributing_employer_id required | string Contributing Employer ID |
x-api-key required | string ApiSecretKey |
curl --request GET \ --url https://web_host_name/tenant/contributing-employers/v1/%7Bcontributing_employer_id%7D \ --header 'x-api-key: REPLACE_KEY_VALUE'
{- "contributing_employer_id": "cem-ZWY58878",
- "name": "Acme Ltd",
- "investor_id": "inv-QXR38578",
- "registration_number": "12345678",
- "address": {
- "address_line_1": "123 Main Street",
- "address_line_2": "Suite 100",
- "city": "San Francisco",
- "state": "CA",
- "country": "US",
- "postal_code": "94105"
}, - "status": "active",
- "bank_accounts": [
- "ba-bc00c28f-b3fc-42b7"
], - "reference_version": 1,
- "created_at": "2020-01-01T00:00:00.000Z",
- "updated_at": "2020-01-01T00:00:00.000Z"
}
contributing_employer_id required | string Contributing Employer ID |
x-api-key required | string ApiSecretKey |
name | string <= 100 characters Name of the contributing employer |
registration_number | string Registration number of the contributing employer |
object | |
status | string Enum: "active" "inactive" Status of the contributing employer |
reference_version required | integer |
{- "name": "Acme Ltd",
- "registration_number": "12345678",
- "address": {
- "postal_code": "S2 2DF",
- "address_line": "14",
- "street_name": "Tottenham Court Road",
- "city": "London",
- "state": "England",
- "country": "GBR"
}, - "status": "active",
- "reference_version": 1
}
{- "contributing_employer_id": "cem-ZWY58878",
- "name": "Acme Ltd",
- "investor_id": "inv-QXR38578",
- "registration_number": "12345678",
- "address": {
- "address_line_1": "123 Main Street",
- "address_line_2": "Suite 100",
- "city": "San Francisco",
- "state": "CA",
- "country": "US",
- "postal_code": "94105"
}, - "status": "active",
- "bank_accounts": [
- "ba-bc00c28f-b3fc-42b7"
], - "reference_version": 1,
- "created_at": "2020-01-01T00:00:00.000Z",
- "updated_at": "2020-01-01T00:00:00.000Z"
}