All pages
Powered by GitBook
1 of 15

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

AM/FA - Request Transfer Remediation

Details

/external/v1/transfer/{transferId}/request-remediation

Synopsis

Important Notes

  • See Blockchain Transaction Tracking for information on using orchestrationId and processId.

Inv - Create Transfer

Details

/external/v1/transfer

Synopsis

Important Notes

  • See Blockchain Transaction Tracking for information on using orchestrationId and processId.

AM/FA - Approve Transfer by Issuing Org

Details

Synopsis

Important Notes

  • See for information on using orchestrationId and processId.

/external/v1/transfer/{transferId}/approve
Blockchain Transaction Tracking

Transfer Management

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.

Related Concepts

Transfers

Mapping Your IDs to Corastone IDs

Endpoints

Create Transfer

Approve Transfer by Issuing Org

Request Transfer Remediation

Remediate Transfer

Allocate Transfer Assets

Request Transfer Assets Remediation

Remediate Transfer Assets

Complete Transfer

Cancel Transfer

Add Transfer Correlation ID

Remove Transfer Correlation ID

Getters

Get Transfer Details

Get Transfer History

Get Transfer Correlation IDs History

Inv - Allocate Transfer Assets

Details

/external/v1/transfer/{transferId}/allocate-assets

Synopsis

Important Notes

  • See Blockchain Transaction Tracking for information on using orchestrationId and processId.

AM/FA/Inv - Remove Transfer Correlation ID

Details

/external/v1/transfer/{transferId}/correlation-id/remove

Synopsis

AM/FA - Request Transfer Assets Remediation

Details

Synopsis

/external/v1/transfer/{transferId}/request-assets-remediation

AM/FA - Complete Transfer

Details

/external/v1/transfer/{transferId}/complete

Synopsis

AM/FA/Inv - Add Transfer Correlation ID

Details

/external/v1/transfer/{transferId}/correlation-id/add

Synopsis

AM/FA/Inv - Get Transfer Details

Details

Synopsis

AM/FA/Inv - Cancel Transfer

Details

Synopsis

Important Notes

  • See for information on using orchestrationId and processId.

/external/v1/transfer
/external/v1/transfer/{transferId}/cancel
Blockchain Transaction Tracking

AM/FA/Inv - Get Transfer Correlation IDs History

Details

/external/v1/transfer/correlation-id/history

Synopsis

Inv - Remediate Transfer

Details

/external/v1/transfer/{transferId}/remediate

Synopsis

Important Notes

  • See Blockchain Transaction Tracking for information on using orchestrationId and processId.

Inv - Remediate Transfer Assets

Details

/external/v1/transfer/{transferId}/remediate-assets

Synopsis

AM/FA/Inv - Get Transfer History

Details

/external/v1/transfer/history

Synopsis

Request Transfer Remediation

put

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"

Authorizations
Path parameters
transferIdanyRequired

The id that uniquely identifies the transfer on the ledger.

Example: TEST0000
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security where the remediation request was created

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
rejectReasonall ofOptional

This property contains the reason for the rejection.

Example: {"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"}}
Responses
200
Successfully triggered the request for transfer data remediation.
application/json
400
The following error codes can be returned: - GN0002 - IS0008 - IS0106 - TR0002 - TR0043 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 - OG0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0063 - IS0013 - IS0002 - IS0012 - TR0003 - TR0006 - TR0004 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
      }
    ]
  }
}

Create Transfer

post

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.

Authorizations
Body
accountall ofRequired

This property contains the reference data of the account that holds the digital security.

Example: {"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"}}}
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security where the transfer request is being created

Example: {"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"}}]}
bookedTransferIdstring · max: 12Optional

This is the booked unique identifier of the transfer. It is optional. If not provided, a new unique identifier will be generated.

Example: USS3JKS01I00
Responses
201
Successfully triggered the creation of the transfer The "processId" and "orchestrationId" properties can be used on the "Transactions API" to monitor the status of this asynchronous process. The "transferId" property can be used to get the details of this transfer or execute further actions.
application/json
400
The following error codes can be returned: - GN0002 - AS0009 - IS0008 - IS0106 - IS0001 - IV0006 - IV0007 - IV0008 - IV0020 - IV0021 - IV0022 - IV0017 - IV0016 - IV0023 - IV0032 - IV0036 - IV0037 - AC0013 - AC0014 - AC0016 - AC0026 - AC0023 - AC0006 - AC0007 - AC0044 - AC0050 - AD0018 - AD0022 - AD0023 - CT0015 - CT0017 - TR0035 - TR0042 - FL0002 - FL0003 - FL0019 - FL0004 - FL0005 - FL0017 - FL0020 - QU0001 - QU0002 - QU0003 - QU0004 - QU0005 - QU0006 - QU0007 - QU0008 - QU0009 - QU0010 - CI0001 - CI0002 - CI0003 - CI0004 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - EX0006 - IV0013 - AC0020 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - AC0001 - AC0002 - IV0002 - FL0008 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0013 - IS0012 - IS0002 - IV0003 - IV0004 - IV0005 - IV0010 - AC0009 - AC0010 - AC0029 - CE0036 - TR0030 - TR0031 - TR0038 - TR0012 - FL0001 - FL0006 - FL0010 - FL0011 - FL0028 Please refer to the error code dictionary for the details of each error code.
application/json
425
The following error codes can be returned: - GN0003 Please refer to the error code dictionary for the details of each error code.
application/json
post
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"
      }
    ]
  }
}

Approve Transfer

put

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

Authorizations
Path parameters
transferIdanyRequired

The id that uniquely identifies the transfer on the ledger.

Example: TEST0000
Body
signerall ofRequired

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.

Example: {"email":"[email protected]","name":"John Doe"}
processIdstringOptional

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.

Example: 2159457f-0167-4e93-a969-9cf0db05e0bf
securityIdstringOptional

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.

Example: USS3JKS01I00
securityCorrelationDataall ofOptional

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

extraDataobject · max: 1024Optional

JSON object to collect extra data regarding the entity. This object cannot have more than 1024 length serialized

Example: {"externalId":"123456789","some":"Custom Property"}
Responses
200
Successfully triggered the approval of the transfer
application/json
400
The following error codes can be returned: - GN0002 - IS0008 - IS0106 - TR0002 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0063 - IS0013 - IS0002 - IS0012 - TR0003 - TR0006 - TR0004 - TR0018 - TR0017 - TR0013 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
}

Allocate Transfer Assets

put

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"

Authorizations
Path parameters
transferIdanyRequired

The id that uniquely identifies the transfer on the ledger.

Example: TEST0000
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security where the remediation request was created

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
Responses
200
Successfully triggered transfer assets allocation.
application/json
400
The following error codes can be returned: - GN0002 - IS0008 - IS0106 - TR0002 - TR0022 - TR0023 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0063 - IS0013 - IS0002 - IS0012 - TR0003 - TR0006 - TR0004 - TR0017 - TR0013 - TR0015 - TR0016 - TR0014 - TR0019 - TR0036 - TR0020 - TR0037 - AS0030 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
      }
    ]
  }
}

Remove Transfer Correlation ID

put

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

Authorizations
Path parameters
transferIdanyRequired

The unique identifier of the transfer on the blockchain

Example: US9QIMAOAS1Q
Body
correlationIdstring · max: 100Required

Externally provided id that uniquely identifies an entity within an organization.

Example: 123245573717
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
Responses
200
Successfully removed (or, if the action is being broadcast, triggered the removal of) the correlation id from the transfer.
application/json
400
The following error codes can be returned: - GN0002 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0098 - IS0063 - TR0039 - TR0038 - TR0040 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
  }
}

Request Transfer Assets Remediation

put

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"

Authorizations
Path parameters
transferIdanyRequired

The id that uniquely identifies the transfer on the ledger.

Example: TEST0000
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security where the remediation request was created

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
rejectReasonall ofOptional

This property contains the reason for the rejection.

Example: {"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"}}
Responses
200
Successfully triggered the request for transfer assets remediation.
application/json
400
The following error codes can be returned: - GN0002 - IS0008 - IS0106 - TR0002 - TR0043 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0063 - IS0013 - IS0002 - IS0012 - TR0003 - TR0006 - TR0004 - TR0032 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
      }
    ]
  }
}

Complete Transfer

put

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

Authorizations
Path parameters
transferIdanyRequired

The id that uniquely identifies the transfer on the ledger.

Example: TEST0000
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security where the transfer request is being created

Example: {"securityId":"USS3JKS01I00","effectiveDate":"2024-09-12T00:00:00.000Z","signer":{"email":"[email protected]","name":"John Doe"}}
Responses
200
Successfully triggered the completion of the transfer
application/json
400
The following error codes can be returned: - GN0002 - IS0008 - IS0106 - TR0002 - TR0033 - TR0034 - TR0025 - TR0024 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0063 - IS0013 - IS0002 - IS0012 - TR0003 - TR0004 - TR0026 - TR0027 - TR0028 - AS0030 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
}

Add Transfer Correlation ID

put

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

Authorizations
Path parameters
transferIdanyRequired

The unique identifier of the transfer on the blockchain

Example: US9QIMAOAS1Q
Body
correlationIdstring · max: 100Required

Externally provided id that uniquely identifies an entity within an organization.

Example: 123245573717
broadcastToCounterpartybooleanOptional

This property defines if correlation information will be sent to all counterparties.

Default: falseExample: true
originstringOptional

The organization origin system that created this entity correlation id

Example: Backoffice-system-123
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
Responses
200
Successfully added (or, if the action is being broadcast, triggered the addition of) the correlation id to the transfer.
application/json
400
The following error codes can be returned: - GN0002 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - TR0012 - TR0038 - IS0063 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
  }
}

Get Transfer Details

get

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

Authorizations
Query parameters
pageSizenumberOptional

The number of rows being retrieved. Must be a positive integer.

offsetnumberOptional

The offset (i.e. row start index). Must be a positive integer (or 0).

transferStatusFilterstringOptional

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

Example: created,canceled
securityIdsFilterstringOptional

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.

Example: USCCWSF01I00,USCCWSF01I01
securityCorrelationIdsFilterstringOptional

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.

Example: 1234,5678,7890
transferIdsFilterstringOptional

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.

Example: USCCWSF01I00,USCCWSF01I01
transferCorrelationIdsFilterstringOptional

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.

Example: 1234,5678,7890
securityCorrelationOrgIdstring · max: 12Optional

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.

transferCorrelationOrgIdstring · max: 12Optional

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.

Responses
200
Successfully retrieved the Transfer details
application/json
400
The following error codes can be returned: - GN0002 - GN0004 - GN0005 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 Please refer to the error code dictionary for the details of each error code.
application/json
get
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"
    }
  }
]

Cancel Transfer

put

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

Authorizations
Path parameters
transferIdanyRequired

The id that uniquely identifies the transfer on the ledger.

Example: TEST0000
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security where the remediation request was created

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
rejectReasonall ofOptional

This property contains the reason for the rejection.

Example: {"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"}}
Responses
200
Successfully triggered the cancellation of the transfer
application/json
400
The following error codes can be returned: - GN0002 - IS0008 - IS0106 - TR0002 - TR0043 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0063 - IS0013 - IS0002 - IS0012 - TR0003 - TR0004 - AS0030 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
}

Get Transfer Correlation Ids History

get

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

Authorizations
Query parameters
pageSizenumberOptional

The number of rows being retrieved. Must be a positive integer.

offsetnumberOptional

The offset (i.e. row start index). Must be a positive integer (or 0).

blockNumbernumber · max: 2147483647Optional

The block number where the action was recorded on the ledger.

Example: 350
transactionIdstring · max: 500Optional

The transaction id where the action was recorded on the ledger.

Example: 456789OIJHGFCVGHJKLKJHGF67JHPattern: ^[a-zA-Z0-9-]*$
channelNamestring · max: 20Optional

The name of the channel where the action was recorded on the ledger.

Example: OG123Pattern: ^[a-zA-Z0-9-]*$
Responses
200
Successfully retrieved the Transfer Correlation Ids History entries
application/json
400
The following error codes can be returned: - GN0002 - GN0004 - GN0005 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 Please refer to the error code dictionary for the details of each error code.
application/json
get
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"
      }
    }
  }
]

Remediate Transfer

put

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"

Authorizations
Path parameters
transferIdanyRequired

The id that uniquely identifies the transfer on the ledger.

Example: TEST0000
Body
referenceDataall ofOptional

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

Example: {"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"}}}}
transactionDataall ofRequired

This property contains the transactional data information, i.e. transfer data to be remediated and which is the security of the transfer

Example: {"securityId":"USS3JKS01I00","amount":50000,"transferReason":"gift","sourceAccountData":{"orgId":"TEST1234","accountId":"TEST67891"},"signer":{"email":"[email protected]","name":"John Doe"}}
Responses
200
Successfully triggered the remediation of the transfer data.
application/json
400
The following error codes can be returned: - GN0002 - IS0008 - IS0106 - TR0002 - IV0008 - IV0020 - IV0009 - IV0021 - IV0022 - IV0017 - IV0016 - IV0023 - IV0036 - IV0037 - AC0017 - AC0049 - AC0031 - AC0032 - AC0033 - AC0034 - AC0035 - AC0026 - AC0023 - AC0050 - FL0002 - FL0003 - FL0019 - FL0004 - FL0005 - FL0017 - FL0020 - QU0001 - QU0002 - QU0003 - QU0004 - QU0005 - QU0006 - QU0007 - QU0008 - QU0009 - QU0010 - CI0001 - CI0002 - CI0003 - CI0004 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - IV0013 - AC0020 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 - OG0001 - IV0002 - AC0002 - FL0008 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0063 - IS0013 - IS0002 - IS0012 - TR0008 - TR0009 - TR0007 - TR0003 - TR0006 - TR0004 - TR0030 - TR0031 - IV0003 - AC0009 - AC0010 - AC0029 - FL0001 - FL0006 - FL0010 - FL0011 - FL0028 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
      }
    ]
  }
}

Remediate Transfer Assets

put

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"

Authorizations
Path parameters
transferIdanyRequired

The id that uniquely identifies the transfer on the ledger.

Example: TEST0000
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security where the remediation request was created

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
Responses
200
Successfully triggered transfer assets remediation.
application/json
400
The following error codes can be returned: - GN0002 - IS0008 - IS0106 - TR0002 - TR0022 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - TR0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0063 - IS0013 - IS0002 - IS0012 - TR0003 - TR0006 - TR0004 - TR0017 - TR0013 - TR0015 - TR0016 - TR0014 - TR0019 - TR0036 - TR0020 - TR0037 - TR0032 - AS0030 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
      }
    ]
  }
}

Get Transfer History

get

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

Authorizations
Query parameters
pageSizenumberOptional

The number of rows being retrieved. Must be a positive integer.

offsetnumberOptional

The offset (i.e. row start index). Must be a positive integer (or 0).

blockNumbernumber · max: 2147483647Optional

The block number where the action was recorded on the ledger.

Example: 350
transactionIdstring · max: 500Optional

The transaction id where the action was recorded on the ledger.

Example: 456789OIJHGFCVGHJKLKJHGF67JHPattern: ^[a-zA-Z0-9-]*$
channelNamestring · max: 20Optional

The name of the channel where the action was recorded on the ledger.

Example: OG123Pattern: ^[a-zA-Z0-9-]*$
transferIdsFilterstringOptional

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.

Example: USCCWSF01I00,USCCWSF01I01
transferCorrelationIdsFilterstringOptional

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.

Example: 1234,5678,7890
transferCorrelationOrgIdstring · max: 12Optional

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.

Responses
200
Successfully retrieved the Transfer history
application/json
400
The following error codes can be returned: - GN0002 - GN0004 - GN0005 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 Please refer to the error code dictionary for the details of each error code.
application/json
get
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"
    }
  }
]