Client & Account Onboarding
GS Advisor Solutions APIs enable Clients to digitally onboard new members and accounts onto the our custody using our Service Center APIs.
The Service Center APIs, allows advisors to integrate the onboarding workflow to setup new users and accounts, create bank links and money transfers, and transfer in assets from external accounts through a single API end point.
This feature allows advisors to manage various onboarding workflows as service tasks giving them the flexibility to ‘save and continue’ any task. Advisors can use the service tasks as a central place to gather information as they work through the onboarding process with their advisees.
This guide will take you through the creation of new members and brokerage accounts using our public facing APIs.
Step 1 - LoginID Availability
In order to create a new account, you must create a new member (or use an existing one). Before creating a new member, you must check to see if the login ID you would like to use for the new member is avaialble.
This API call returns a boolean, indicating if the login ID you specified in the URI is available.
Boolean | Description |
---|---|
True | The specified loginId is available for use. |
False | The specified loginid is currently in use and not available. |
GET /v1/utils/loginidavailable/santiago31745
returns:
HTTP/1.1 200 OK
Date: XXX
Content-Type: application/json
Content-Language: en
true
Step 2 - Create Member
A single member may own multiple accounts (e.g. individual, IRA, joint, custodial, etc.). Similarly, a member may be included on the accounts of another member, as is the case of a member being a joint owner on a joint account, or an authorized user permissioned onto another person's account.
Client Email Address
You must provide the member's email address.
- Email addresses created or provided by the advisory firm are not permitted. We cannot accept any client email address or phone number with the same domain name or phone number that is associated with your advisory firm, unless that account is owned by your firm.
- Upon member creation, GSAS generally sends an email to the new user with a special password token link to set their password for our client site. Introducing broker dealer firms that are using this API to support their own site with their own user authentication processes can instruct us to not send this email during the initial API setup configuration for the firm.
Client Profile Information
Please maintain a process to ensure that all client profile information, including but not limited to physical mailing address(es), email address, phone number(s), and other personal data, is accurate and up-to-date in GSAS systems, especially when changes are received by your firm.
- To make any changes to client profile information, please use the Update Member. Member information provided to us must match what is stored locally at your firm.
- We process customer validations for our Customer Identification Program (CIP) (e.g. Social Security Number (SSN) or Tax Identification Number (TIN), Know Your Customer (KYC), Anti-Money Laundering (AML), Office of Foreign Asset Control (OFAC), etc.) in real-time when we receive the Create a Member call. If a prospective member fails, this validation you will receive an error message.
To create a member, POST /v1/members
with this payload:
{
"loginId": "santiago31745",
"firstName": "Santiago",
"lastName": "Smith",
"dateOfBirth": "1994-01-01T00:00:00.000-05:00",
"email1": "client@foliofn.com",
"countryOfCitizenship1": "US",
"countryOfCitizenship2": "IN",
"primaryAddress": {
"line1": "7132 Luke Underpass",
"city": "Port Mollie",
"state": "MN",
"zipcode": "56038",
"country": "US"
},
"eveningTelephone": "17707731745",
"dayTelephone": "17707731745",
"employmentStatus": "FULL_TIME_EMPLOYED",
"finraAffiliated": true,
"finraCompany": "ABC",
"directorOrTenPercentShareholder": false,
"directorOrTenPercentShareholderCompany": null,
"accreditedInvestorNetWorth": true,
"accreditedInvestorAnnualIncome": true,
"previousPrivatePlacementExperience": false,
"previousExperienceSector": null,
"annualIncome": 6,
"netWorth": 7,
"liquidNetWorth": 7,
"tid": "636852824",
"citizenship": "C",
"residenceCountry": "US",
"politicallyExposed": "Y",
"expectedActivity": {
"chequeTransferPerMonth": 3,
"domesticWireTransferPerMonth": 4,
"internationalWireTransfersPerMonth": 0,
"productsToInvest": ["LOW_PRICE_SEC"]
},
"sourceOfWealth": {
"assets": [
{
"lineOfBusiness": "AEROSPACE",
"proceedsFromSaleOfBusiness": false,
"typeOfAsset": "BUSINESS"
}
],
"entrepreneurs": [
{
"lineOfBusiness": "AEROSPACE",
"nameOfCompany": "Ed Touch"
}
],
"personalInvestments": [
{
"lineOfBusiness": "CRYPTOCURRENCY",
"typeOfInvestment": "CRYPTOCURRENCIES_OR_INITIAL_COIN_OFFERINGS"
}
],
"employments": [
{
"annualIncome": 0,
"employerCountry": "US",
"employerName": "Goldman Sachs",
"lineOfBusiness": "FINANCE"
}
],
"additionalSources": ["PARENTAL_SUPPORT"]
}
}
Note
Customer Identification Program (CIP) collection:
- Required items (source of wealth, expected activity, etc.) must be provided in the initial call.
- Optional items (number of dependents, marital status, tax bracket, etc.) can be included or set/updated later in the Update a Member API.
For Entity Accounts
For entity accounts, the member will serve as the Firm rep / Authorized Representative who will have access to the account. There can be only one Firm Rep / Authorized Representative for each entity account. This member can only be used for this purpose and only once for a single entity account. If the same person also has natural person accounts, or is the Firm Rep / Authorized Representative for other entity accounts, then that person will have more than one membership on the system with separate login credentials for each.
Step 3 - Create Corporate Firm
Note
This step is only required for entity accounts. Please skip to Step 4 for non-entity accounts.
This request creates a corporate firm, to which you will associate a new member as the firm rep, and then associate one of the available corporate/entity account types.
Unlike Folio corporate/entity firms noted above, Folio Institutional firms (those setup for RIA or introducing broker-dealer firms) cannot be created using the API, only by Folio Institutional staff.
You must provide the corporate entity's actual email address. Email addresses created or provided by the Folio Institutional firm are not permitted. We cannot accept any client email address or phone number with the same domain name or phone number that is associated with your Folio Institutional Firm, unless that account is owned by your Firm.
You must establish processes to ensure that all client profile information, including but not limited to physical mailing address(es), email address, phone number(s), and other personal data, is accurate and complete, and that you update the our system with all client profile changes when they are received by your Firm. |
To create a corporate firm, POST /v1/firms
with this payload:
{
"firmTaxId": "587325682",
"firmTaxIdType": "TIN",
"firmSubType": "F",
"firmName": "Dare Firm",
"firmTelephone1": "2084751949",
"firmEmail1": "btrst3@email.com",
"finraAffiliated": false,
"directorOrTenPercentShareholder": false,
"primaryAddress": {
"line1": "7046 Heaney Port",
"city": "South Roy",
"state": "AR",
"zipcode": "01828",
"country": "US"
},
"firmRep": "edward3674"
}
The URL returned in the HTTP response will contain the Firm ID (v1/firms/<THISISFIRMID>
), which you will need to create the entity account.
HTTP/1.1 201 Created
Location: https://api.uat.foliofn.com/restapi/v1/firms/HEANEYIGKZDYLMWO
Link: <https://api.uat.foliofn.com/restapi/v1/firms/DAREYIFGKZDYLMWO>; rel="GET"; type="application/json"; title="getFirm", <https://api.uat.foliofn.com/restapi/v1/firms/HEANEYIGKZDYLMWO>; rel="PUT"; type="application/json"; title="updateFirm"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0
Date: Wed, 3 Aug 2022 19:18:58 GMT
Step 4 - Create Account(s)
An account is a brokerage account that natural persons and corporate legal entities use for investing.
Note
-
New accounts are automatically restricted upon creation, pending the user signing the brokerage customer agreement, as well as potentially other reasons, such as CIP failure, trust account evidence of existence, entity account questionnaire, etc.
-
Accounts so restricted cannot take most actions.
-
See the Get a Restriction endpoint for more information on restriction details and how to lift these restrictions in the test and production environments.
Natural Person Accounts
Natural persons accounts are accounts opened for a specific human being, as opposed to entity accounts.
More than one natural person accounts can be set up simultaneously under a single member without resending any of the member information.
All joint account members must be created prior to creating the joint account.
Members are able to have multiple accounts, except those assigned as the firm rep on a corporate account.
Alert
For billing purposes, in the case of joint accounts, the primaryAccountOwner will be the member that owns the account for billing purposes. In the event that there is an asset-based fee for each member, based upon aggregate assets of a membership, the joint account assets will be included in the primaryAccountOwner's assets under management calculation.
Entity Accounts
Entity accounts are accounts opened for a specific entity that is not a human being, as opposed to natural person accounts.
Only a member associated with no accounts and no firms can be designated as the authorized rep for a corporate account, and a firm can have only one authorized rep. Further, a firm can only have one corporate account under it.
There are additional fields for a corporate account that are not required for natural person accounts, such as accountRegistrationInfo.
To create a Natural Person (revocable trust account shown below), POST /v1/accounts
with the payload below.
The primaryAccountOwner
for a natural persons account is set to the loginId
associated with the member who owns the account.
{
"accountName": "Weimann Trust",
"accountType": "X",
"billingPlanOid": 8718968878599893000,
"primaryAccountOwner": "santiago31745",
"accountRegistrationInfo": "registration",
"statutoryTrust": false,
"trustIndividuals": true,
"dateOfFormation": "1988-12-05T00:00:00.000-05:00",
"countryOfOrganization": "US",
"stateOfOrganization": "TX",
"placeOfBusiness": {
"line1": "457 Ratke Isle",
"city": "South Luigi",
"state": "AK",
"zipcode": "86813",
"country": "US"
},
"relatedEntities": {
"grantors": [
{
"ssn": "759416477",
"dateOfBirth": "1988-12-05T00:00:00.000-05:00",
"firstName": "Trust Grantor",
"relationship": "O",
"residenceCountry": "US",
"citizenship": "C",
"deceased": false,
"expectedActivity": {
"chequeTransferPerMonth": 3,
"domesticWireTransferPerMonth": 4,
"internationalWireTransfersPerMonth": 0,
"productsToInvest": ["LOW_PRICE_SEC"]
},
"sourceOfWealth": {
"assets": [
{
"lineOfBusiness": "AEROSPACE",
"proceedsFromSaleOfBusiness": false,
"typeOfAsset": "BUSINESS"
}
],
"entrepreneurs": [
{
"lineOfBusiness": "AEROSPACE",
"nameOfCompany": "Ed Touch"
}
],
"personalInvestments": [
{
"lineOfBusiness": "CRYPTOCURRENCY",
"typeOfInvestment": "CRYPTOCURRENCIES_OR_INITIAL_COIN_OFFERINGS"
}
],
"employments": [
{
"annualIncome": 0,
"employerCountry": "US",
"employerName": "Goldman Sachs",
"lineOfBusiness": "FINANCE"
}
],
"additionalSources": ["PARENTAL_SUPPORT"]
}
}
]
}
}
To create an Entity Account (Entity Inherited roth IRA account shown below), POST /v1/accounts
with this payload:
The primaryAccountOwner
for an entity account is the firmId
associated with the corporate entity on the account
{
"accountName": "Dare Trust Account",
"accountType": "3",
"billingPlanOid": "8718968878599893274",
"primaryAccountOwner": "DAREYIFGKZDYLMWO",
"accountRegistrationInfo": "Dare Trust",
"inheritedAcctDetail": {
"inheritanceType": "T",
"payoutElection": "L",
"transferAccount": false
},
"relatedEntities": {
"decedents": [
{
"ssn": "751113509",
"relationship": "O",
"dateOfBirth": "1988-12-05T00:00:00.000-05:00",
"dateOfDeath": "1999-12-05T00:00:00.000-05:00",
"firstName": "Inherited",
"lastName": " Decedent",
"residenceCountry": "US",
"citizenship": "C",
"expectedActivity": {
"chequeTransferPerMonth": 3,
"productToInvest": ["LOW_PRICE_SEC"]
},
"sourceOfWealth": {
"assets": [
{
"lineOfBusiness": "AEROSPACE",
"proceedsFromSaleOfBusiness": false,
"typeOfAsset": "BUSINESS"
}
],
"entrepreneurs": [
{
"lineOfBusiness": "AEROSPACE",
"nameOfCompany": "Ed Touch"
}
],
"personalInvestments": [
{
"lineOfBusiness": "CRYPTOCURRENCY",
"typeOfInvestment": "CRYPTOCURRENCIES_OR_INITIAL_COIN_OFFERINGS"
}
],
"employments": [
{
"annualIncome": 0,
"employerCountry": "US",
"employerName": "Goldman Sachs",
"lineOfBusiness": "FINANCE"
}
],
"additionalSources": ["PARENTAL_SUPPORT"]
}
}
]
}
}
Step 5 - Submit Signature
Use this request to complete the signing of the Customer Agreement. A restriction will be placed on the newly created account until a signature is received.
The Customer Agreement is linked to the member / account Item For Attention (IFA):
- If a Customer Agreement's IFA exist, this call resolves it as agreed once the signature / document is uploaded,
- If no IFA exist, the signature / document is still uploaded.
- This call, when successful, also lifts the restriction on the account for missing Customer Agreement signature.
When signatureMethod = "SIGNATURE_IMAGE"
POST /V1/accounts/{accountnumber}/customeragreement
{
"loginId": "testuser01",
"signatureImageEncoding": "SVG",
"signatureData": "...image content encoded in Base64...",
"signatureMethod": "SIGNATURE_IMAGE",
"w9Withhold": "false"
}
When signatureMethod = "SIGNED_PDF"
POST /V1/accounts/{accountnumber}/customeragreement
{
"loginId": "testuser01",
"signatureData": "...pdf content encoded in Base64...",
"signatureMethod": "SIGNED_PDF",
"w9Withhold": "true"
}
Step 6 - Check Account Restrictions
Account restrictions can result from the account opening process, such as CIP Failure.
Restrictions would prevent further actions like initiating deposits and trading from taking place on an account.
GET v1/accounts/{accountnumber}/restrictions
will return any restrictions currently on the account.
{
"accountNumber": "123123123123123",
"accountRestrictionId": "77777777777777777",
"creationTs": "2014-07-05T09:14:55.790-04:00",
"inceptionInfo": " ",
"reason": {
"code": "021",
"comments": "Externally Set Restriction used through the API",
"name": "External"
},
"type": {
"code": "CR",
"description": "Account is completely restricted",
"title": "Complete Restriction"
}
}
Supported Account Types
An account is a brokerage account that natural persons and corporate legal entities use for investing. Goldman Sachs Advisor Solutions supports the following account types:
Natural Person Accounts
The following natural person account types are supported.
Code | Description |
---|---|
I | Individual |
J | Joint – Rights of Survivorship |
K | Joint – Tenants in Common |
L | Joint – Community Property |
M | Joint – Tenants by Entirety |
P | SEP IRA |
Q | IRA Rollover |
R | Traditional IRA |
S | Roth IRA |
1 | Inherited Roth IRA |
2 | Inherited Traditional IRA |
9 | Simple IRA |
6 | Estate |
T | Custodial (UTMA) |
X | Revocable Trust |
Entity Accounts
The following entity account types are supported.
Code | Description |
---|---|
A | Corporation |
B | General Partnership |
D | Business/Irrevocable Trust |
E | Limited Partnership |
F | Limited Liability Corporation |
V | Unincorporated Organization |
3 | Entity Owned Inherited Roth IRA |
4 | Entity Owned Inherited Traditional IRA |
Note
-
There are additional account types which are supported on our advisor site UI that are not yet supported by API, such as qualified retirements plans.
-
All other values will be rejected with status 400 and code "invalid choice."
-
Inherited Traditional IRA (RI), Inherited IRA Rollover (QI), and Inherited Roth IRA (SI) are no longer supported and will be replaced by the new inherited IRA account types (1, 2, 3 and 4 from the table above).
-
Some existing accounts may still display deprecated account types.
-
Entity accounts require additional documentation to be completed. Link to form is copied below.
Important Forms
Customer Agreement
launchThis Agreement sets forth the basic relationship between us and each client.
Account Certification Form
launchUse this form after a new account has been opened where your client will be electronically signing our account opening documents via a 3rd party e-signature provider (i.e. Docusign, Alphatrust, etc).
Entity Client Onboarding Supplemental Questionnaire
launchUse this form to provide additional required information when opening a new legal entity brokerage account.
Please see our Forms Page to see additional forms that might be needed depending on your use case.
Was this page useful?
Give feedback to help us improve developer.gs.com and serve you better.