Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Rev. 3 Jul 2025
We offer two methods of integration with our platform:
file-based integration via middleware
direct API integration
Many firms currently use file-based data exchange to track alternative investment transactions. Our file-based integration approach enables firms to leverage the files and processes already in place to initiate integration with our platform.
This approach uses customized integration middleware to transform data transmitted between your back-office applications and our integration API.
Features include:
Support for various connectivity types and data formats, including File/SFTP and REST API calls.
Additional connectors can be developed (e.g., SOAP or MQ).
Integration middleware can handle data transmissions initiated by back-office systems and incoming transactions from counterparties. Integration middleware module is deployed on the same dedicated AWS account with the Corastone node/API.
Single workflow combines direct API calls, file-based integrations, and actions performed in the UI.
Middleware components include:
a parsing engine for reading and extracting data
a mapping engine for translating data from one data model to another
data format configs, for defining how mappings align
The parsing engine:
retrieves files to be processed from Inbound folder on sftp site
extracts the data and provides it to the mapping engine
places processed files in Done folder on sftp site
Note: Outputs are placed in the Artifacts folder on sftp site
The mapping engine:
aligns external data with Corastone data based on definitions in the data format configs
produces input and output files for data transfer
The file exchange process is SFTP based, with SFTP sites that can be hosted by either party. The middleware processes each file upon delivery.
Direct API integration eliminates the file transfer and parsing process to align back-office data and processes with our integration API.
Our platform is designed to orchestrate private investment transactions, not just track them. Your preferred approach depends on your needs and your ability to provide information on the data and formats to be exchanged. You can also consider an initial file-based integration as a first step towards migrating to our solution.
align current processes via data exchange
enhance current processes with direct platform integration
provide process documentation, file documentation, and sample files so our team can configure the middleware
simplify and automate processes across organizations
few to no process changes
The with the Corastone platform consists of discovery and implementation phases. Discovery involves exchange of information to establish the requirements for the implementation. The implementation phase is necessarily very specific to each client's needs.
The discovery phase has the following steps:
Scoping
Current state assessment
Gap analysis
Implementation planning
The following error dictionaries are associated with file-based integrations:
FI - File Integration
FP - File Processing
DM - Data Mapping
DV - Data Validation
FIFP0002
Received an unexpected file '${data.fileName}:${data.fileVersion}'. Cannot parse it.
FIDV0003
'${data.columnName}' value is not provided for the asset '${data.assetCorrelationId}' in the file '${DataValidationErrorsDictionary.fileReference(data)}'. This is required value.
FIDV0004
Security not found by given id '${data.securityId}'. Provided id might be invalid.
FIDV0005
'${data.columnName}' value is not provided for the asset in the file '${DataValidationErrorsDictionary.fileReference(data)}'. This is required value.
FIDV0006
'${data.columnName}' value is not provided for the asset '${data.assetCorrelationId}' in the file '${DataValidationErrorsDictionary.fileReference(data)}'. This is required value.
FIDV0007
Signer is not provided for the asset '${data.assetCorrelationId}' in the file '${DataValidationErrorsDictionary.fileReference(data)}'. This is required value.
FIDV0008
'${data.columnName}' value is not provided for the asset '${data.assetCorrelationId}' in the file '${DataValidationErrorsDictionary.fileReference(data)}'. This is required value. At least one investor must be provided.
FIDV0009
'${data.columnName}' value is not provided for the asset '${data.assetCorrelationId}' in the file '${DataValidationErrorsDictionary.fileReference(data)}'. This is required value. At least one investor must be provided.
FIDV0010
'${data.columnName}' value is not provided for the asset '${data.assetCorrelationId}' in the file '${DataValidationErrorsDictionary.fileReference(data)}'. This is required value. Cannot generate unique asset identifier without it.
FIDV0011
'${data.columnName}' value is not provided for the asset '${data.assetCorrelationId}' in the file '${DataValidationErrorsDictionary.fileReference(data)}'. This is required value.
FIDV0012
Unknown error during processing file '${DataValidationErrorsDictionary.fileReference(data)}' data.
FIFP0001
Received an invalid file config.
FIFP0003
Cannot download file '${data.fileName}:${data.fileVersion}' from S3.
FIFP0004
Cannot upload file '${data.fileName}:${data.fileVersion}' to S3.
FIFP0005
Cannot unzip file '${data.fileName}:${data.fileVersion}'.
FIFP0006
Cannot parse file '${data.fileName}:${data.fileVersion}'.
FIFP0007
File content is invalid.
FIFP0008
Unknown error during processing file '${data.fileName}:${data.fileVersion}'.
FIDM0001
Unknown error during mapping asset '${data.assetCorrelationId}' from file '${data.fileName}:${data.fileVersion}'.
FIDM0001
Unknown error during mapping correlation '${data.correlationId}${data.correlationType}${data.ledgerId}' from file '${data.fileName}:${data.fileVersion}'.
FIDV0001
'${data.columnName}' does not exist in the file '${DataValidationErrorsDictionary.fileReference(data)}'.
FIDV0002
Cannot transform column '${data.columnName}' data into required type format for the asset '${data.assetCorrelationId}' in the file '${DataValidationErrorsDictionary.fileReference(data)}'.
Using Corastone APIs to integrate wealth manager backoffice systems with the Corastone platform requires:
authorizing access for the applications that will interact with the Corastone API
implementing endpoints
handling errors for those endpoints
This section describes the basic integration tasks required for the primary sales workflow:
Authorize Access
Establish Connectivity
Onboard a Fund
Make Initial Investments
Remediate Investment
Retrieve All Assets
Use this section as a companion to the Integration API Guide.
Corastone provides a Postman collection to help you get up to speed with using the Corastone APIs. Contact your Corastone support representative to obtain this collection and supporting instructions.
Overall, the effort for the primary sales flow involves:
14 calls
~62 responses
up to ~127 error codes shared across responses
Before you can conduct transactions with an organization on the platform, you need to whitelist that organization, and that organization needs to whitelist yours.
Enterprise Organization Update Whitelist
AU0001 AU0002 AU0003 GN0002 OG0002 OG0013
None
During initial onboarding for the Integration API, Corastone creates your OAuth client for your primary integration with the Corastone platform. If you have multiple back-office apps that need to integrate with the platform, you will need to create secondary OAuth clients. These clients are linked to the same organization and are managed by the primary OAuth client. Secondary clients usually perform a subset of tasks and, therefore, require a smaller access scope.
None
Create OAuth Client
AU0001 AU0002 AU0008 AU0009 GN0002
Update OAuth Client
AU0001 AU0002 AU0005 AU0006 AU0008 GN0002
Reset OAuth Client Password
AU0001 AU0002 AU0005 AU0006 AU0007 AU0008 GN0002
Auth (OAuth)
AU0001
The access token is invalid or missing. Please provide a valid access token issued by the OAuth server using the client credentials grant (default location is on the authorization header).
AU0002
You do not have access to this scope: {scope}
AU0005
OAuth client with id '{clientId}' was not found
AU0006
OAuth client with id '{clientId}' was not found on the OAuth server. This means that the client was directly deleted from the OAuth server but a reference to it still exists on this API.
AU0007
This action is reserved for the primary client
AU0008
The OAuth client belongs to a different organization
AU0009
The maximum number of OAuth clients for the current organization has been reached
Generic
GN0002
The payload you have supplied is invalid.
If the materials submitted to the asset manager are not in good order, the asset manager may submit a request for remediation, including:
standard remediation reasons
name of document with the issue
document page number
free text for ad-hoc messages
The following table outlines the standard remediation reasons.
EC001
tax document deficiencies
EC002
investor information and AML KYC issues
EC003
sub doc issues
EC004
account issues
EC005
transaction data issues
EC006
other issues
The remediation flow requires:
Receive and parse notification with remediation reasons.
Update internal systems.
Update the subscription record.
Remediate Digital Asset (Lot)
AC0002 AC0006 AC0007 AC0009 AC0018 AC0019 AC0029 AC0050 AS0001 AS0002 AS0003 AS0004 AS0005 AS0017 AS0023 AU0001 AU0002 AU0003 CI0001 CI0002 CI0003 CT0019 CT0020 FL0001 FL0002 FL0003 FL0004 FL0005 FL0006 FL0010 FL0011 FL0017 FL0019 FL0020 FL0028 GN0002 IS0008 IS0009 IS0012 IS0013 IS0016 IS0099 IS0106 IV0002 IV0003 IV0009 IV0016 IV0017 IV0023 IV0036 IV0037 QU0001 QU0002 QU0003 QU0004 QU0005 QU0006 QU0007 QU0008 QU0009 QU0010
Account
AC0006
Please provide ABA or SWIFT
Asset
AS0005
Asset '{assetId}' is in invalid state for the current action. Current status: '{currentState}'. Required status: '{allowedStates}'
Files
FL0010
Documents cannot be reused both as investor documents and transaction data documents
Issuance (Security)
IS0012
Security '{securityId}' is in invalid state for the current action. Current status: '{currentState}'. Required status: '{allowedStates}'
Investor
IV0023
Accreditation Other is not available for US investor
If the investor needs to stop participating in the offering, they can recall the investment while the offering is still active. Recalling requires the following flow:
Submit request to recall the investment.
Receive acceptance/rejection of that request.
Update internal systems.
Recall Asset
AC0001 AC0006 AC0007 AC0009 AC0013 AC0014 AC0016 AC0017 AC0024 AC0029 AC0049 AD0022 AD0023 AS0001 AS0002 AS0003 AS0004 AS0005 AU0001 AU0002 AU0003 CI0001 CI0002 CI0003 CT0017 FL0001 FL0002 FL0003 FL0004 FL0005 FL0006 FL0008 FL0010 FL0011 FL0017 FL0019 FL0020 GN0002 IS0008 IS0009 IS0012 IS0013 IS0016 IS0035 IS0099 IS0106 IV0001 IV0003 IV0006 IV0007 IV0009 IV0013 IV0016 IV0017 IV0018 IV0023 IV0036 QU0001 QU0002 QU0003 QU0004 QU0005 QU0006 QU0007 QU0008 QU0009 QU0010
Get Asset Details
AU0001 AU0002 GN0002 GN0004 GN0005
Asset
AS0005
Asset '{assetId}' is in invalid state for the current action. Current status: '{currentState}'. Required status: '{allowedStates}'
Issuance (Security)
IS0012
Security '{securityId}' is in invalid state for the current action. Current status: '{currentState}'. Required status: '{allowedStates}'
The initial investment flow depends on the type of fund. Some funds require settlement before close. Some funds (drawdown funds) do not. To make an initial investment, your org needs to:
(Optional) Request asset creation dry run to validate subscription data.
With subscription validated, request subscription (create asset).
Receive and parse accept/reject notification.
Update internal systems to reflect the status of the request.
If settlement is required:
a. Wire payment separately and mark as wired. b. Receive and parse "securities issued" notification. c. Update asset information for internal systems.
Create Asset (Lot) - Dry Run
AC0002 AC0006 AC0007 AC0009 AC0010 AC0013 AC0014 AC0016 AC0017 AC0020 AC0028 AC0029 AC0044 AC0048 AC0049 AC0050 AD0015 AD0016 AD0017 AD0018 AD0022 AD0023 AS0009 AS0015 AS0016 AS0017 AS0026 AS0029 AU0001 AU0002 AU0003 CT0015 CT0017 CT0019 CT0020 EX0006 FL0001 FL0002 FL0003 FL0004 FL0005 FL0006 FL0008 FL0010 FL0011 FL0017 FL0019 FL0020 FL00028 GN0002 GN0003 GN0008 IS0001 IS0008 IS0009 IS0012 IS0013 IS0026 IS0027 IS0028 IS0029 IS0030 IS0034 IS0099 IS0106 IV0002 IV0003 IV0004 IV0005 IV0006 IV0007 IV0008 IV0009 IV0010 IV0013 IV0016 IV0017 IV0020 IV0021 IV0022 IV0023 IV0032 IV0035 IV0036 IV0037
Create Asset (Lot)
AC0002 AC0006 AC0007 AC0009 AC0010 AC0013 AC0014 AC0016 AC0017 AC0020 AC0028 AC0029 AC0044 AC0048 AC0049 AC0050
AD0012 AD0015 AD0016 AD0017 AD0018 AD0022 AD0023 AS0009 AS0015 AS0016 AS0017 AS0026 AS0029 AU0001 AU0002 AU0003 CI0001 CI0002 CI0003 CT0011 CT0015 CT0017 CT0019 CT0020 EX0006 FL0001 FL0002 FL0003 FL0004 FL0005 FL0006 FL0008 FL0010 FL0011 FL0017 FL0019 FL0020 FL0028 GN0002 GN0003 GN0008 IS0001 IS0008 IS0009 IS0012 IS0013 IS0026 IS0027 IS0028 IS0029 IS0030 IS0034 IS0099 IS0106 IV0002 IV0003 IV0004 IV0005 IV0006 IV0007 IV0008 IV0009 IV0010 IV0013 IV0016 IV0017 IV0020 IV0021 IV0022 IV0023 IV0032 IV0035 IV0036 IV0037 QU0001 QU0002 QU0003 QU0004 QU0005 QU0006 QU0007 QU0008 QU0009 QU0010
Mark Asset Batch as Wired
AS0004 AS0013 AS0018 AS0023 AS0024 AU0001 AU0002 AU0003 GN0002 IS0008 IS0009 IS0012 IS0013 IS0099 IS0106
Account
AC0006
Please provide ABA or SWIFT
AC0010
The account relationship type '{provided}' is not compatible with share class required type '{required}'
AC0013
Account name is mandatory for new accounts
AC0014
Account type is mandatory for new accounts
AC0016
Account relationshipType is mandatory for new accounts
Asset
AS0015
Can't create transaction on security '{securityId}' before its start date: '{startDate}'
AS0016
Can't create transaction on security '{securityId}' after the current date
Issuance (Security)
IS0012
Security '{securityId}' is in invalid state for the current action. Current status: '{currentState}'. Required status: '{allowedStates}'
IS0028
The minimum investment amount is '{minInvestment}'
IS0029
The offering's '{issuanceId}' maximum amount '{maxAmount}' has been reached
IS0030
This investment exceeds the amount available on this offering
IS0034
The provided front end fee ({providedFee}) exceeds the maximum defined for this security ({maxFee})
Investor
IV0004
The accreditation level '{accreditationLevel}' of investor '{investorId}' is not compatible with security's regulation '{issuanceRegulation}'
IV0005
Regulation RegS is not available for US investor '{investorId}'
IV0006
Investor type is mandatory for new accounts
IV0007
Investor name is mandatory for new accounts
IV0008
Investor individual info is mandatory for new accounts
IV0009
Investor type cannot be updated for existing accounts
IV0010
The accreditation level '{investorAccreditationLevel}' of the investor '{investorId}' is not compatible with the security's exemption '{issuanceExemption}'. Compatible accreditation levels: '{compatibleAccreditationLevels}'
IV0020
Investor legal entity info is mandatory for new accounts
IV0021
Trust information is mandatory for legal entities of type Trust
IV0022
Trust information can only be provided for legal entities of type Trust
IV0023
Accreditation Other is not available for US investor
Integrators may want to extract data from the Corastone platform to synchronize with their back-office systems or to generate reports. Corastone records all events that occur on a node with our event sequencer engine. Each event is timestamped and categorized as one of the following types:
transaction: event that causes a change to data and can trigger background jobs
error: event generated when an action fails
job: event that performs a task
orchestration: event that coordinates transaction execution
Use Corastone API endpoints to access this event log. The Sequencer API provides filters that enable you to specify criteria for fetching these events. You can then use the corresponding getters to extract the event details.
To synchronize your back-office systems to reflect changes made today, you could use the Sequencer API to return all events meeting the following criteria:
fromDate = <start date>
toDate = <end date>
transactionStatusFilter = success
The sequence of entries returned would include the IDs for all affected entities.
To extract the changed data, you would use:
Get <Entity> Details to retrieve the current snapshot of entity data
Get <Entity> History to retrieve the series of changes that led to the current state
This document provides important information about preparing to use the Corastone Integration API. It has the following sections:
Whitelisting Requirements
Client-Specific Connection Information
API Clients
Supporting Documents
To enable Corastone access, the following actions must occur as described below:
Client networking team must whitelist Corastone API URL.
Client networking team must whitelist Corastone IP addresses.
Client must provide IP address ranges to Corastone for systems and developer access.
The following table outlines the whitelisting tasks required for API use.
Client -> Corastone
Client Firewall Team
Corastone -> Client (REST)
Client Firewall Team
Corastone -> Client
Corastone
Client <-> Corastone
Client
The following sections detail each task.
You must allow outbound traffic by whitelisting one of the following:
OR
To receive Corastone push REST notifications, you must:
To enable us to accept API requests from the Client, you must:
Corastone will whitelist them internally and allow the connections.
When all whitelisting tasks have been performed, test access to the Corastone APIs:
https://integration-api.<org_id>.cdev.idevit.us/oauth2/token
where <org_id> is the org id listed in Client-Specific Connection Information.
See Client Specific Connection Information for values needed when executing this endpoint.
403 Forbidden
Make sure the User-Agent header is set.
Work with your firewall team to determine if their configuration is compatible with the baseline AWS rules: Baseline Rule Groups for AWS.
Error: getaddrinfo ENOTFOUND integration-api.<org_id>.cdev.idevit.us
Make sure org_id is correct.
If this test is unsuccessful, please contact the Corastone Onboarding team for assistance.
You will need the following information from the Corastone Onboarding Team:
Integration API URL:
Org ID:
Client ID:
Client Secret:
Org Static IP 1:
Org Static IP 2:
The Corastone APIs work with several API clients such as Insomnia and Postman. Corastone may be able to provide API collections for API clients upon request.
This guide fully describes the use of the Corastone APIs and includes links to more technical information in Swagger.
When the Asset Manager adds your organization to the exclusivity list for a fund, a notification is produced to signal that the assignment has been made. Your org needs to:
Receive and parse the notification.
Update internal systems to reflect the assignment.
Accept (or reject) the assignment.
Add security correlation ID (optional).
Retrieve the fund details for use in internal systems.
Accept Fund Assignment
AC0013 AU0001 AU0002 AU0003 EX0001 GN0002 IS0003 IS0004 IS0009 IS0010 IS0013 IS0019 IS0102 IS0103 OG0028
Reject Fund Assignment
AU0001 AU0002 AU0003 EX0001 GN0002 IS0003 IS0004 IS0009 IS0010 IS0013 IS0019 IS0102 IS0103
Add Security Correlation ID (optional)
.
AU0001 AU0002 GN0002 IS0009 IS0074
Get Security Details
AU0001 AU0002 GN0002 GN0004 GN0005
Exclusivity
EX0001
You neither have a pending exclusive assignment request nor accepted/rejected an exclusive assignment for security '{securityId}'