Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
/external/v1/transfer/{transferId}/request-remediation
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
Transfers apply when:
A life event, such as death or divorce, results in the need to move an asset to a different account.
An advisor moves to a different firm, requiring transfer of assets for those clients who choose to follow the advisor.
Mapping Your IDs to Corastone IDs
Approve Transfer by Issuing Org
Request Transfer Assets Remediation
Remove Transfer Correlation ID
/external/v1/transfer/{transferId}/allocate-assets
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
/external/v1/transfer/{transferId}/remediate
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
This route is used to trigger a remediation request of the transfer details to the recipient investor organization.
Asset manager that owns this security or fund admins assigned to this offering can execute this action, then once this call is completed the transfer will be marked as pending remediation on the ledger and the requesting organization will be able to amend the transfer request (e.g. provide further documents, amend ammounts, provide more details about the new investor/account).
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the transfer is in one of the following statuses: ["created","remediated"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageTransfer"
The id that uniquely identifies the transfer on the ledger.
TEST0000
This property contains the transactional data information, i.e. which is the security where the remediation request was created
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the reason for the rejection.
{"reason":[{"message":"reject reason","category":"EC006","documentWithIssues":[{"document":{"fileId":"FILE3JUS03I04"},"pages":[{"pageNumber":1,"description":"The first page has an invalid signature"}]}]}],"extraData":{"externalId":"123456789","some":"Custom Property"}}
PUT /external/v1/transfer/{transferId}/request-remediation HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 394
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"rejectReason": {
"reason": [
{
"message": "reject reason",
"category": "EC006",
"documentWithIssues": [
{
"document": {
"fileId": "FILE3JUS03I04"
},
"pages": [
{
"pageNumber": 1,
"description": "The first page has an invalid signature"
}
]
}
]
}
],
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"transferId": "US9QIMAOAS1Q",
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"referenceData": {
"account": {
"accountId": "US9QIMAOAS1Q",
"custodian": {
"custodianId": "US9ZIMAOAS1Q"
}
},
"investors": [
{
"investorId": "US9QIM123S1Q"
}
]
}
}
This route is used to create a transfer request by recipient investing org.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageTransfer".
Once complete the issuer or assigned service provider will review this transfer request and will either accept it and pass it onwards to the sender organization or may ask for some remediation of this request. This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["investor"].
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can't be invoked if the security is restricted.
This property contains the reference data of the account that holds the digital security.
{"correlationData":[{"correlationId":"INV001"}],"data":{"name":"Individual Account","type":"Individual","relationshipType":"Brokerage","bankAccount":{"accountNumber":"111111111","accountName":"savings account","bankABA":"555555555","bankName":"Test Bank","bankSwift":"AAAA-BB-CC-123","extraData":{"settlementInstructions":"Please wire the amount within 72 hours","some":"Other Property"}},"contactInfo":[{"email":"[email protected]","phoneNumber":"832-426-4242","type":"primary"},{"email":"[email protected]","phoneNumber":"987-564-1234","type":"tax","name":"John Doe","description":"Use this contact for Tax Related Information (K-1, 1099 or other tax related information)"}],"custodian":{"data":{"name":"Charles Schwab"}},"advisors":[{"data":{"type":"FA","name":"Chris Smith","crdCode":"546321","repCode":"AB98765"}}],"authorizedSigners":[{"name":"Jane Doe","primary":true,"extraData":{"externalId":"123456","some":"Other Property"}}],"beneficiaries":[{"name":"John Doe","beneficialOwnership":40,"individualInfo":{"name":"John Doe","taxId":"123456789"}},{"name":"Jane Doe LLC","beneficialOwnership":60,"legalEntityInfo":{"name":"Jane Doe Private Investments and Capital Management, LLC","type":"LLC","taxId":"987654321"}}],"secureExtraData":{"sensitive":"Data to be protected by application encryption"}}}
This property contains the transactional data information, i.e. which is the security where the transfer request is being created
{"securityId":"USS3JKS01I00","amount":50000,"transferReason":"gift","sourceAccountData":{"orgId":"TEST1234","accountId":"TEST67891"},"signer":{"email":"[email protected]","name":"John Doe"},"correlationData":[{"broadcastToCounterparty":true,"correlationId":"123245573717","origin":"Identifies transfer on backoffice","extraData":{"some":"Custom Property"}}]}
This is the booked unique identifier of the transfer. It is optional. If not provided, a new unique identifier will be generated.
USS3JKS01I00
POST /external/v1/transfer HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 3133
{
"investors": [
{
"data": {
"type": "individual",
"accreditationLevel": "qualifiedClient",
"isInstitutional": false,
"hasKYCPassed": false,
"isComplianceApproved": false,
"is5131RestrictedPerson": false,
"name": "John Doe",
"individualInfo": {
"name": "John Doe",
"dateOfBirth": "2024-09-12",
"taxId": "123456789",
"occupation": {
"role": "Software Engineer",
"companyName": "Sample Company"
},
"residentialAddress": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"mailingAddress": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"isUsPerson": true,
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "832-426-4242"
}
],
"extraData": {
"externalInvestorId": "123456",
"some": "other property"
}
}
},
"documents": [
{
"uploadData": {
"type": "IdentityVerification",
"extension": "pdf",
"name": "John Doe ID",
"link": "https://test-storage.s3.amazonaws.com/some-id.pdf"
},
"extraData": {
"someCustom": "property to be shared"
}
},
{
"fileId": "FILE3JUS03I04"
}
],
"correlationData": [
{
"correlationId": "INV001"
}
],
"accountAssociationData": {
"isPrimary": true
}
}
],
"account": {
"correlationData": [
{
"correlationId": "INV001"
}
],
"data": {
"name": "Individual Account",
"type": "Individual",
"relationshipType": "Brokerage",
"bankAccount": {
"accountNumber": "111111111",
"accountName": "savings account",
"bankABA": "555555555",
"bankName": "Test Bank",
"bankSwift": "AAAA-BB-CC-123",
"extraData": {
"settlementInstructions": "Please wire the amount within 72 hours",
"some": "Other Property"
}
},
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "832-426-4242",
"type": "primary"
},
{
"email": "[email protected]",
"phoneNumber": "987-564-1234",
"type": "tax",
"name": "John Doe",
"description": "Use this contact for Tax Related Information (K-1, 1099 or other tax related information)"
}
],
"custodian": {
"data": {
"name": "Charles Schwab"
}
},
"advisors": [
{
"data": {
"type": "FA",
"name": "Chris Smith",
"crdCode": "546321",
"repCode": "AB98765"
}
}
],
"authorizedSigners": [
{
"name": "Jane Doe",
"primary": true,
"extraData": {
"externalId": "123456",
"some": "Other Property"
}
}
],
"beneficiaries": [
{
"name": "John Doe",
"beneficialOwnership": 40,
"individualInfo": {
"name": "John Doe",
"taxId": "123456789"
}
},
{
"name": "Jane Doe LLC",
"beneficialOwnership": 60,
"legalEntityInfo": {
"name": "Jane Doe Private Investments and Capital Management, LLC",
"type": "LLC",
"taxId": "987654321"
}
}
],
"secureExtraData": {
"sensitive": "Data to be protected by application encryption"
}
}
},
"transactionData": {
"securityId": "USS3JKS01I00",
"amount": 50000,
"transferReason": "gift",
"sourceAccountData": {
"orgId": "TEST1234",
"accountId": "TEST67891"
},
"signer": {
"email": "[email protected]",
"name": "John Doe"
},
"correlationData": [
{
"broadcastToCounterparty": true,
"correlationId": "123245573717",
"origin": "Identifies transfer on backoffice",
"extraData": {
"some": "Custom Property"
}
}
]
},
"documents": [
{
"uploadData": {
"type": "IdentityVerification",
"extension": "pdf",
"name": "John Doe ID",
"link": "https://test-storage.s3.amazonaws.com/some-id.pdf"
},
"extraData": {
"someCustom": "property to be shared"
}
},
{
"fileId": "FILE3JUS03I04"
}
],
"bookedTransferId": "USS3JKS01I00"
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"transferId": "US9QIMAOAS1Q",
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"referenceData": {
"account": {
"accountId": "US9QIMAOAS1Q",
"custodian": {
"custodianId": "US9ZIMAOAS1Q"
}
},
"investors": [
{
"investorId": "US9QIM123S1Q"
}
]
}
}
This route is used to trigger approval of the transfer.
Asset manager that owns this security or fund admins assigned to this offering can execute this action, then once this call is completedthe transfer will be marked as approved on the ledgerand the sender organization will be notified and will be able to allocate the assets that fulfill this transfer request.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the transfer is in one of the following statuses: ["created","remediated"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageTransfer".
The id that uniquely identifies the transfer on the ledger.
TEST0000
This property contains basic information regarding the person that is executing this action. It is used for audit trail of who made which request.
This information will be hashed on the block and will not be shared with other organizations that are part of the blockchain network, unless with the the ones that are concerned with this transaction.
{"email":"[email protected]","name":"John Doe"}
This is an externally provided id that can be used to identify the asynchronous process that will be triggered by this action. It is optional. If not provided the system will generate a unique id for this.
If provided, it must have a v4 UUID format.
2159457f-0167-4e93-a969-9cf0db05e0bf
This is the security unique identifier on the ledger. It uniquely identifies a particular security on the blockchain. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both.
USS3JKS01I00
This property contains the correlation data that is used to identify a particular security within an organization. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both. Security Correlation IDs can be managed using the "Security Admin API".
JSON object to collect extra data regarding the entity. This object cannot have more than 1024 length serialized
{"externalId":"123456789","some":"Custom Property"}
PUT /external/v1/transfer/{transferId}/approve HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 281
{
"signer": {
"email": "[email protected]",
"name": "John Doe"
},
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"securityId": "USS3JKS01I00",
"securityCorrelationData": {
"correlationId": "USS3JKS01I00",
"orgId": "US9QIMA"
},
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger request by sender investor organization to allocate assets.
Investor that owns assets can execute this action, then once this call is completed the transfer will be marked as approved by sender on the ledger.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["investor"].
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the transfer is in one of the following statuses: ["approved_by_issuer"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageTransfer"
The id that uniquely identifies the transfer on the ledger.
TEST0000
This property contains the transactional data information, i.e. which is the security where the remediation request was created
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/transfer/{transferId}/allocate-assets HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 214
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"input": [
{
"assetId": "TEST1234",
"sharesNumber": 50.1234
},
{
"assetId": "TEST5678",
"sharesNumber": 200.987566
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"transferId": "US9QIMAOAS1Q",
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"referenceData": {
"account": {
"accountId": "US9QIMAOAS1Q",
"custodian": {
"custodianId": "US9ZIMAOAS1Q"
}
},
"investors": [
{
"investorId": "US9QIM123S1Q"
}
]
}
}
This route is used to remove a correlation ID from an existing transfer. This correlation ID is an externally provided id that uniquely identifies the transfer within the organization making this call.
This correlation ID should be in use by the transfer involved in this call.
This action can be broadcast to all the counterparties that have access to this transfer.
If the action is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the transfer on the blockchain
US9QIMAOAS1Q
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/transfer/{transferId}/correlation-id/remove HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 204
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to trigger an assets remediation request of the transfer asset draft details to the sender investor organization.
Asset manager that owns this security or fund admins assigned to this offering can execute this action, then once this call is completed the transfer will be marked as pending assetsremediation on the ledger and the sender organization will be able to amend the transfer request (e.g. update assets to be transfered data).
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the transfer is in one of the following statuses: ["approved_by_sender","assets_remediated"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageTransfer"
The id that uniquely identifies the transfer on the ledger.
TEST0000
This property contains the transactional data information, i.e. which is the security where the remediation request was created
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the reason for the rejection.
{"reason":[{"message":"reject reason","category":"EC006","documentWithIssues":[{"document":{"fileId":"FILE3JUS03I04"},"pages":[{"pageNumber":1,"description":"The first page has an invalid signature"}]}]}],"extraData":{"externalId":"123456789","some":"Custom Property"}}
PUT /external/v1/transfer/{transferId}/request-assets-remediation HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 394
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"rejectReason": {
"reason": [
{
"message": "reject reason",
"category": "EC006",
"documentWithIssues": [
{
"document": {
"fileId": "FILE3JUS03I04"
},
"pages": [
{
"pageNumber": 1,
"description": "The first page has an invalid signature"
}
]
}
]
}
],
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"transferId": "US9QIMAOAS1Q",
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"referenceData": {
"account": {
"accountId": "US9QIMAOAS1Q",
"custodian": {
"custodianId": "US9ZIMAOAS1Q"
}
},
"investors": [
{
"investorId": "US9QIM123S1Q"
}
]
}
}
This is the last step of the transaction flow where the assets will be created for the recipient organization
and the corresponding amount / shares number will be disposed on the sender organization. It is not reversible.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the transfer is in one of the following statuses: ["approved_by_sender","assets_remediated"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageTransfer".
The id that uniquely identifies the transfer on the ledger.
TEST0000
This property contains the transactional data information, i.e. which is the security where the transfer request is being created
{"securityId":"USS3JKS01I00","effectiveDate":"2024-09-12T00:00:00.000Z","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/transfer/{transferId}/complete HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 358
{
"transactionData": {
"securityId": "USS3JKS01I00",
"effectiveDate": "2024-09-12T00:00:00.000Z",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"input": [
{
"assetId": "TEST1234",
"stepUp": 20,
"costBasis": 20000,
"acquisitionDate": "2024-09-12T00:00:00.000Z"
},
{
"assetId": "TEST5678",
"stepUp": 20,
"costBasis": 10000,
"acquisitionDate": "2024-09-12T00:00:00.000Z"
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to add a correlation ID to an existing transfer. This correlation ID is an externally provided id that uniquely identifies the transfer within the organization making this call.
This correlation ID can't be in use by another transfer. This correlation ID can be broadcast to all the counterparties that have access to this transfer.
If the ID is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the transfer on the blockchain
US9QIMAOAS1Q
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property defines if correlation information will be sent to all counterparties.
false
Example: true
The organization origin system that created this entity correlation id
Backoffice-system-123
This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/transfer/{transferId}/correlation-id/add HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 268
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"broadcastToCounterparty": true,
"origin": "Backoffice-system-123",
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to retrieve the details of transfers, given a set of search filters.
This endpoint is paginated, up to 50 records can be retrieved per call.
This endpoint can be called by applications with access to scope "readTransfer".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of statuses to filter the transfer records. Up to 11 entries can be provided. Available values: preSync, created, remediation_pending, remediated, approved_by_issuer, approved_by_sender, assets_remediation_pending, assets_remediated, completed, canceled, deleted
created,canceled
The comma delimited list of security ids to filter the transfer records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the transfer records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The comma delimited list of transfer ids to filter the transfer records. Up to 50 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of transfer correlation ids to filter the transfer records. Up to 50 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The organization identifier linked to the correlation ids provided in the "transferCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/transfer HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"transferId": "US9QIMAOAS1Q",
"correlationData": [
{
"correlationId": "123245573717",
"origin": "Identifies transfer on backoffice",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"extraData": {
"some": "Custom Property"
}
}
],
"status": "remediated",
"amount": 1000,
"sharesNumber": 1000,
"likeForLike": true,
"transferReason": "gift",
"comments": "Some comment",
"transferDate": "2024-09-12T00:00:00.000Z",
"securityId": "USCCWSF01I00",
"recipientAccountId": "US9QIMAOAS1Q",
"sourceAccountId": "US9QIMAOAS1Q",
"sourceAccountData": {
"orgId": "TEST1234",
"accountId": "TEST67891"
},
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"rejectReason": {
"reason": [
{
"message": "reject reason",
"category": "EC006",
"documentWithIssues": [
{
"document": {
"fileId": "FILE3JUS03I04"
},
"pages": [
{
"pageNumber": 1,
"description": "The first page has an invalid signature"
}
]
}
]
}
],
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
}
},
"assets": [
{
"inputAssetId": "US9QIMAOAS1Q",
"outputAssetId": "US9QIMAOAS2Q"
}
],
"underlyingRecipientAccountId": "US9QIMAOAC3F",
"underlyingSourceAccountId": "US9QIMAOAC3F",
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
}
}
]
This route is used to trigger the cancellation of the transfer by any party involved in the current transfer flow.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider","investor"].
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the transfer is in one of the following statuses: ["created","remediation_pending","remediated","approved_by_issuer","approved_by_sender","assets_remediation_pending","assets_remediated"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageTransfer".
The id that uniquely identifies the transfer on the ledger.
TEST0000
This property contains the transactional data information, i.e. which is the security where the remediation request was created
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the reason for the rejection.
{"reason":[{"message":"reject reason","category":"EC006","documentWithIssues":[{"document":{"fileId":"FILE3JUS03I04"},"pages":[{"pageNumber":1,"description":"The first page has an invalid signature"}]}]}],"extraData":{"externalId":"123456789","some":"Custom Property"}}
PUT /external/v1/transfer/{transferId}/cancel HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 394
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"rejectReason": {
"reason": [
{
"message": "reject reason",
"category": "EC006",
"documentWithIssues": [
{
"document": {
"fileId": "FILE3JUS03I04"
},
"pages": [
{
"pageNumber": 1,
"description": "The first page has an invalid signature"
}
]
}
]
}
],
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to retrieve the history data entries of transfer correlation ids given a set of filters such as blockchain details.
The history entries will reflect the state of the transfer correlation ids on a particular block on the ledger.
This endpoint returns paginated data. Up to 20 can be extracted per call.
This endpoint can be called by applications with access to scope "manageReferenceData".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
GET /external/v1/transfer/correlation-id/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"event": "Created",
"update": {
"correlationId": "123245573717",
"entityType": "account",
"entityId": "OG1234567890",
"status": "broadcast",
"origin": "Backoffice-system-123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
}
]
This route is used to trigger transfer data remediation on the blockchain by the recipient investor organization.
This means that the recipient investor organization has updated the transfer after being requested data remediation.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["investor"].
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the transfer is in one of the following statuses: ["remediation_pending","created"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageTransfer"
The id that uniquely identifies the transfer on the ledger.
TEST0000
This property contains the reference data information for investor/account. Can optionally be passed to update the investor and account data as part of this action
{"investors":[{"investorId":"TEST123345","data":{"type":"individual","accreditationLevel":"qualifiedClient","isInstitutional":false,"hasKYCPassed":false,"isComplianceApproved":false,"is5131RestrictedPerson":false,"name":"John Doe","individualInfo":{"name":"John Doe","dateOfBirth":"2024-09-12","taxId":"123456789","occupation":{"role":"Software Engineer","companyName":"Sample Company"},"residentialAddress":{"addressLineOne":"8 Greenway Plaza","addressLineTwo":"Suite 1515","country":"US","state":"Texas","city":"Houston","zipCode":"77046 USA"},"mailingAddress":{"addressLineOne":"8 Greenway Plaza","addressLineTwo":"Suite 1515","country":"US","state":"Texas","city":"Houston","zipCode":"77046 USA"},"isUsPerson":true,"contactInfo":[{"email":"[email protected]","phoneNumber":"832-426-4242"}],"extraData":{"externalInvestorId":"123456","some":"other property"}}}}],"account":{"accountId":"TEST67891","data":{"name":"Individual Account","type":"Individual","relationshipType":"Brokerage","bankAccount":{"accountNumber":"111111111","accountName":"savings account","bankABA":"555555555","bankName":"Test Bank","bankSwift":"AAAA-BB-CC-123","extraData":{"settlementInstructions":"Please wire the amount within 72 hours","some":"Other Property"}},"contactInfo":[{"email":"[email protected]","phoneNumber":"832-426-4242","type":"primary"},{"email":"[email protected]","phoneNumber":"987-564-1234","type":"tax","name":"John Doe","description":"Use this contact for Tax Related Information (K-1, 1099 or other tax related information)"}],"custodian":{"data":{"name":"Charles Schwab"}},"advisors":[{"data":{"type":"FA","name":"Chris Smith","crdCode":"546321","repCode":"AB98765"}}],"authorizedSigners":[{"name":"Jane Doe","primary":true,"extraData":{"externalId":"123456","some":"Other Property"}}],"beneficiaries":[{"name":"John Doe","beneficialOwnership":40,"individualInfo":{"name":"John Doe","taxId":"123456789"}},{"name":"Jane Doe LLC","beneficialOwnership":60,"legalEntityInfo":{"name":"Jane Doe Private Investments and Capital Management, LLC","type":"LLC","taxId":"987654321"}}],"secureExtraData":{"sensitive":"Data to be protected by application encryptions"}}}}
This property contains the transactional data information, i.e. transfer data to be remediated and which is the security of the transfer
{"securityId":"USS3JKS01I00","amount":50000,"transferReason":"gift","sourceAccountData":{"orgId":"TEST1234","accountId":"TEST67891"},"signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/transfer/{transferId}/remediate HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2625
{
"referenceData": {
"investors": [
{
"investorId": "TEST123345",
"data": {
"type": "individual",
"accreditationLevel": "qualifiedClient",
"isInstitutional": false,
"hasKYCPassed": false,
"isComplianceApproved": false,
"is5131RestrictedPerson": false,
"name": "John Doe",
"individualInfo": {
"name": "John Doe",
"dateOfBirth": "2024-09-12",
"taxId": "123456789",
"occupation": {
"role": "Software Engineer",
"companyName": "Sample Company"
},
"residentialAddress": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"mailingAddress": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"isUsPerson": true,
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "832-426-4242"
}
],
"extraData": {
"externalInvestorId": "123456",
"some": "other property"
}
}
}
}
],
"account": {
"accountId": "TEST67891",
"data": {
"name": "Individual Account",
"type": "Individual",
"relationshipType": "Brokerage",
"bankAccount": {
"accountNumber": "111111111",
"accountName": "savings account",
"bankABA": "555555555",
"bankName": "Test Bank",
"bankSwift": "AAAA-BB-CC-123",
"extraData": {
"settlementInstructions": "Please wire the amount within 72 hours",
"some": "Other Property"
}
},
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "832-426-4242",
"type": "primary"
},
{
"email": "[email protected]",
"phoneNumber": "987-564-1234",
"type": "tax",
"name": "John Doe",
"description": "Use this contact for Tax Related Information (K-1, 1099 or other tax related information)"
}
],
"custodian": {
"data": {
"name": "Charles Schwab"
}
},
"advisors": [
{
"data": {
"type": "FA",
"name": "Chris Smith",
"crdCode": "546321",
"repCode": "AB98765"
}
}
],
"authorizedSigners": [
{
"name": "Jane Doe",
"primary": true,
"extraData": {
"externalId": "123456",
"some": "Other Property"
}
}
],
"beneficiaries": [
{
"name": "John Doe",
"beneficialOwnership": 40,
"individualInfo": {
"name": "John Doe",
"taxId": "123456789"
}
},
{
"name": "Jane Doe LLC",
"beneficialOwnership": 60,
"legalEntityInfo": {
"name": "Jane Doe Private Investments and Capital Management, LLC",
"type": "LLC",
"taxId": "987654321"
}
}
],
"secureExtraData": {
"sensitive": "Data to be protected by application encryptions"
}
}
}
},
"transactionData": {
"securityId": "USS3JKS01I00",
"amount": 50000,
"transferReason": "gift",
"sourceAccountData": {
"orgId": "TEST1234",
"accountId": "TEST67891"
},
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"documents": [
{
"uploadData": {
"type": "IdentityVerification",
"extension": "pdf",
"name": "John Doe ID",
"link": "https://test-storage.s3.amazonaws.com/some-id.pdf"
},
"extraData": {
"someCustom": "property to be shared"
}
},
{
"fileId": "FILE3JUS03I04"
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"transferId": "US9QIMAOAS1Q",
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"referenceData": {
"account": {
"accountId": "US9QIMAOAS1Q",
"custodian": {
"custodianId": "US9ZIMAOAS1Q"
}
},
"investors": [
{
"investorId": "US9QIM123S1Q"
}
]
}
}
This route is used to trigger request by sender investor organization to remediate assets.
Investor that owns assets can execute this action, then once this call is completed the transfer will be marked as assets remediated on the ledger.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["investor"].
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the transfer is in one of the following statuses: ["assets_remediation_pending","assets_remediated","approved_by_sender"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageTransfer"
The id that uniquely identifies the transfer on the ledger.
TEST0000
This property contains the transactional data information, i.e. which is the security where the remediation request was created
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/transfer/{transferId}/remediate-assets HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 214
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"input": [
{
"assetId": "TEST1234",
"sharesNumber": 50.1234
},
{
"assetId": "TEST5678",
"sharesNumber": 200.987566
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"transferId": "US9QIMAOAS1Q",
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"referenceData": {
"account": {
"accountId": "US9QIMAOAS1Q",
"custodian": {
"custodianId": "US9ZIMAOAS1Q"
}
},
"investors": [
{
"investorId": "US9QIM123S1Q"
}
]
}
}
This route is used to retrieve the history data entries of transfers given a set of filters such as blockchain details or transfer identifiers.
The history entries will reflect the state of the transfers on a particular block on the ledger.
This endpoint returns paginated data. Up to 50 can be extracted per call.
This endpoint can be called by applications with access to scope "readTransfer".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of transfer ids to filter the transfer records. Up to 50 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of transfer correlation ids to filter the transfer records. Up to 50 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "transferCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/transfer/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"event": "TransferCreated",
"timestamp": "2024-09-12T00:00:00.000Z",
"update": {
"transferId": "US9QIMAOAS1Q",
"status": "remediation_pending",
"amount": 40.5,
"likeForLike": true,
"transferReason": "gift",
"comments": "Birthday gift",
"securityId": "USCCWSF01I00",
"transferDate": "2023-02-27T22:42:06.620Z",
"recipientAccountId": "US9QIMAOAS1Q",
"sourceAccountId": "US9QIMAOAS1Q",
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"rejectReason": {
"reason": [
{
"message": "Invalid SSN was provided",
"category": "EC002"
}
]
},
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
},
"sourceAccountData": {
"orgId": "TEST1234",
"accountId": "TEST67891"
}
},
"signerData": {
"email": "[email protected]",
"name": "John Doe"
},
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
]